diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml index dcbd83390e948c886a821324fcb8ccc9d466043d..8420da8b0b2050ee2d0378b4517a710b72a84dbe 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml @@ -51,7 +51,7 @@ </userRemoteConfigs> <branches> <hudson.plugins.git.BranchSpec> - <name>final-variable-refac</name> + <name>${public_repo_branch}</name> </hudson.plugins.git.BranchSpec> </branches> <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations> @@ -71,4 +71,4 @@ </definition> <triggers/> <disabled>false</disabled> -</flow-definition> \ No newline at end of file +</flow-definition> diff --git a/pipelines/release/Jenkinsfile.public.tag b/pipelines/release/Jenkinsfile.public.tag index 443bb0d3d92025140a2de37c9998d3c7be2fb961..5f5a7f4ec12aad954f4c43c3c530be3367e53a50 100644 --- a/pipelines/release/Jenkinsfile.public.tag +++ b/pipelines/release/Jenkinsfile.public.tag @@ -29,6 +29,8 @@ node { String ANSI_NORMAL = "\u001B[0m" String ANSI_BOLD = "\u001B[1m" String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + if (params.size() == 0) { repoList = "['" + repositories.join("','") + "']" @@ -42,33 +44,85 @@ node { error 'Error: Release branch name format error' } - if(params.repositories == '') - { + if (params.repositories == '') { print(ANSI_BOLD + ANSI_RED + "Uh oh! No repositories are selected!" + ANSI_NORMAL) error 'No repositories selected' } stage('Create tag') { sh """ - mkdir -p ${JENKINS_HOME}/tags - touch -a ${JENKINS_HOME}/tags/tags.txt + mkdir -p ${JENKINS_HOME}/public_release_tags + touch -a ${JENKINS_HOME}/public_release_tags/public_release_tags.txt """ cleanWs() + releaseBranch = params.release_branch + releaseVar = releaseBranch.split('-')[0] + majorVar = releaseBranch.split('-')[1].split('\\.')[0] + minorVar = releaseBranch.split('-')[1].split('\\.')[1] + releaseBranch = releaseVar + "-" + majorVar + "." + minorVar + params.repositories.split(',').each { repo -> dir("$WORKSPACE") { repo_name = repo.split('/')[1] sh "git clone --depth 1 --no-single-branch https://github.com/$repo $repo_name" dir("$repo_name") { + latestBranch = sh(returnStdout: true, script: "git ls-remote --exit-code --heads origin $releaseBranch* | awk -F \"/\" '{print \$3}' | sort -V -r | head -1").trim() + println latestBranch + + if (latestBranch == '') { + println(ANSI_BOLD + ANSI_RED + params.release_branch + " branch and its patterns do not exists" + ANSI_NORMAL) + error 'Error: Release branch does not exists' + } + + withCredentials([usernamePassword(credentialsId: env.githubPassword, passwordVariable: 'gitpass', usernameVariable: 'gituser')]) { + origin = "https://${gituser}:${gitpass}@" + sh(script: 'git config --get remote.origin.url', returnStdout: true).trim().split('https://')[1] + echo "Git Hash: ${origin}" + latestTag = sh(script: "git ls-remote --tags origin \"$releaseBranch*\" | grep -v \"RC\" | awk -F \"/\" '{print \$3}' | sort -V -r | grep ^release.*[0-9]\$ | head -1", returnStdout: true).trim() + println latestTag + + if (latestTag == '') { + branchLength = latestBranch.split('-')[1].split('\\.').length + if (branchLength == 2) { + println ANSI_BOLD + ANSI_YELLOW + "Branch is not in major.minor.patch format. Appending patch.." + ANSI_NORMAL + latestAppendBranch = latestBranch + ".0" + println latestAppendBranch + } + sh("git push ${origin} refs/remotes/origin/$latestBranch:refs/tags/$latestAppendBranch") + } + else { + println(ANSI_BOLD + ANSI_GREEN + "Remote has same tag name. Incrementing and creating tag!" + ANSI_NORMAL) + + tagLength = latestTag.split('-')[1].split('\\.').length + if (tagLength == 2) { + println ANSI_BOLD + ANSI_YELLOW + "Tag is not in major.minor.patch format. Appending patch.." + ANSI_NORMAL + latestTag = latestTag + ".0" + println latestTag + } + releaseVar = latestTag.split('-')[0] + majorVar = latestTag.split('-')[1].split('\\.')[0] + minorVar = latestTag.split('-')[1].split('\\.')[1] + patchVar = latestTag.split('-')[1].split('\\.')[2] + patchVar = patchVar.toInteger() + 1 + tagToPush = releaseVar + "-" + majorVar + "." + minorVar + "." + patchVar + println tagToPush + sh("git push ${origin} refs/remotes/origin/$latestBranch:refs/tags/$tagToPush") + latestTag = tagToPush + } } + sh """ + sed -i "s/${repo_name}.*//g" ${JENKINS_HOME}/public_release_tags/public_release_tags.txt + sed -i "/^\\\$/d" ${JENKINS_HOME}/public_release_tags/public_release_tags.txt + echo "$repo_name : $latestTag" >> ${JENKINS_HOME}/public_release_tags/public_release_tags.txt + """ } } } } stage('Archive artifacts') { - sh "cp ${JENKINS_HOME}/tags/tags.txt ." - sh "sort tags.txt -o tags.txt && cat tags.txt" - archiveArtifacts artifacts: 'tags.txt', fingerprint: true + sh "cp ${JENKINS_HOME}/public_release_tags/public_release_tags.txt ." + sh "sort public_release_tags.txt -o public_release_tags.txt && cat public_release_tags.txt" + archiveArtifacts artifacts: 'public_release_tags.txt', fingerprint: true } } }