Autenticazione remota
I registri e vcpkg_from_git()
usano direttamente gli strumenti da riga di comando Git per recuperare le risorse remote. Alcune di queste risorse possono essere protette dall'accesso anonimo e richiedono l'autenticazione o le credenziali.
Le strategie seguenti cercano di raggiungere lo stesso obiettivo fondamentale: git clone https://....
dovrebbe avere successo senza interazione. Ciò consente di separare vcpkg dalle specifiche dello schema di autenticazione, garantendo la compatibilità con eventuali miglioramenti di sicurezza aggiuntivi in futuro.
È possibile pre-inizializzare le credenziali Git tramite 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
Per i sistemi che richiedono l'autenticazione bearer, è possibile usare git config
:
Nota
È necessario apportare queste modifiche di configurazione con --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
Può <uri>
essere compilato con un'ampia gamma di opzioni, ad esempio https://dev.azure.com/MYORG/
. Per altri dettagli, vedere la git config
documentazione.
(Origine originale in: Modo migliore per eseguire l'autenticazione in un repository Git in un processo di compilazione).
Utenti di Azure DevOps: potrebbe essere necessario abilitare l'accesso tramite ambito di autorizzazione processo e fare riferimento al repository nella pipeline yaml:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Usando VCPKG_KEEP_ENV_VARS
o VCPKG_ENV_PASSTHROUGH_UNTRACKED
, è possibile passare le credenziali tramite l'ambiente .
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Questa operazione può quindi essere usata nelle porte private con gli helper pvcpkg_from_git()
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}"
)
Per le porte private, è consigliabile usare vcpkg_from_git()
anziché vcpkg_from_github()
e il metodo di pre-seeding precedente.
L'opzione più semplice e sicura per l'autenticazione Git in GitHub da Jenkins usa l'app GitHub e gli elementi seguenti:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Viene impostato GIT_ASKPASS
con un percorso per lo script helper che risponde con la query delle credenziali Git e indica vcpkg
di mantenere questa variabile di ambiente. La password è un token dell'app GitHub con durata di 1 ora.
Feedback su vcpkg
vcpkg è un progetto di open source. Selezionare un collegamento per fornire feedback: