Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Registry a vcpkg_from_git() přímo používají nástroje příkazového řádku Gitu k načtení vzdálených prostředků. Některé z těchto prostředků můžou být chráněné před anonymním přístupem a potřebují ověřování nebo přihlašovací údaje.
Následující strategie se snaží dosáhnout stejného základního cíle: git clone https://.... by měly být úspěšné bez interakce. To umožňuje oddělit vcpkg od specifik schématu ověřování a zajistit tak kompatibilitu s dalšími vylepšeními zabezpečení v budoucnu.
Předběžné přihlašovací údaje pro Git
Přihlašovací údaje Gitu můžete předem nastavit přes 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
Ověřování Bearer
Pro systémy vyžadující autentizaci nositele můžete použít git config:
Poznámka
Tyto změny konfigurace musíte provést pomocí --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
<uri> lze vyplnit různými možnostmi, například https://dev.azure.com/MYORG/. Další podrobnosti najdete v dokumentaci k git config.
(Původní zdroj: Nejlepší způsob ověřování v úložišti Git v procesu sestavení).
uživatele Azure DevOps: Možná budete muset povolit přístup prostřednictvím oboru autorizace úlohy a odkazovat na úložiště v kanálu yaml:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Předání přihlašovacích údajů v proměnné prostředí (nedoporučuje se)
Pomocí VCPKG_KEEP_ENV_VARS nebo VCPKG_ENV_PASSTHROUGH_UNTRACKEDmůžete předávat přihlašovací údaje prostřednictvím prostředí.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
To se pak dá použít ve vašich privátních portech s pomocnými rutinami vcpkg_from_git(), vcpkg_from_github() nebo 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}"
)
U privátních portů doporučujeme používat vcpkg_from_git() místo vcpkg_from_github()/vcpkg_from_gitlab() a výše uvedenou metodu před-osetí.
Předání přihlašovacích údajů Jenkins gitUsernamePassword
Nejjednodušší a nejbezpečnější možností ověření Gitu na GitHubu z Jenkinse je použití aplikace GitHub a následující:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Tím se nastaví GIT_ASKPASS na cestu k pomocnému skriptu, který odpoví na dotaz s přihlašovacími údaji pro Git, a dá vcpkg pokyn, aby tuto proměnnou prostředí zachoval. Heslo je token aplikace GitHubu s 1 hodinovou životností.