Как исправить Github на Azure DevOps Syn c? - PullRequest
0 голосов
/ 07 января 2020

У меня есть синхронизация между Azure DevOps и Github для синхронизации c Github-репо с репо в Azure Devops. Конец прошлого года все отлично работает. В этом году синхронизация больше не работает. Сообщение об ошибке было fatal: could not read Password for 'https://$(XXXXXXXXXToken)@yyyyyy.visualstudio.com': terminal prompts disabled '

Я забыл, что срок действия PAT истекает 31.12.2019. Поэтому я пересоздал конвейер, а не просто изменил дату истечения срока действия PAT. Facepalm . Моя идея состояла в том, чтобы создать новый конвейер, чтобы добраться до точки, вызывающей проблему. Но я думаю, что сделал все хуже.

Теперь я изменил сценарий с:

git push https://$(XXXXXXXToken)@yyyyyy.visualstudio.com/nnnnn/_git/kkkkkkkk -u --all

на:

git push https://$(System.AccessToken)@yyyyyy.visualstudio.com/nnnnn/_git/kkkkkkkk -u --all

Я изменил токен на «System.AccessToken», потому что информация в «Разрешить сценариям доступ к токену OAuth» гласит: Allow scripts OAuth

Я отозвал каждый PAT в своем списке , После того, как я заново создал конвейер и изменил доступ к System.AccessToken, DevOps автоматически создает PAT, который выглядит следующим образом:

enter image description here

Трубопровод работает зеленым , но репо Azure DevOps git все еще не обновлено. Кажется, до сих пор нет связи с репо Azure DevOps git. Журнал конвейера показывает мне, что выписка из репозитория github работает нормально. Нет сбоев.

Код YAML для конвейера (я создал конвейер с пользовательским интерфейсом, а не директилом с редактором YAML):

Pipeline YAML Code

  • На сайте Github я установил Azure Pipelines и Azure Boards App.
  • Я также авторизовал оба приложения и авторизовал оба приложения для OAuth.
  • У меня также есть Webhok между GitHub и репо Azure DevOps. Webhook настроен для запросов Pull, Pushes и Releases
  • В Azure DevOps есть соединение GitHub со всеми моими репами в GitHub.

Может кто-нибудь помочь мне получить syn c работает правильно?

1 Ответ

1 голос
/ 07 января 2020

Мы должны объявить переменную в YAML для доступа к $(System.AccessToken). См. Установка переменных в конвейере

Я могу синхронизировать c репозиторий Github успешно с Azure Репо DevOps, используя следующий конвейер YAML: (Просто замените Azure DevOps git репо соответственно: https://xxx.visualstudio.com/GithubSync/_git/GithubSync)

trigger:
  branches:
    include:
    - '*'
variables:
  system_accesstoken: $(System.AccessToken)

pool:
  vmImage: 'ubuntu-latest'

steps:
- checkout: self
  persistCredentials: true    #Allow scripts to access the system token
  clean: true 

- task: shellexec@0
  inputs:
    code: |
      git config --global user.email "xx@xx.com"
      git config --global user.name "xxx"
      git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
      git remote add vsts https://xxx.visualstudio.com/GithubSync/_git/GithubSync
      git branch -r | grep -v '\->' | while read remote; do git -c http.extraheader="AUTHORIZATION: bearer $(system_accesstoken)" push -u vsts "${remote#origin/}"; done

Ссылка на этот блог для получения дополнительной информации: СИНХРОНИЗИРОВАТЬ GITHUB-Хранилище с VSTS

...