【发布时间】:2019-02-21 06:20:49
【问题描述】:
短版
谁能告诉我如何在 Azure DevOps 构建管道中设置“命令行脚本”任务,将更改推送到本地 Git 存储库(实际上是管道所基于的 Git 存储库)?
无论我尝试什么,我的脚本在打印后总是超时Pushing commits to git。
加长版
我们正在将现有的 Java/Maven 项目从 Jenkins 构建服务器迁移到 Azure DevOps 构建环境,并且我正在尝试设置一个模仿 Jenkins“发布暂存”功能的构建管道。
我的第一次尝试是直接在签出的源上调用 Maven 发布插件。这涉及到几个障碍,其中大部分我都能以一种或另一种方式克服:
- 标准的 Azure DevOps git 环境没有设置所需的配置值“user.email”和“user.name”;这可以通过在推送之前在单独的“命令行脚本”任务中调用
git config来解决。 - Azure DevOps 以“分离的 HEAD 状态”检出源 - 为解决此问题,设置脚本任务还调用
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, - 注册“存储”类型的 Git 凭证助手(假设身份验证问题导致超时),
但没有成功。我现在想不出如何让git push 工作了 - 有没有人可以帮助我?
P.S.:您可能会说,就 Azure DevOps 而言,我是一个新手,所以我肯定不知道该系统的所有技巧和功能。特别是,我不知道是否有任何东西可以提供与 Maven 发布插件相同的功能。我们确实使用 Azure DevOps 包管理,但我们希望为快照和发布版本保留单独的提要(就像 Nexus 等工具所做的那样),因此我们必须有一种机制来自动推进发布号、签出和签入以及构建打包的模块并将其发布到发布提要。
如果有人可以提出替代方法来实现这一目标,我也愿意接受建议。
【问题讨论】:
标签: git maven azure-devops azure-pipelines maven-release-plugin