From 9872f10b68a007ab536c1896e87627920059e0c9 Mon Sep 17 00:00:00 2001 From: Kiran Challa Date: Mon, 7 Oct 2019 15:53:39 -0700 Subject: [PATCH] Updated release pipeline script to create tags for releases off patch branches in the format: 20190730.1-patch1 --- .../templates/_releaseJobTemplate.yml | 6 +++- vsts/scripts/createReleaseTag.sh | 34 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100755 vsts/scripts/createReleaseTag.sh diff --git a/vsts/pipelines/templates/_releaseJobTemplate.yml b/vsts/pipelines/templates/_releaseJobTemplate.yml index 5c57e4fb5a..0957e9ae8c 100644 --- a/vsts/pipelines/templates/_releaseJobTemplate.yml +++ b/vsts/pipelines/templates/_releaseJobTemplate.yml @@ -45,10 +45,14 @@ jobs: inputs: artifactName: drop + - task: ShellScript@2 + inputs: + scriptPath: vsts/scripts/createReleaseTag.sh + - task: GitHubRelease@0 displayName: 'GitHub release (create)' inputs: gitHubConnection: 'Oryx-GitHub' repositoryName: Microsoft/Oryx tagSource: manual - tag: '$(Build.BuildNumber)' \ No newline at end of file + tag: '$(ReleaseTagName)' \ No newline at end of file diff --git a/vsts/scripts/createReleaseTag.sh b/vsts/scripts/createReleaseTag.sh new file mode 100755 index 0000000000..402c103d72 --- /dev/null +++ b/vsts/scripts/createReleaseTag.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -ex +sourceBranch="$BUILD_SOURCEBRANCHNAME" + +if [ "$sourceBranch" == "master" ]; then + echo "##vso[task.setvariable variable=ReleaseTagName;]$BUILD_BUILDNUMBER" +elif [[ "$sourceBranch" == patch/* ]]; then + IFS=/ + read -ra branchNameParts <<< "$sourceBranch" + + # Name of the tag which is being patched (ex: 20190730.1) + patchedTagName=${branchNameParts[1]} + + # We want tags for patch releases in the format: 20190730.1-patch1, 20190730.1-patch2 etc. + baseReleaseTagUrl="https://github.com/microsoft/Oryx/releases/tag" + patchNumber=0 + + # Increment patch numbers until we find one for which we have not created a release already + while true; do + patchNumber=$((patchNumber + 1)) + fullPatchTagName="$patchedTagName-patch$patchNumber" + releaseUrl="$baseReleaseTagUrl/$fullPatchTagName" + + curl -I "$releaseUrl" 1> /tmp/createReleaseTag.txt 2> /dev/null + grep "HTTP/1.1 404 Not Found" /tmp/createReleaseTag.txt &> /dev/null + exitCode=$? + rm -f /tmp/createReleaseTag.txt + if [ $exitCode -eq 0 ]; then + echo "##vso[task.setvariable variable=ReleaseTagName;]$fullPatchTagName" + break + fi + done +fi \ No newline at end of file