リモート認証

レジストリを 使用し、 vcpkg_from_git() Git コマンド ライン ツールを直接使用してリモート リソースをフェッチします。 これらのリソースの一部は、匿名アクセスから保護され、認証または資格情報が必要な場合があります。

以下の戦略はすべて、同じ基本的な目標を達成しようとしている: git clone https://.... 相互作用なしで成功する必要があります。 これにより、vcpkg を認証スキームの詳細から分離できるため、今後のセキュリティ強化に対する前方互換性が確保されます。

Git 資格情報の事前シード処理

Git 資格情報は、次の方法で 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

ベアラー認証

ベアラー認証が必要なシステムでは、次を使用 git configできます。

Note

次の構成を変更する必要があります。 --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_github()代わりに、および事前シード処理方法を使用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_ASKPASS git 資格情報クエリで応答し、この環境変数を保持するように指示する vcpkg ヘルパー スクリプトへのパスが設定されます。 パスワードは、有効期間が 1 時間の GitHub アプリ トークン です。