docker image pipeline #1
|
@ -0,0 +1,2 @@
|
|||
.#*
|
||||
.\#*
|
|
@ -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}"
|
||||
}
|
||||
}
|
|
@ -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}"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue