Short version
有人能告诉我如何在Azure DevOps构建管道中设置“命令行脚本”任务,该管道将更改推送到本地Git存储库(事实上,管道所基于的Git存储库)?
无论我尝试什么,我的脚本总是在打印 Pushing commits to git 后超时 .
Longer version
我们正在将现有的Java / Maven项目从Jenkins构建服务器迁移到Azure DevOps构建环境,我正在尝试设置一个模仿Jenkins“Release Staging”功能的构建管道 .
我的第一次尝试是直接在签出的源上调用Maven发布插件 . 这涉及到几个障碍,其中大部分都是我能够以某种方式克服的:
-
标准Azure DevOps git环境没有所需的配置值"user.email"和"user.name" set;这可以通过在推送之前在单独的"Command Line Script"任务中调用
git config
来解决 . -
Azure DevOps检出"detached HEAD state"中的来源 - 为解决此问题,安装脚本任务也调用
git checkout master
.
设置完成后,我的Maven调用脚本会运行到释放插件尝试推送到Git的位置;日志文件中的相应行读取
[INFO] Executing: cmd.exe /X /C "git push https://xxx.visualstudio.com/YYY/_git/zzz refs/heads/master:refs/heads/master"
[INFO] Working directory: D:\a\1\s</code>
之后,在超时发生之前没有任何反应(至少没有记录任何内容):
##[error]The operation was canceled.
##[section]Finishing: Maven pom.xml
为了找出导致这个问题的原因,我尝试了一些事情,其中包括:
-
禁用maven调用并直接从脚本调用
git push
, -
注册"store"类型的Git凭证助手(假设认证问题导致超时),
但没有成功 . 我现在已经没有想法如何让 git push
工作了 - 有谁在这里可以帮助我吗?
P.S . :你可能会说,就Azure DevOps而言,我是一个新手,所以我肯定不知道该系统的所有技巧和功能 . 特别是,我不知道是否有任何东西提供与Maven发布插件相同的功能 . 我们确实使用Azure DevOps包管理,但我们希望为快照和发布版本(Nexus等工具的方式)保留单独的订阅源,因此我们必须有一个机制来自动推进版本号,签出和返回构建包装模块并将其发布到发布订阅源 .
如果有人可以提出另一种方法来实现这一点,我也愿意接受建议 .
1 回答
要将更改推送到Azure DevOps,您应该 integrate your credential in Git repo URL :
首先,如果没有,请创建一个PAT .
然后使用以下命令推送: