在VSTS / Azure DevOps中推送时将构建定义镜像存储库镜像到外部git存储库

时间:2018-09-28 22:45:04

标签: git azure-devops azure-pipelines custom-build-step git-mirror

正如标题所示,在VSTS / Azure DevOps中进行构建步骤时遇到问题,当我按ie时,我想在其中更新外部git repo。我的发布或主分支。我已经尝试了几种来自市场的附加组件,但是似乎没有一个适合我的需求。我有一些先决条件:

  • 我的外部git位于端口33后面
  • 我的外部git只接受SSH密钥作为身份验证,因此我需要将SSH私钥存储在某个地方,以便能够推送到外部源。

由于内置的​​镜像功能,我也尝试了Gitlab,但不幸的是,它不接受端口33,仅接受22和其他标准端口:-(

非常感谢您!

1 个答案:

答案 0 :(得分:0)

如果'Build.SourceBranch'与'master'或'release'相匹配,则可以添加带有条件的PowerShell Build步骤,然后PowerShell脚本类似于此示例。  一口气推动了所有事情,而不是每次提交。这也可以赶上后面的回购。

# Test to see if remote alias already exists
git ls-remote ssh://user@host:1234/srv/git/TargetRepoSameName
# Add a remote alias
git remote add any_name_123 ssh://user@host:1234/srv/git/TargetRepoSameName

# push local repo to 'any_name_123'
git push any_name_123 --all
# optional: delete all tags before attempting to push local tags
git push any_name_123 --delete `$(git tag -l)
# push local tags to remote repo 
git push any_name_123 --tags

请注意,我正在使用端口号1234,而如果未指定端口,则默认为22。请在您的整体解决方案中使用此代码段。您还可以使用git-hook推送更改。