원격 인증
레지스트리 및 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
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
그런 다음 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_ASKPASS
에 도우미 스크립트로의 경로를 설정하여 git 자격 증명 쿼리에 응답하고 이 환경 변수를 유지하도록 vcpkg
에 지시합니다. 암호는 1시간 수명이 있는 GitHub 앱 토큰.
vcpkg