Извините, я новичок в Azure DevOps (обычно я использую Github Actions, и, к сожалению, мне было поручено сделать это в AzureDevOps) В любом случае, мне было интересно, можно ли автоматически увеличивать теги, которые у меня есть в моей ветке, после успешного развертывания? Вот моя текущая настройка в AzureDevOps.

  - script: |
    LastStableTag=`git tag -l testTag_v* --sort=creatordate | tail -n1`
    echo $LastStableTag
    CurrentCommitID=`git rev-parse --verify HEAD`
    echo $CurrentCommitID 
    npx sfdx sfpowerkit:project:diff -t $CurrentCommitID -r $LastStableTag -d delta
  displayName: 'Generate Delta'

По сути, я получаю разницу в компонентах Salesforce между Feature Branch и Dev Branch (которая основана на последнем теге). Сначала проверьте его, затем, когда он будет пройден и будет объединен, запустится другой конвейер и выполнит фактическое развертывание.

В GitHub Actions это код, который я использовал для увеличения тегов, увеличения и вывода следующей версии. Я пытался сделать это в Azure DevOps, но застрял и не знаю, что делать дальше. Есть ли способ сделать это в Azure DevOps? Или мне следует использовать другой подход? Любая помощь будет очень признательна! Спасибо.

- name: Get next version
  run: |
       CurrentVersion=`git tag -l testtag_v* --sort=creatordate | tail -n1 | awk -F'v' '{print $2}'`
       echo CURRENT VERSION: $CurrentVersion
       major=`echo $current_version | cut -d'.' -f 1`
       minor=`echo $current_version | cut -d'.' -f 2`
       minor=`expr $minor + 1`
       patch=`echo $current_version | cut -d'.' -f 3`
       NextVersion=`echo $major.$minor.$patch`
       echo NEXT VERSION: $NextVersion
       echo "::set-output name=next_version::$(echo $NextVersion)"
  id: NextVersion
  
- name: Zip delta folder
  run: |
       zip -r delta.zip delta/
       
- name: Bump version and push tag
  uses: "marvinpinto/action-automatic-releases@latest"
  with:
      repo_token: "secrets"
      prerelease: true
      automatic_release_tag: "testtag_v${{ steps.next_version.outputs.NextVersion }}"
      files: |
        delta.zip
0
Percy Jackson 3 Дек 2020 в 09:49

1 ответ

Лучший ответ

Мы могли бы создать тег с помощью этого REST API

Шаги:

Мы могли бы сослаться на это doc для создания токена PAT.

Откройте определение конвейера сборки-> щелкните вкладку переменная-> добавьте переменную pat и установите значение secret.

enter image description here

Добавьте командную оболочку задачи и введите приведенный ниже сценарий

$connectionToken="$(pat)"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$URL = "$($env:SYSTEM_TEAMFOUNDATIONSERVERURI)$env:BUILD_REPOSITORY_NAME/_apis/git/repositories/$($env:BUILD_REPOSITORY_ID)/annotatedtags?api-version=5.1-preview.1" 

Write-Host "Hello World" $URL

Write-Host "Hello World" $($env:BUILD_SOURCEVERSION)


$Body = @"
{
  "message": "test",
  "name": "Just",
  "taggedObject": {
    "objectId": "$($env:BUILD_SOURCEVERSION)"
  }
}
"@

Write-Host "Hello World" $Body


$Response = Invoke-RestMethod -Uri $URL -ContentType "application/json" -Body $Body  -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST

Примечание: objectID - это идентификатор фиксации.

Кстати, мы могли бы добавить задачу bash и ввести в скрипт printenv, чтобы вывести список всех переменных env, а затем заменить поле переменной env.

Результат:

enter image description here

Обновление1

Мы могли бы получить существующий тег с помощью этого REST API, формат вашего тега - Testtag-v1.0.0, мы могли бы добавить for each в сценарий Power Shell для увеличения тега, а затем установить значение на тело запроса name. Или, если вы добавите тег, зафиксируйте тег через запрос на перенос, мы могли бы получить тег и затем установить его. Вы можете обратиться к этому ответ, чтобы получить дополнительные сведения.

0
Vito Liu-MSFT 4 Дек 2020 в 05:43