Fjärrautentisering
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_UNTRACKED
kan 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.