Autenticação remota
Registos e vcpkg_from_git()
usam diretamente as ferramentas de linha de comando do Git para buscar recursos remotos. Alguns desses recursos podem estar protegidos contra acesso anônimo e precisam de autenticação ou credenciais.
As estratégias abaixo procuram alcançar o mesmo objetivo fundamental: git clone https://....
deve ter sucesso sem interação. Isso permite que o vcpkg seja separado das especificidades do seu esquema de autenticação, garantindo compatibilidade direta com quaisquer melhorias de segurança adicionais no futuro.
Credenciais git pré-configuração
Você pode pré-configurar credenciais do Git através de 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
Autenticação ao portador
Para sistemas que necessitam de autenticação ao portador, pode utilizar git config
:
Observação
Você deve fazer essas alterações de configuração com --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
O <uri>
pode ser preenchido com uma variedade de opções, por exemplo, https://dev.azure.com/MYORG/
. Para obter mais detalhes, consulte a documentação do git config
.
(Fonte original em: Melhor maneira de autenticar num repositório git num processo de build).
Utilizadores do Azure DevOps: Talvez seja necessário habilitar o acesso por meio do escopo de autorização de tarefas e referenciar o repositório no seu pipeline YAML:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Passar credenciais em uma variável de ambiente (não recomendado)
Usando VCPKG_KEEP_ENV_VARS
ou VCPKG_ENV_PASSTHROUGH_UNTRACKED
, você pode passar credenciais através do ambiente.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Isso pode ser usado em suas portas privadas com os vcpkg_from_git()
, vcpkg_from_github()
ou vcpkg_from_gitlab()
auxiliares.
# 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}"
)
Para portas privadas, recomendamos o uso de vcpkg_from_git()
em vez de vcpkg_from_github()/vcpkg_from_gitlab()
e o método de pré-configuração acima.
Passar credenciais Jenkins gitUsernamePassword
A opção mais simples e segura para autenticação Git no GitHub a partir do Jenkins é usar o aplicativo GitHub e o seguinte:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Isso configura o GIT_ASKPASS
com o caminho para um script auxiliar que trata da consulta das credenciais do git e instrui o vcpkg
a manter essa variável de ambiente. A senha é um token do aplicativo GitHub com 1 hora de vida.