Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Registries och vcpkg_from_git() använder direkt Git-kommandoradsverktyg för att hämta fjärrresurser. Vissa av dessa resurser kan skyddas från anonym åtkomst och behöver autentisering eller autentiseringsuppgifter.
Strategierna nedan syftar till att uppnå samma grundläggande mål: git clone https://.... bör lyckas utan interaktion. Detta gör att vcpkg kan separeras från detaljerna i ditt autentiseringsschema, vilket säkerställer vidarekompatibilitet med eventuella ytterligare säkerhetsförbättringar i framtiden.
Git-autentiseringsuppgifter före start
Du kan ange git-autentiseringsuppgifter i förväg via git credential approve:
PowerShell:
"url=https://github.com`npath=Microsoft/vcpkg`nusername=unused`npassword=$MY_PAT`n" | git credential approve
Våldsamt slag:
echo "url=https://github.com"$'\n'"path=Microsoft/vcpkg"$'\n'"username=unused"$'\n'"password=$MY_PAT"$'\n' | git credential approve
Bärareauthentisering
För system som behöver ägarautentisering kan du använda git config:
Notera
Du måste göra dessa konfigurationsändringar med --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
<uri> kan fyllas i med en mängd olika alternativ, till exempel https://dev.azure.com/MYORG/. Mer information finns i dokumentationen om git config.
(Ursprunglig källa i: Bästa sättet att autentisera mot en git-lagringsplats i en byggprocess).
Azure DevOps-användare: Du kan behöva aktivera åtkomst via Jobbauktoriseringsomfång och referera till lagringsplatsen i yaml-pipelinen:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Skicka autentiseringsuppgifter i en miljövariabel (rekommenderas inte)
Med hjälp av VCPKG_KEEP_ENV_VARS eller VCPKG_ENV_PASSTHROUGH_UNTRACKEDkan du skicka in autentiseringsuppgifter via miljön.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Detta kan sedan användas i dina privata portar med hjälparna vcpkg_from_git(), vcpkg_from_github() eller vcpkg_from_gitlab().
# 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}"
)
För privata portar rekommenderar vi att du använder vcpkg_from_git() i stället för vcpkg_from_github()/vcpkg_from_gitlab() och försåddningsmetoden ovan.
Skicka autentiseringsuppgifter för Jenkins gitUsernamePassword
Det enklaste och säkraste alternativet för Git-autentisering till GitHub från Jenkins är att använda GitHub App- och följande:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Detta anger GIT_ASKPASS med en sökväg till hjälpskript som svarar med git-autentiseringsuppgifter och instruerar vcpkg att behålla den här miljövariabeln. Lösenordet är en GitHub App-token med en timmes livslängd.