diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9224321 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.#* +.\#* diff --git a/src/is/sudo/jenkins/Utils.groovy b/src/is/sudo/jenkins/Utils.groovy new file mode 100644 index 0000000..8ace87e --- /dev/null +++ b/src/is/sudo/jenkins/Utils.groovy @@ -0,0 +1,42 @@ +package is.sudo.jenkins + +import com.cloudbees.groovy.cps.NonCPS + +class Utils { + @NonCPS + static String default_or_value(String value, String defval) { + if (value == null) { + return defval + } + return value + } + + @NonCPS + static String dockerhub_account(String account) { + if (account == null) { + return "benediktkr" + } + return account + } + + @NonCPS + static String docker_image_name(String project) { + return Utils.docker_image_name(project, null) + } + + @NonCPS + static String trim_docker_postfix(String repo) { + if (repo.endsWith("-docker")) { + return repo.substring(0, repo.indexOf("-docker")) + } + return repo + } + + @NonCPS + static String docker_image_name(String repo, String account) { + + def imgname = Utils.trim_docker_postfix(repo) + def acc = Utils.dockerhub_account(account) + return "${acc}/${imgname}" + } +} diff --git a/vars/dockerimg.groovy b/vars/dockerimg.groovy new file mode 100644 index 0000000..e69771f --- /dev/null +++ b/vars/dockerimg.groovy @@ -0,0 +1,50 @@ +import is.sudo.jenkins.Utils + +def call(Map config) { + + String repo = "${env.JOB_NAME.split('/')[1]}" + String crontab = Utils.default_or_value(config.cron, "") + + pipeline { + agent any + + triggers { + cron crontab + } + options { + timestamps() + ansiColor("xterm") + disableConcurrentBuilds() + } + + environment { + DOCKER_NAME=Utils.docker_image_name(repo) + DOCKER_TAG=Utils.default_or_value(config.tag, "latest") + } + stages { + + stage('build') { + steps { + sh "docker build -t ${DOCKER_NAME}:${DOCKER_TAG} ." + } + } + + stage('push') { + steps { + sh "docker push ${DOCKER_NAME}:${DOCKER_TAG}" + } + } + + stage('push version tag') { + when { + tag "v*" + } + steps { + sh "docker tag ${DOCKER_NAME}:${DOCKER_TAG} ${DOCKER_NAME}:${TAG_NAME}" + sh "docker push ${DOCKER_NAME}:${TAG_NAME}" + } + } + + } + } +}