У меня есть задача powershell, настроенная в конвейерах сборки Azure, чтобы объединить изменения из dev в master моего общедоступного репозитория github и отправить изменения в master. я осознаю
fatal: could not read Username for 'https://github.com': terminal prompts disabled
Примечание:
Любая помощь в этом будет высоко оценена. В случае необходимости дополнительной информации, комментарий в этой теме.
Это настоящий фрагмент.
$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;
попробовав локальные средства на моей собственной машине вместо лазурных конвейеров или в локальном репо?
ну, учитывая эту ошибку, я вполне уверен, что ему не хватает разрешений на отправку, потому что иначе зачем запрашивать имя пользователя\пароль
@Muthurathinam попробуйте мой ответ ниже, я также получил эту ошибку при слиянии, и я решил ее.
Привет @Muthurathinam, надеюсь, вы не возражаете, если я спрошу: вам действительно нужно написать сценарий слияния и отправки? Такого рода вещи обычно можно сделать гораздо проще в azure devops с помощью запроса на извлечение.
Я не знаю, почему, но когда вы пытаетесь 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
.
использование личного токена доступа вместо имени пользователя и пароля сработало.
Вместо того, чтобы вставлять пароль в командную строку, вы можете использовать для этого системную переменную. См. ответ Даррена Роджерса ниже.
Не та же самая ситуация, что и у вас, но это был единственный пост, который был близок к моей похожей ситуации, поэтому я подумал, что стоит добавить сюда свое решение. У меня была эта ошибка в размещенном Ubuntu Azure Pipeline, выполняя командную задачу оболочки для проверки, редактирования и отправки в git.
Я получил ошибку при попытке нажать с помощью команды:
git push
Я исправил это, изменив команду на:
git -c http.extraheader = "AUTHORIZATION: bearer $(System.AccessToken)" push
$(System.AccessToken) — это предопределенная переменная в Azure Pipelines: https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&viewFallbackFrom=vsts&tabs=yaml
Еще один ключевой элемент, который следует использовать вместе с командой с использованием System.AccessToken
, вам нужно включить Allow scripts to access the OAuth token
в разделе «Дополнительные параметры задания» (который упоминается в приведенной вами ссылке).
Существует встроенная «служебная учетная запись», которая на самом деле является PAT, называемой Project Collection Build Service
, не путать с Project Collection Build Service Accounts
группа.
От кого: https://marcstan.net/blog/2018/08/31/Зеркало-github-gitlab-and-VSTS-репозитории/
Trivia: In case you didn't know "$env:SYSTEM_ACCESSTOKEN" is a PAT (Personal/Private Access Token) that is auto generated by the build server (but disabled by default) and allows to authenticate against VSTS from inside your builds and releases. To enable it, you have select the "agent job" inside your build or release definition and check the "Allow scripts to access the OAuth token" checkbox under "Additional options".
Для этого есть два шага:
Чтобы избавиться от ошибки fatal: could not read username for...
, нам нужно разрешить скриптам доступ к токену OAuth. Если вы используете новейший Azure Pipeline на основе YAML, вы будете искать вариант «Разрешить скриптам доступ к токену OAuth» в пользовательском интерфейсе. Ответ Microsoft: здесь. В вашем файле YAML (azure-pipelines.yml
) добавьте:
steps:
- checkout: self
persistCredentials: true
После устранения ошибки ОП я не смог зафиксировать, получив ошибку:
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
в свои репозитории.
Примечание. Пользователь (1), а не группа (2).
Грант:
Contribute: Allow
Create Branch: Allow
Create Tag: Allow (Inherited)
Read: Allow (Inherited)
ХТН
Основываясь на этом ответе, если вы все еще используете старый формат URL, эту же страницу можно найти здесь: https://[organization].visualstudio.com/DefaultCollection/[project]/_settings/repositories?repoGroup =true&_a=безопасность
К сожалению, я также столкнулся с ошибкой «Вам нужно разрешение Git 'GenericContribute'» во время сценария сборки торта, хотя единственное, что я нажимал, был тег (например, git push origin refs/tags/1.0.0.0) и Create Разрешение тега установлено на Разрешить! Я бы предпочел не давать разрешение на внесение вклада, но, похоже, это все же было необходимо.
Это очень полезный ответ.
вероятно, это означает, что он запрашивает что-то, когда вы пытаетесь выполнить push, попробуйте сделать то же самое локально и выяснить, как это исправить.