jpv*_*vee 6 git maven maven-release-plugin azure-devops azure-pipelines
精简版
有人能告诉我如何在Azure DevOps构建管道中设置"命令行脚本"任务,该管道将更改推送到本地Git存储库(事实上,管道所基于的Git存储库)?
无论我尝试什么,我的脚本总是在打印后超时Pushing commits to git.
更长的版本
我们正在将现有的Java/Maven项目从Jenkins构建服务器迁移到Azure DevOps构建环境,我正在尝试设置一个模仿Jenkins"Release Staging"功能的构建管道.
我的第一次尝试是直接在签出的源上调用Maven发布插件.这涉及到几个障碍,其中大部分都是我能够以某种方式克服的:
git config在推送之前调用单独的"命令行脚本"任务来解决.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>
Run Code Online (Sandbox Code Playgroud)
之后,在超时发生之前没有任何事情发生(至少没有记录任何内容):
##[error]The operation was canceled.
##[section]Finishing: Maven pom.xml
Run Code Online (Sandbox Code Playgroud)
为了找出导致这个问题的原因,我尝试了一些事情,其中包括:
git push直接从脚本调用,但没有成功.我现在已经没有想法如何git push接到工作电话了 - 这里是否有人可以帮助我?
PS:你可能会说,就Azure DevOps而言,我是一个新手,所以我肯定不知道该系统的所有技巧和功能.特别是,我不知道是否有任何东西提供与Maven发布插件相同的功能.我们确实使用Azure DevOps包管理,但我们希望为快照和发布版本(Nexus等工具的方式)保留单独的订阅源,因此我们必须有一个机制来自动推进版本号,签出和返回构建包装模块并将其发布到发布订阅源.
如果有人可以提出另一种方法来实现这一点,我也愿意接受建议.
gre*_*smi 12
根据此,您不必走PAT路线进行身份验证- 如果您的存储库与构建管道属于同一Azure DevOps项目的一部分,则凭据应随处可见。您是否可能未授权构建代理写入您的存储库?需要两件事:
在您的Azure DevOps项目的“ 项目设置”->“存储库 ”下,允许“ 项目集合生成服务”实体“ 贡献者”权限拥有适当的存储库(或所有项目存储库)。
允许脚本在“代理作业”设置下访问OAuth令牌:
还要注意一个糟糕的陷阱:这不适用于子模块操作,因为DevOps不会自动将凭据传递到子模块实例,唯一的症状是无声挂起。在此处找到手动流动凭证的解决方法。
sid*_*uko 12
对于 Azure Devops 现在的工作方式,答案已经过时。要在您的管道中启用授权,您应该在您的步骤中使用checkout架构属性,以便您可以为以后的 git 命令保留凭据。
- checkout: self
persistCredentials: true
Run Code Online (Sandbox Code Playgroud)
要将更改推送到 Azure DevOps,您应该将您的凭据集成到 Git 存储库 URL 中:
然后使用以下命令进行推送:
git push https://Personal%20Access%20Token:PAT@xxx.visualstudio.com/YYY/_git/zzz master
Run Code Online (Sandbox Code Playgroud)