Внутри одного из наших конвейеров Azure я пытаюсь отправить тег на GitHub, но получаю одну из двух ошибок в зависимости от моего подхода.
Нет аутентификации, просто git push
- bash: 'git push origin $(tag)'
git push origin 2019.07.01.1
fatal: could not read Username for 'https://github.com': terminal prompts disabled
Передача AUTHORIZATION: Bearer ***
в качестве дополнительного заголовка
- bash: 'git -c http.extraheader="AUTHORIZATION: Bearer $(System.AccessToken)" push origin $(tag)'
git -c http.extraheader="AUTHORIZATION: Bearer ***" push origin 2019.07.01.2
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400
Передача AUTHORIZATION: Bearer ***
в качестве дополнительного заголовка с использованием переменных среды
От: https://github.com/microsoft/azure-pipelines-agent/issues/1582#issuecomment-392235276
- bash: 'git -c http.extraheader="AUTHORIZATION: Bearer $env:token" push origin $(tag)'
env:
token: $(System.AccessToken)
git -c http.extraheader="AUTHORIZATION: Bearer ***" push origin 2019.07.01.3
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400
Передача сценария Bash помощнику по учетным данным
На основе ответа bk2204
- bash: 'git -c credential.helper=''!f() { echo "username=token"; echo "password=$(System.AccessToken)"; }; f'' push origin $(tag)'
git -c credential.helper='!f() { echo "username=token"; echo "password=***"; }; f' push origin 2019.07.02.9
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400
Passсценарий Bash для помощника по учетным данным с использованием переменных среды
От ответа bk2204
- bash: 'git -c credential.helper=''!f() { echo "username=token"; echo "password=$env:token"; }; f'' push origin $(tag)'
env:
token: $(System.AccessToken)
git -c credential.helper='!f() { echo "username=token"; echo "password=$env:token"; }; f' push origin 2019.07.02.9
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400
Передача AUTHORIZATION: Basic ***
в качестве дополнительного заголовка
Пытался имитировать то, как это делает задание по умолчанию для конвейера "Checkout".
- bash: 'git -c http.extraheader="AUTHORIZATION: basic $(System.AccessToken)" push origin $(tag)'
git -c http.extraheader="AUTHORIZATION: basic ***" push origin 2019.07.02.10
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400
Я безуспешно пробовал несколько вариантов вышеупомянутых тем.
Чего мне не хватает?
Обновление: 2019-07-02
Все вышеперечисленные механизмы являются допустимыми способами аутентификации.Проблема в том, что System.AccessToken
не подходит для GitHub.Документация указывает, что она предназначена для взаимодействия со службами Azure Pipeline * только 1053 * .
Мне не удалось найти переменную для токена, предоставленного AzurePipeline GitHub App .Я не думаю, что это будет иметь значение, поскольку это установочный токен .Я попытался использовать этот токен с задачей GitHubRelease , но он все еще не удался из-за отсутствия разрешения на запись.
Чтобы это заработало, я пошел с задачей GitHubRelease и мне пришлось создать новый сервис.соединение с новым токеном OAuth с разрешением на запись.
Мне все еще интересно, как получить доступ к токену, связанному с подключением службы, из задачи Bash.