Трубопроводы Azure: я получаю смертельный исход: не могу прочитать имя пользователя для терминальных запросов 'https://github.com': отключено - PullRequest
4 голосов
/ 08 апреля 2019

У меня есть задача powershell, настроенная в конвейерах сборки Azure для объединения изменений из dev в master моего публичного репозитория github и передачи изменений в master. Я получаю

fatal: не удалось прочитать имя пользователя для 'https://github.com':, подсказки терминала отключены

Примечание:

  • Я настроил свой gitconfig с моим именем пользователя и emailid.
  • git push работает нормально, когда я делаю изменения в файлах и делаю коммит и push, но выдает эту ошибку, когда я делаю слияние и push
  • У меня достаточно привилегий для добавления в ветку

Любая помощь по этому вопросу будет высоко ценится. Если вам нужна дополнительная информация, оставьте комментарий в этой теме.

Это фактический фрагмент.

$branchName = $env:BRANCH_NAME;

Write-Host "Getting SHA for last commit in the latest release" -ForegroundColor Blue;
$latestReleaseCommitSHA = git rev-list --tags --max-count=1;

if([string]::IsNullOrEmpty($latestReleaseCommitSHA)) {
    Write-Host "Unable to get the SHA for last commit in latest release" -ForegroundColor Red;
    EXIT 1;
}

Write-Host "SHA for last commit in the latest release is '$($latestReleaseCommitSHA)'" -ForegroundColor Green;

Write-Host "Merging Changes till '$($latestReleaseCommitSHA)'" -ForegroundColor Blue;
git merge $latestReleaseCommitSHA

Write-Host "Checking Conflicted Files";
$conflictedFiles = git diff --name-only --diff-filter=U

if (-Not [string]::IsNullOrEmpty($conflictedFiles)) {
    Write-Host "Unable to Merge" -ForegroundColor Red;
    Write-Host "There are conflicts in below files:" -ForegroundColor Cyan;
    Write-Host -Object $conflictedFiles -ForegroundColor Cyan;
    EXIT 1;
}

Write-Host "Merged changes to '$($branchName)'" -ForegroundColor Green;

Write-Host "Pushing changes." -ForegroundColor Blue;
git push origin HEAD:$branchName

Write-Host "Pushed the changes to the $($branchName) branch." -ForegroundColor Green;

Ответы [ 3 ]

4 голосов
/ 09 апреля 2019

Не совсем та же ситуация, что и у вас, но это был единственный пост, который был близок к моей аналогичной ситуации, поэтому я подумал, что стоит добавить свое решение здесь. У меня была эта ошибка в размещенном Ubuntu Azure Pipeline, при запуске задачи командной оболочки для извлечения, редактирования и отправки в git.

Я получил ошибку при попытке нажать команду:

git push

Я исправил это, изменив команду на:

git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" push

$ (System.AccessToken) - это предопределенная переменная в конвейерах Azure: https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&viewFallbackFrom=vsts&tabs=yaml

1 голос
/ 08 апреля 2019

Не знаю почему, но при попытке push после merge git требуется имя пользователя и пароль.

По умолчанию Azure DevOps отключает запрос ввода учетных данных, и вы получаете сообщение об ошибке.

Вы можете включить приглашение, задав для переменной среды GIT_TERMINAL_PROMPT значение 1, но во время сборки вы не сможете ввести значения, и сборка будет зависать.

Чтобы исправить ошибку,просто добавьте имя пользователя и пароль или токен личного доступа (PAT) в команду git push:

git push https://username:password(or PAT)@github.com/username/reponame.git 

https://... заменяет origin.

0 голосов
/ 12 мая 2019

Существует встроенная «учетная запись службы», которая на самом деле является PAT, называемой Project Collection Build Service, которую не следует путать с Project Collection Build Service Accounts group .

От: https://marcstan.net/blog/2018/08/31/Mirror-github-gitlab-and-VSTS-repositories/

Общая информация: если вы не знали, что $ env: SYSTEM_ACCESSTOKEN - это PAT (токен личного / частного доступа), который автоматически генерируется сервером сборки (но по умолчанию отключен) и позволяет выполнять проверку подлинности в VSTS изнутри ваши сборки и релизы. Чтобы включить его, выберите «задание агента» в определении сборки или выпуска и установите флажок «Разрешить сценариям доступ к токену OAuth» в разделе «Дополнительные параметры».

Для этого есть два шага:

Шаг 1

Чтобы избавиться от ошибки fatal: could not read username for..., нам нужно разрешить сценариям получать доступ к токену OAuth. Если вы используете новейший конвейер Azure на основе YAML, вы будете стремиться к высоким и низким значениям для « Разрешить сценариям доступ к параметру OAuth-токена » в пользовательском интерфейсе. Ответ Microsoft - здесь . В вашем файле YAML (azure-pipelines.yml) добавьте:

steps:
- checkout: self
  persistCredentials: true

Шаг 2

После устранения ошибки OP я не смог зафиксировать сообщение об ошибке:

remote: 001f# service=git-receive-pack
remote: 0000000000aaTF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\c21ba3ac-5ad4-de50-bc1a-12ee21de21f0', scope 'repository'.
remote: TF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\c21ba3ac-5ad4-de50-bc1a-12ee21de21f0', scope 'repository'.
fatal: unable to access 'https://[username].visualstudio.com/[repo]/_git/[repo]/': The requested URL returned error: 403

Мы также должны дать ему разрешения. С той же страницы , как указано выше. Добавьте пользователя Project Collection Build Service в свои репозитории.

enter image description here

Примечание: пользователь (1), а не группа (2).

Грант:

Contribute: Allow
Create Branch: Allow
Create Tag: Allow (Inherited)
Read: Allow (Inherited)

НТН

...