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