问题描述
在 Azure DevOps 中,我尝试创建一个命令行脚本,该脚本将实际的 DevOps 存储库推送到 GitLab。
git clone https://xxxx@dev.azure.com/xxxx/DBS/_git/xxx
git remote add --mirror=fetch secondary https://oauth2:%pat%@gitlab.com/username/gitlabrepo.git
git fetch origin
git push secondary --all
在 env 参数 %pat% 中,我引用了来自 GitLab 的个人访问令牌。 使用命令行脚本运行管道时,出现以下错误:
start to push repo to gitlab
cloning into 'gitlabrepo'...
remote: HTTP Basic: Access denied
fatal: Authentication Failed for 'https://gitlab.com/***/gitlabrepo.git/'
##[debug]Exit code: 128
##[debug]Leaving Invoke-VstsTool.
##[error]Cmd.exe exited with code '128'.
这是如何实现的?
解决方法
- 确保命令在 git bash 中本地工作。
- 运行
git config --global--unset credential.helper
命令git add
命令 - 如果问题仍然存在,请尝试运行
git remote set-url origin https://usernameHere:personalAccessTokenHere@gitlab.com/usernameHere/projectNameHere
- 如果您使用自托管代理,请转到 agene 机器,并在凭据管理器中删除凭据。
Avure DevOps 代理正在 ubuntu-18.04 机器上运行它。似乎使用 PAT 连接到 gitlab 失败,因为这是一个公司 gitlab 帐户并且有一些防火墙限制。因为从我的本地机器通过 VPN 连接到公司网络,它正在工作。 Git bash 本地工作正常。错误是因为管道代理启动的这台机器没有进入公司的VPN。