Удаленная проверка подлинности
Реестры и vcpkg_from_git()
напрямую используют средства командной строки Git для получения удаленных ресурсов. Некоторые из этих ресурсов могут быть защищены от анонимного доступа и нуждаются в проверке подлинности или учетных данных.
Стратегии, приведенные ниже, стремятся достичь одной и той же основной цели: git clone https://....
должны добиться успеха без взаимодействия. Это позволяет отделять vcpkg от конкретных особенностей схемы проверки подлинности, обеспечивая совместимость пересылки с любыми дополнительными улучшениями безопасности в будущем.
Учетные данные Git предварительного 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_git()
вместо vcpkg_from_github()
метода предварительного заполнения выше.
Передача учетных данных Jenkins gitUsernamePassword
Самый простой и самый безопасный вариант проверки подлинности Git в GitHub из Jenkins использует приложение GitHub и следующее:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Это задает GIT_ASKPASS
путь к вспомогательному скрипту, который отвечает запросом учетных данных Git и указывает vcpkg
сохранить эту переменную среды. Пароль — это маркер приложения GitHub с 1 часовым временем существования.