リモート認証
レジストリと、および vcpkg_from_git()
は、リモートリソースを取得するために Git コマンドラインツールを直接使用します。 これらのリソースの一部は、匿名アクセスから保護され、認証または資格情報が必要な場合があります。
以下の戦略はすべて、同じ基本的な目標を達成することを目指しています。git clone https://....
は相互作用なしで成功する必要があります。 これにより、vcpkg を認証スキームの詳細から分離できるため、今後のセキュリティ強化に対する前方互換性が確保されます。
Git 資格情報の事前準備
git credential approve
を使用して Git 資格情報を事前にシードできます。
Powershell:
"url=https://github.com`npath=Microsoft/vcpkg`nusername=unused`npassword=$MY_PAT`n" | git credential approve
バッシュ:
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
これは、vcpkg_from_git()
、vcpkg_from_github()
、または 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}"
)
プライベート ポートの場合は、上記の vcpkg_from_github()/vcpkg_from_gitlab()
と事前シード処理方法ではなく、vcpkg_from_git()
を使用することをお勧めします。
Jenkins gitUsernamePassword 資格情報を渡す
Jenkins から GitHub への Git 認証を行う最も簡単で最も安全なオプションは、GitHub アプリ と次 使用することです。
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
これにより、git 資格情報クエリで応答し、この環境変数を保持するように vcpkg
に指示するヘルパー スクリプトへのパスを持つ GIT_ASKPASS
が設定されます。 パスワードは、有効期間が 1 時間の GitHub アプリ トークン です。
vcpkg