Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Uwierzytelnianie zdalne

Rejestry i vcpkg_from_git() bezpośrednie używanie narzędzi wiersza polecenia Usługi Git do pobierania zasobów zdalnych. Niektóre z tych zasobów mogą być chronione przed dostępem anonimowym i wymagają uwierzytelniania lub poświadczeń.

Poniższe strategie mają na celu osiągnięcie tego samego podstawowego celu: git clone https://.... powinny odnieść sukces bez interakcji. Dzięki temu program vcpkg może być oddzielony od specyfiki schematu uwierzytelniania, zapewniając zgodność z dodatkowymi ulepszeniami zabezpieczeń w przyszłości.

Poświadczenia usługi Git przed inicjuj

Poświadczenia git można wstępnie zainicjować za pomocą polecenia 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

Uwierzytelnianie elementu nośnego

W przypadku systemów, które wymagają uwierzytelniania elementu nośnego, można użyć polecenia git config:

Uwaga

Te zmiany konfiguracji należy wprowadzić za pomocą polecenia --global

git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"

Można <uri> je wypełnić różnymi opcjami, na przykład https://dev.azure.com/MYORG/. Aby uzyskać więcej informacji, zobacz dokumentację git config .

(Oryginalne źródło w: Najlepszy sposób uwierzytelniania w repozytorium git w procesie kompilacji).

Użytkownicy usługi Azure DevOps: może być konieczne włączenie dostępu za pośrednictwem zakresu autoryzacji zadania i odwołanie do repozytorium w potoku yaml:

resources: 
  repositories:
    - repository: <FRIENDLYNAME>
      type: git
      name: <ORG>/<REPO>
      tag: tags/<TAG>

...

jobs:
 - job: Build
   uses:
     repositories: [<FRIENDLYNAME>]

Za pomocą polecenia VCPKG_KEEP_ENV_VARS lub VCPKG_ENV_PASSTHROUGH_UNTRACKEDmożna przekazać poświadczenia za pośrednictwem środowiska.

export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123

Można go następnie użyć w prywatnych portach za pomocą pomocników pvcpkg_from_git() lub 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}"
)

W przypadku portów prywatnych zalecamy użycie metody vcpkg_from_git() zamiast vcpkg_from_github() metody wstępnej powyżej.

Przekazywanie poświadczeń narzędzia Jenkins gitUsernamePassword

Najprostszą i najbezpieczniejszą opcją uwierzytelniania git w usłudze GitHub z serwera Jenkins jest użycie aplikacji GitHub i następujących elementów:

withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
  withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
    bat 'cmake'
  }
}

Ustawia element GIT_ASKPASS ze ścieżką do skryptu pomocnika, który odpowiada za pomocą zapytania git credentials i instruuje vcpkg zachowanie tej zmiennej środowiskowej. Hasło jest tokenem aplikacji GitHub z okresem istnienia 1 godziny.