我在azure构建管道中配置了powershell任务,以将来自dev的更改合并到我的github公共仓库的master中,并将更改推送到master。我正在
致命:无法读取“ https://github.com”的用户名:终端提示已禁用
注意:
在此方面的任何帮助将不胜感激。如果需要更多信息,请在此线程中注释。
这是实际的代码段。
$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;
答案 0 :(得分:4)
与您所遇到的情况不完全相同,但这是唯一接近我类似情况的帖子,因此我认为值得在此处添加我的解决方案。我在托管的Ubuntu Azure Pipeline中遇到此错误,运行shell命令任务检出,编辑并推送到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
答案 1 :(得分:1)
我不是为什么,但是当您在push
git之后尝试merge
时,想要用户名和密码。
默认情况下,Azure DevOps禁用提示输入凭据的提示,并且您收到错误消息。
您可以通过将环境变量GIT_TERMINAL_PROMPT
设置为1
来启用提示,但是在构建期间,您无法输入值,并且构建将挂起。
要解决该错误,只需在git push
命令中添加用户名和密码或个人访问令牌(PAT):
git push https://username:password(or PAT)@github.com/username/reponame.git
将https://...
替换为origin
。
答案 2 :(得分:-1)
有一个内置的“服务帐户”,实际上是一个称为Project Collection Build Service
的PAT,不要与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令牌”复选框。
有两个步骤:
要摆脱fatal: could not read username for...
错误,我们需要允许脚本访问OAuth令牌。如果您使用的是基于YAML的最新Azure管道,您将在界面中搜寻“ 允许脚本访问OAuth令牌”选项。 Microsoft的答案是here。在您的YAML文件(azure-pipelines.yml
)中,添加:
steps:
- checkout: self
persistCredentials: true
解决了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
我们还必须授予它权限。从上面的same page。将 user Project Collection Build Service
添加到您的仓库中。
注意:用户(1)而不是组(2)。
赠予:
Contribute: Allow
Create Branch: Allow
Create Tag: Allow (Inherited)
Read: Allow (Inherited)
HTH
答案 3 :(得分:-2)
对于私有项目,azure devops构建VM无权克隆您的子模块。为了授予克隆权限,您可以在Azure devops的存储库中添加用户名和密码,或者在gitmodules文件中的URL中添加个人访问令牌(PAT)。您需要将网址更改为https://username:password@dev.azure.com/organization/project/_git/repo或https://PAT@dev.azure.com/organization/project/_git/repo
我建议使用PAT。您可以在Azure DevOps中创建PAT,只需查找操作方法即可。