在Azure管道中使用git命令时出错

时间:2020-07-27 10:02:40

标签: github azure-devops azure-pipelines

我正在为Windows自助代理上运行的dotnet核心项目开发Azure管道。 我希望我的管道使用Git命令检出release分支并将develop分支合并到其中。下一步将建立发布分支并部署到Intranet服务器

我不知道Git的用语很好,我使用TFS已有多年了。我使用下面的命令并获得了日志here

- task: CmdLine@2
  displayName: Checkout Release branch
  inputs:
    script: |
      @echo off
      git checkout release
      git pull develop
      git status

从日志中,我了解:

  • 它下载developer分支的内容,因为它是GitHub中的默认分支,我希望使用release分支,但我相信Azure就是这样
  • 我设法切换到发布版本,但存在一些我不了解的错误: ## [错误]先前的HEAD位置为bc94bd2更新登台构建Pipeline.yml ## [错误]切换到分支“发布”
  • 我了解到pull可以与本地或远程分支一起使用,所以我使用它来提取并将dev分支合并到release分支,但是我得到:[错误]致命:'develop'似乎不是git存储库
  • 我是否必须在每次git调用时指定凭据?
  • 在最后一步,它再次从developer分支获取了代码,我明白了为什么

如果您可以帮助我改善脚本,那就太好了, 非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用git merge命令来合并分支。要将dev分支合并到release分支,可以使用git merge origin/develop。查看document了解更多信息。参见以下示例:

steps:
- checkout: self
  persistCredentials: true
- task: cmdLine@2
  inputs:
    script: |
      @echo off
      git checkout release
      git merge origin/develop
      git status 

但是,不建议以上述方式部署发布分支。您可以将Azure管道的默认分支更改为release分支,并为发布分支启用Continuous Integration trigger

因此您可以创建一个pull request来将开发合并到github UI或使用命令来发布。将development合并到release中之后,azure管道将自动触发以从release分支进行部署。 注意:azure管道yaml文件也必须存在于发行分支中。请参见以下步骤:

1,要将Azure管道分支从“开发”更改为“发布”:

在天蓝色的devops管道的编辑页上,单击 3点,然后单击触发器

enter image description here

转到 YAML 标签-> 获取来源->单击 3点更改默认分支。

enter image description here

2,为发布分支设置CI触发器

在azure管道yaml文件中,将触发器设置为包括发布分支(也可以设置PR trigger):

(实际上,您无需按照上述步骤来更改默认分支。您只需在发布分支中包含azure管道yaml文件,并将CI触发器设置为包括发布分支,如下所示)

 trigger:
   branches:
     include:
     - release
     exclude:
     - develop #if you want disable CI trigger for develop branch

通过添加CI触发器以将发布分支包含在azure管道yaml文件中。从开发合并到发布分支时,将自动在发布分支上触发Azure管道。