Externe verificatie
registers en vcpkg_from_git()
gebruiken rechtstreeks de Git-opdrachtregelprogramma's om externe resources op te halen. Sommige van deze resources zijn mogelijk beveiligd tegen anonieme toegang en hebben verificatie of referenties nodig.
De onderstaande strategieën streven allemaal naar hetzelfde fundamentele doel: git clone https://....
moet slagen zonder interactie. Hierdoor kan vcpkg worden gescheiden van de specifieke kenmerken van uw verificatieschema, waardoor compatibiliteit met eventuele aanvullende beveiligingsverbeteringen in de toekomst mogelijk is.
Git-referenties vooraf seeden
U kunt git-referenties vooraf seeden via 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
Bearer-authenticatie
Voor systemen die bearer-authenticatie nodig hebben, kunt u git config
gebruiken:
Notitie
U moet deze configuratiewijzigingen aanbrengen met --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
De <uri>
kan worden ingevuld met verschillende opties, bijvoorbeeld https://dev.azure.com/MYORG/
. Zie de documentatie voor git config
voor meer informatie.
(Oorspronkelijke bron in: Beste manier om te verifiëren bij een Git-repository in een buildproces).
Azure DevOps-gebruikers: Mogelijk moet u toegang inschakelen via taakautorisatiebereik en verwijzen naar de repository in uw YAML-pijplijn:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Referenties doorgeven in een omgevingsvariabele (niet aanbevolen)
Met VCPKG_KEEP_ENV_VARS
of VCPKG_ENV_PASSTHROUGH_UNTRACKED
kunt u inloggegevens doorgeven via de systeemomgeving.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Dit kan vervolgens worden gebruikt in uw privépoorten met de vcpkg_from_git()
, vcpkg_from_github()
of vcpkg_from_gitlab()
hulpmiddelen.
# 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}"
)
Voor privépoorten raden we u aan om vcpkg_from_git()
te gebruiken in plaats van vcpkg_from_github()/vcpkg_from_gitlab()
en de bovenstaande pre-seedingmethode.
Jenkins-referenties voor gitUsernamePassword doorgeven
De eenvoudigste en veiligste optie voor Git-verificatie bij GitHub vanuit Jenkins is het gebruik van GitHub App en het volgende:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Hiermee stelt u de GIT_ASKPASS
in met een pad naar een helperscript dat reageert met een git-gegevensquery en geeft vcpkg
de instructie om deze omgevingsvariabele te bewaren. Het wachtwoord is een GitHub App-token met een levensduur van 1 uur.