def downloadHelpers(String gitBase, String path) { sh "curl -L ${gitBase}/Jenkins/jenkins-tools/raw/branch/master/helpers.groovy -o $path" } def downloadReleaseConfig(String gitBase, String path) { sh "curl -L ${gitBase}/Jenkins/semantic/raw/branch/main/release.config.cjs -o $path" } def semanticGetContainerTemplate() { return containerTemplate(name: semanticGetContainerName(), image: "goodhumored/semantic-release-dipal:0.1.1-alpine", command: "sleep", args: "99d", NodeSelector: "kubernetes.io/os=linux") } def semanticGetContainerName() { return "semantic-release" } def semanticStage(String stageName, String containerName, Closure body) { stage(stageName) { container(containerName) { sh "git config --global --add safe.directory \$(pwd)" } } } def semanticExec(String giteaUrl) { downloadReleaseConfig(giteaUrl, "./release.config.cjs") sh "GITEA_URL=${giteaUrl} semantic-release --ci" } def semanticSyncDev(String currentBranch, String devBranch) { if (currentBranch == "main" || currentBranch == "master") { sh "git checkout ${devBranch}" sh "git pull origin" sh "git merge ${currentBranch} -m 'Merge versioning [skip ci]'" sh "git push origin ${devBranch}" sh "git checkout ${currentBranch}" } } def semantic( String stageName, String giteaTokenCredId, String giteaCredId, String giteaUrl, String currentBranch, String devBranch, ) { semanticStage(stageName, semanticGetContainerName()) { withCredentials([ usernamePassword(credentialsId: giteaCredId, usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS'), usernameColonPassword(credentialsId: giteaCredId, variable: 'GIT_CREDENTIALS'), string(credentialsId: giteaTokenCredId, variable: "GITEA_TOKEN"), ]) { semanticExec(giteaUrl) semanticSyncDev(currentBranch, devBranch) } } } def semanticGetVersion() { def version = sh(script: 'git describe --tags --abbrev=0', returnStdout: true).trim() return version }