訓練
遠程驗證
登錄 並 vcpkg_from_git()
直接使用 Git 命令行工具來擷取遠端資源。 其中有些資源可能會受到保護,以免匿名存取,而且需要驗證或認證。
下列策略全都尋求達到相同的基本目標: git clone https://....
應該在沒有互動的情況下成功。 這可讓 vcpkg 與驗證配置的特定內容分開,確保未來與任何其他安全性改進的向前相容性。
您可以透過 git credential approve
預先植入 Git 認證:
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
對於需要持有人驗證的系統,您可以使用 git config
:
注意
您必須使用 進行這些設定變更 --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
<uri>
可以填入各種選項,例如 https://dev.azure.com/MYORG/
。 如需詳細資訊,請參閱 git config
檔。
(原始來源: 在建置程式中,針對 Git 存放庫進行驗證的最佳方式。
Azure DevOps 使用者: 您可能需要透過 作業授權範圍啟用存取權 ,並參考 yaml 管線中的存放庫:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
您可以使用 VCPKG_KEEP_ENV_VARS
或 VCPKG_ENV_PASSTHROUGH_UNTRACKED
,透過環境傳入認證。
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
然後,您可以在私人埠中使用 pvcpkg_from_git()
或 vcpkg_from_github()
協助程式。
# 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}"
)
針對私人埠,我們建議使用 vcpkg_from_git()
而不是 vcpkg_from_github()
和上述預先植入方法。
從 Jenkins 對 GitHub 進行 Git 驗證的最簡單且最安全的選項是使用 GitHub App ,如下所示:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
這會使用協助程式腳本的路徑來設定 GIT_ASKPASS
,其會以 git 認證查詢回應,並指示 vcpkg
保留此環境變數。 密碼是 具有 1 小時存留期的 GitHub 應用程式令牌 。