[英]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.