Autentikasi jarak jauh
Registri dan vcpkg_from_git()
langsung menggunakan alat baris perintah Git untuk mengambil sumber daya jarak jauh. Beberapa sumber daya ini mungkin dilindungi dari akses anonim dan memerlukan autentikasi atau kredensial.
Strategi di bawah ini berusaha mencapai tujuan mendasar yang sama: git clone https://....
harus berhasil tanpa interaksi. Ini memungkinkan vcpkg dipisahkan dari spesifikasi skema autentikasi Anda, memastikan kompatibilitas ke depan dengan peningkatan keamanan tambahan di masa mendatang.
Info masuk git pra-seed
Anda dapat menyetel terlebih dahulu kredensial git melalui 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
Autentikasi pembawa
Untuk sistem yang membutuhkan autentikasi pembawa, Anda dapat menggunakan git config
:
Nota
Anda harus membuat perubahan konfigurasi ini dengan --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
<uri>
dapat diisi dengan berbagai opsi, misalnya https://dev.azure.com/MYORG/
. Untuk detail selengkapnya, lihat dokumentasi git config
.
(Sumber asli dalam: Cara terbaik untuk mengautentikasi terhadap repositori git dalam proses build).
pengguna Azure DevOps: Anda mungkin perlu mengaktifkan akses melalui cakupan otorisasi tugas dan merujuk repositori di alur yaml Anda:
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
Meneruskan kredensial dalam variabel lingkungan (tidak disarankan)
Menggunakan VCPKG_KEEP_ENV_VARS
atau VCPKG_ENV_PASSTHROUGH_UNTRACKED
, Anda dapat meneruskan kredensial melalui lingkungan sistem.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Ini kemudian dapat digunakan di port privat Anda dengan bantuan vcpkg_from_git()
, vcpkg_from_github()
, atau 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}"
)
Untuk port privat, sebaiknya gunakan vcpkg_from_git()
alih-alih vcpkg_from_github()/vcpkg_from_gitlab()
dan metode pra-penyemaian di atas.
Berikan kredensial Jenkins gitUsernamePassword
Opsi paling sederhana dan paling aman untuk autentikasi Git ke GitHub dari Jenkins menggunakan GitHub App dan yang berikut:
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Ini mengatur GIT_ASKPASS
dengan jalur ke skrip pembantu yang merespons dengan kueri kredensial git dan menginstruksikan vcpkg
untuk menyimpan variabel lingkungan ini. Kata sandi adalah token Aplikasi GitHub dengan masa pakai 1 jam.