Uzaktan kimlik doğrulaması
Kayıt Defterleri ve vcpkg_from_git()
, uzak kaynakları getirmek için doğrudan Git komut satırı araçlarını kullanır. Bu kaynaklardan bazıları anonim erişime karşı korunabilir ve kimlik doğrulaması veya kimlik bilgileri gerekebilir.
Aşağıdaki stratejiler aynı temel hedefe ulaşmayı amaçlamaktadır: git clone https://....
etkileşim olmadan başarılı olmalıdır. Bu, vcpkg'nin kimlik doğrulama şemanızın özelliklerinden ayrılmasını sağlar ve gelecekte yapılacak ek güvenlik geliştirmeleriyle ileriye dönük uyumluluk sağlar.
Önceden yüklenmiş git kimlik bilgileri
git kimlik bilgilerini git credential approve
aracılığıyla önceden kaydedebilirsiniz.
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
Taşıyıcı yetkilendirme
Taşıyıcı kimlik doğrulaması gereken sistemler için git config
kullanabilirsiniz:
Not
Bu yapılandırma değişikliklerini --global
ile yapmalısınız.
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
<uri>
, https://dev.azure.com/MYORG/
gibi çeşitli seçeneklerle doldurulabilir. Daha fazla ayrıntı için git config
belgelerine bakın.
(içindeki özgün kaynak: Derleme işleminde git deposunda kimlik doğrulamanın en iyi yolu).
Azure DevOps kullanıcılarına :İş yetkilendirme kapsamı üzerinden erişimi etkinleştirmeniz ve YAML işlem hattınızdaki depoyu referans göstermeniz gerekebilir.
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Ortam değişkeninde kimlik bilgilerini geçirme (önerilmez)
VCPKG_KEEP_ENV_VARS
veya VCPKG_ENV_PASSTHROUGH_UNTRACKED
kullanarak ortam üzerinden kimlik bilgilerini geçirebilirsiniz.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Bu daha sonra vcpkg_from_git()
, vcpkg_from_github()
veya vcpkg_from_gitlab()
yardımcılarıyla özel bağlantı noktalarınızda kullanılabilir.
# 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}"
)
Özel bağlantı noktaları için vcpkg_from_github()/vcpkg_from_gitlab()
yerine vcpkg_from_git()
ve yukarıdaki ön dağıtım yöntemini kullanmanızı öneririz.
Jenkins gitUsernamePassword kimlik bilgilerini aktar
Jenkins'ten GitHub'a Git kimlik doğrulaması için en basit ve en güvenli seçenek, GitHub App ve aşağıdakileri kullanmaktır:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Bu, GIT_ASKPASS
'ı bir yardımcı betik yoluyla, git kimlik bilgileri sorgusuna yanıt veren ve vcpkg
'in bu ortam değişkenini korumasını sağlayan bir hale getirir. Parola, 1 saatlik ömrü olan bir GitHub Uygulama belirtecidir.