영어로 읽기

다음을 통해 공유


원격 인증

레지스트리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수 있습니다.

참고

다음을 사용하여 이러한 구성을 변경해야 합니다. --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 자격 증명 쿼리로 응답하고 이 환경 변수를 유지하도록 지시하는 도우미 스크립트에 대한 경로가 설정 GIT_ASKPASS 됩니다 vcpkg . 암호는 1시간 수명이 있는 GitHub 앱 토큰 입니다.