Číst v angličtině

Sdílet prostřednictvím


Vzdálené ověřování

Registry a vcpkg_from_git() přímo používají nástroje příkazového řádku Gitu k načtení vzdálených prostředků. Některé z těchto prostředků můžou být chráněné před anonymním přístupem a potřebují ověřování nebo přihlašovací údaje.

Následující strategie se snaží dosáhnout stejného základního cíle: git clone https://.... měly by být úspěšné bez interakce. To umožňuje oddělit vcpkg od specifik schématu ověřování a zajistit tak kompatibilitu s dalšími vylepšeními zabezpečení v budoucnu.

Přihlašovací údaje gitu před počátečními údaji

Přihlašovací údaje gitu můžete předem provést prostřednictvím 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

Ověřování nosný

Pro systémy, které potřebují ověřování nosné, můžete použít git config:

Poznámka

Tyto změny konfigurace musíte provést pomocí --global

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

Dají <uri> se vyplnit různými možnostmi, například https://dev.azure.com/MYORG/. Další podrobnosti najdete v git config dokumentaci.

(Původní zdroj: Nejlepší způsob, jak se ověřit v úložišti Git v procesu sestavení).

Uživatelé Azure DevOps: Možná budete muset povolit přístup prostřednictvím oboru autorizace úlohy a odkazovat na úložiště v kanálu yaml:

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

...

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

Pomocí VCPKG_KEEP_ENV_VARS nebo VCPKG_ENV_PASSTHROUGH_UNTRACKEDmůžete předávat přihlašovací údaje prostřednictvím prostředí.

export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123

To se pak dá použít ve vašich privátních portech s p nebo vcpkg_from_github() pomocnýmivcpkg_from_git() rutinami.

# 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}"
)

U privátních portů doporučujeme místo výše vcpkg_from_github() uvedené metody před počátečním použitím použítvcpkg_from_git().

Předání přihlašovacích údajů Jenkins gitUsernamePassword

Nejjednodušší a nejbezpečnější možností ověřování Gitu na GitHub z Jenkinse je použití aplikace GitHub a následující:

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

Tím se nastaví GIT_ASKPASS cesta k pomocnému skriptu, který odpoví dotazem na přihlašovací údaje Gitu a dá pokyn, aby byla tato proměnná prostředí zachována vcpkg . Heslo je token aplikace GitHubu s 1 hodinovou životností.