Autenticación remota
Registra y vcpkg_from_git()
usa directamente las herramientas de línea de comandos de Git para capturar recursos remotos. Algunos de estos recursos pueden protegerse del acceso anónimo y necesitan autenticación o credenciales.
Las estrategias siguientes buscan lograr el mismo objetivo fundamental: git clone https://....
debe tener éxito sin interacción. Esto permite separar vcpkg de los detalles del esquema de autenticación, lo que garantiza la compatibilidad directa con las mejoras de seguridad adicionales en el futuro.
Credenciales de Git de inicialización previa
Puede inicializar previamente las credenciales de Git a través de git credential approve
:
Powershell:
"url=https://github.com`npath=Microsoft/vcpkg`nusername=unused`npassword=$MY_PAT`n" | git credential approve
Bash:
echo "url=https://github.com"$'\n'"path=Microsoft/vcpkg"$'\n'"username=unused"$'\n'"password=$MY_PAT"$'\n' | git credential approve
Autenticación de portador
Para los sistemas que necesitan autenticación de portador, puede usar git config
:
Nota:
Debe realizar estos cambios de configuración con --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
<uri>
se puede rellenar con una variedad de opciones, por ejemplohttps://dev.azure.com/MYORG/
. Para obtener más información, consulte la git config
documentación.
(Origen original en: Mejor manera de autenticarse en un repositorio git en un proceso de compilación).
Usuarios de Azure DevOps: es posible que tenga que habilitar el acceso a través del ámbito de autorización del trabajo y hacer referencia al repositorio en la canalización de yaml:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Pasar credenciales en una variable de entorno (no recomendada)
Con VCPKG_KEEP_ENV_VARS
o VCPKG_ENV_PASSTHROUGH_UNTRACKED
, puede pasar las credenciales en a través del entorno.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Después, se puede usar en los puertos privados con losvcpkg_from_git()
asistentes p o vcpkg_from_github()
.
# vcpkg-from-git-example/portfile.cmake
set(MY_TOKEN_VAR "")
if(DEFINED ENV{MY_TOKEN_VAR})
set(MY_TOKEN_VAR "$ENV{MY_TOKEN_VAR}@")
endif()
vcpkg_from_git(
URLS "https://${MY_TOKEN_VAR}host.com/normal/url/path"
...
)
# vcpkg-from-github-example/portfile.cmake
vcpkg_from_github(
AUTHORIZATION_TOKEN "$ENV{MY_TOKEN_VAR}"
)
En el caso de los puertos privados, se recomienda usar vcpkg_from_git()
en lugar de vcpkg_from_github()
y el método de propagación anterior.
Pasar las credenciales gitUsernamePassword de Jenkins
La opción más sencilla y segura para la autenticación de Git en GitHub desde Jenkins es usar la aplicación de GitHub y lo siguiente:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Esto establece con GIT_ASKPASS
una ruta de acceso al script auxiliar que responde con la consulta de credenciales de Git e indica vcpkg
que mantenga esta variable de entorno. La contraseña es un token de aplicación de GitHub con una duración de 1 hora.