将凭据集成到Git存储库URL中>>]
短版
谁能告诉我如何在Azure DevOps构建管道中设置“命令行脚本”任务,以将更改推送到本地Git存储库(实际上,管道所基于的Git存储库)?
无论我如何尝试,我的脚本在打印[Pushing commits to git
后总是超时。
Longer version
我们正在将现有的Java / Maven项目从Jenkins构建服务器迁移到Azure DevOps构建环境,并且我正在尝试建立一个模仿Jenkins“发布阶段”功能的构建管道。
我的第一次尝试是直接在检出的源上调用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>
此后,直到超时发生,什么都没有发生(至少没有任何记录):>
##[error]The operation was canceled. ##[section]Finishing: Maven pom.xml
为了找出导致此问题的原因,我尝试了其他一些方法,
git push
,>但没有成功。我现在想法不多了,如何可以拨打git push
电话上班-这里有人可以帮助我吗?
P.S .:您可能会说,就Azure DevOps而言,我是个新手,因此我当然不知道该系统的所有技巧和功能。特别是,我不知道是否有任何功能与Maven发布插件具有相同的功能。我们确实使用了Azure DevOps软件包管理,但是我们希望为快照和发行版本保留单独的提要(如Nexus这样的工具),因此我们必须具有一种机制,可以自动提前发行版本号,签入和签入以及构建打包的模块并将其发布到发布提要。
[如果有人可以建议实现此目标的另一种方法,我也可以提出建议。
简短版本有人可以告诉我如何在Azure DevOps构建管道中设置“命令行脚本”任务,该任务将更改推送到本地Git存储库(实际上是在其上的Git存储库...
< [将凭据集成到Git存储库URL中>>]
git push https://Personal%20Access%20Token:[email protected]/YYY/_git/zzz master
您不必走PAT路线进行身份验证-根据this,如果您的回购与构建管道属于同一Azure DevOps项目的一部分,则凭据就应该流动。您是否可能未授权构建代理写入您的存储库?需要两件事:适当的存储库(或所有项目存储库)的权限。实体贡献者
- 在您的Azure DevOps项目的
项目设置->存储库]下,允许项目集合生成服务
允许脚本在“代理作业”设置下访问OAuth令牌: 还要注意一个糟糕的陷阱:这对于子模块操作将不起作用,因为DevOps不会自动将凭据传递到子模块实例,并且唯一的症状就是无声的挂起。找到手动流动凭证的解决方法here。
即使正确设置了允许脚本访问OAuth令牌以及回购权限,我在内部DevOps Server中也遇到了相同的问题(git push会挂起直到超时)。>就我而言,问题是Build Agent在PATH环境变量的开头添加了一个路径-对我来说,它是'C:\ ins \ agent \ externals \ git \ cmd \'。这里驻留了一个旧的git版本(git版本2.18.0.windows.1),并在构建代理的管道上下文中启动了该版本。您可以通过在构建任务中添加“ git --version”调用来验证这一点。
我还没有调查为什么旧的git版本不起作用,而只是在管道任务中对最新的git.exe使用了完整路径限定
“ C:\ Program Files \ Git \ bin \ git.exe”推送源主机
并且使用此git版本-当前的“ git版本2.24.0.windows.2”一切正常。当然,使用较新的git.exe将您的Build Agent更新到一个版本也应该可以解决此问题。
将凭据集成到Git存储库URL中>>]
项目设置->存储库]下,允许项目集合生成服务
就我而言,问题是Build Agent在PATH环境变量的开头添加了一个路径-对我来说,它是'C:\ ins \ agent \ externals \ git \ cmd \'。这里驻留了一个旧的git版本(git版本2.18.0.windows.1),并在构建代理的管道上下文中启动了该版本。您可以通过在构建任务中添加“ git --version”调用来验证这一点。
我还没有调查为什么旧的git版本不起作用,而只是在管道任务中对最新的git.exe使用了完整路径限定
“ C:\ Program Files \ Git \ bin \ git.exe”推送源主机
并且使用此git版本-当前的“ git版本2.24.0.windows.2”一切正常。当然,使用较新的git.exe将您的Build Agent更新到一个版本也应该可以解决此问题。