docker image pipeline #1

Merged
ben merged 19 commits from dev into master 2021-02-09 16:25:45 +00:00
3 changed files with 94 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.#*
.\#*

View File

@ -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}"
}
}

50
vars/dockerimg.groovy Normal file
View File

@ -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}"
}
}
}
}
}