semantic/semantic.groovy

64 lines
2.0 KiB
Groovy

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
}