Я пытаюсь запустить команду git push внутри моего конвейера сборки Azure DevOps, но получаю ошибку ниже:
фатальный: не удалось прочитать пароль для «https://dev.azure.com»: запросы терминала отключены.
Затем я попытался выполнить ту же команду с моим токеном личного доступа (PAT), например
MY_PAT= 'MY_PAT'
B64_PAT=$(printf ":$MY_PAT" | base64)
git -c http.extraHeader = "Authorization: Basic ${B64_PAT}" push
и это сработало. Но из-за соблюдения требований безопасности я не могу использовать свой PAT в конвейере. Есть ли способ использовать команду git push без раскрытия моего PAT. Пожалуйста, объясните аутентификацию oauth2 шаг за шагом, если это сработает.
Подробная документация по использованию git-команд в пайплайнах без extraHeader и через PAT Build Service:Запускаем Git-команды в скрипте.
Или вы можете сохранить свой PAT как секретную переменную:
Вам не нужно использовать PAT. Вы можете напрямую использовать предопределенную переменную System.Accesstoken. Смотрите здесь.
System.AccessToken — это специальная переменная, содержащая маркер безопасности, используемый текущей сборкой.
Измените команду ниже:
B64_PAT=$(printf ":$(System.AccessToken)" | base64)
git -c http.extraHeader = "Authorization: Basic ${B64_PAT}" push
Вы также можете использовать AccessToken напрямую следующим образом:
git push https://$(System.AccessToken)@dev.azure.com/org/proj/_git/repo -q
Спасибо за помощь, но у меня работает без кодировки base64.
# Node.js
# Build a general Node.js project with npm.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://learn.microsoft.com/azure/devops/pipelines/languages/javascript
trigger:
- master
- your-branch-name-here
pr: none
pool:
vmImage: "macos-latest"
jobs:
- job: Perform_Commit_From_CI
steps:
- checkout: self
persistCredentials: true #Important - Persist creds to run further git command
clean: true
- task: NodeTool@0
inputs:
versionSpec: "16.13.2"
displayName: "Install Node.js"
- script: |
git config --global user.email [email protected]
git config --global user.name "Test User"
displayName: Configure git
- script: |
yarn install
yarn start NAME_OF_THE_SCRIPT_YOU_WANT_TO_EXECUTE
git add -A
git commit -m 'Test commit [skip ci]'
git push origin HEAD:your-branch-name-here
displayName: "Test Script"
Это будет работать без PAT. Пожалуйста, прочитайте комментарии.
Вместо этого используйте SYSTEM_ACCESSTOKEN. Процесс сборки уже имеет действительный токен доступа.