簡體   English   中英

Azure Devops Pipeline YAML中的Git標記名稱

[英]Git tag name in Azure Devops Pipeline YAML

摘要

如何在Azure Devops Pipeline 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-compose文件我引用的是這樣的:

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-compose文件中的標簽名稱來自環境變量VERSION_TAG 在YAML管道中,我試圖基於當前的GIT標簽設置環境變量VERSION_TAG 那么...如何獲得標簽名稱?

好的,這比我預期的要復雜一些。 這是設置變量所需的步驟:

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 describe --tags

打印當前/最新標簽的名稱

2: VERSION_TAG=`...`

將步驟1的輸出設置為局部變量

3: echo "##vso[task.setvariable variable=VERSION_TAG]$VERSION_TAG"

打印出在Azure Devops中設置變量的命令。 將步驟2中設置的局部變量用作值。

對於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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM