当前位置: 首页 > 知识库问答 >
问题:

Azure Devops Pipeline YAML中的Git标记名称

终翔
2023-03-14

总结

如何在Azure Devops管道YAML文件中获取当前git标记的名称?

我想做什么?

我正在Azure Devops中设置构建管道。当创建新的git标记时,管道将触发。然后我想构建docker图像并用git标记的名称标记它们。

我的YAML管道如下所示:

# Trigger on new tags.
trigger:
  tags:
    include:
    - '*'

stages:
- stage: Build
  jobs:
  - job: Build
    pool:
      vmImage: 'ubuntu-latest'

    steps:
    - script: export VERSION_TAG={{ SOMEHOW GET THE VERSION TAG HERE?? }}
      displayName: Set the git tag name as environment variable

    - script: docker-compose -f k8s/docker-compose.yml build
      displayName: 'Build docker containers'

    - script: docker-compose -f k8s/docker-compose.yml push
      displayName: 'Push docker containers'

我所引用的docker-comment文件是这样的:

version: '3'
services:
  service1:
    image: my.privaterepo.example/app/service1:${VERSION_TAG}
    build:
      [ ... REDACTED ]
  service2:
    image: my.privaterepo.example/app/service2:${VERSION_TAG}
    build:
      [ ... REDACTED ]

如您所见,docker-comple文件中的标记名称取自环境变量VERSION_TAG。在YAML管道中,我试图根据当前的GIT标记设置环境变量VERSION_TAG。那么...我怎么知道标签的名字?

共有2个答案

汤嘉平
2023-03-14

对于windows vm,您可以使用以下脚本获取标记:

steps:
- powershell: |
   $CI_BUILD_TAG = git describe --tags
   Write-Host "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
  displayName: 'Set the tag name as an environment variable'
龚凯泽
2023-03-14

好吧,这比我想象的要复杂一些。以下是设置变量所需的步骤:

steps:
    - script: VERSION_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=VERSION_TAG]$VERSION_TAG"
      displayName: Set the tag name as an environment variable

此脚本将变量VERSION_TAG设置为最新git标记的名称。它分三个步骤:

1:git描述--tags

打印当前/最新标记的名称

2:VERSION_TAG='...'

将步骤1的输出设置为局部变量

3:echo“##vso[task.setvariable=VERSION\u TAG]$VERSION\u TAG”

打印出在Azure Devops中设置变量的命令。步骤2中设置的局部变量用作值。

 类似资料:
  • 当前分支没有跟踪信息。请指定要与哪个分支合并。详见git-pull(1) 如果要设置此分支的跟踪信息,可以使用以下方法: 我希望只更新主分支,而不更新我当前的分支(反正它是一个标记)。这样的事情可能发生吗? 我需要这样做的原因是我有一个自动脚本,它总是git拉出存储库,当然会因为上面的错误而失败…

  • 我在一个字符串变量中有一个这样的XML文件 ============================================= 我一直在将XML作为字符串传递给我的servlet /*受保护的无效服务(HttpServletRequest请求,HttpServlet响应)抛出ServletExcture,IOExcense{

  • 我试着为html标题标签(h1,h2,h3等)写一个React组件,其中标题优先级根据我们在props中定义的优先级动态变化。 这就是我要做的。

  • 这是我在这里的第一篇帖子。。。 我正在尝试使用Hy中的赋值(在Python 3上运行)来更改XML元素。 当我尝试运行代码段时: 我得到一个错误: Traceback(最近一次调用):File"/usr/bin/hy",第9行,load_entry_point('hy==0.11.0','console_scripts','hy')()File"/usr/lib/python3/dist-包/hy

  • 我正面临一个与下面显示的代码的问题。下面的代码生成json,如下所示: [{“id”:123,“科目”:“英语”},{“id”:456,“科目”:“数学”}] 我们可以看到生成的JSON中缺少name标记。我不明白当我返回Student列表时,结果的json应该包含name标记,因为Student类中有一个类型为“name”的属性。请救命! 学生豆类: 命名Bean类:

  • 有人能对此有个想法吗?