-
Notifications
You must be signed in to change notification settings - Fork 26
/
Jenkinsfile
100 lines (99 loc) · 2.89 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
void setBuildStatus(String message, String state) {
step([
$class: "GitHubCommitStatusSetter",
reposSource: [$class: "ManuallyEnteredRepositorySource", url: "${env.GIT_URL}"],
contextSource: [$class: "ManuallyEnteredCommitContextSource", context: "ci/docker/solr-k8s"],
errorHandlers: [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]],
statusResultSource: [ $class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]] ]
]);
}
pipeline {
agent any
environment {
DOCKER_IMAGE_NAME = "iqss/solr-k8s"
DOCKER_IMAGE_TAG = "build-${env.BRANCH_NAME}"
DOCKER_WORKDIR = "docker/solr-k8s"
DOCKER_HUB_CRED = "dockerhub-dataversebot"
DOCKER_REGISTRY = "https://registry.hub.docker.com"
}
triggers {
cron('H H(0-4) * * *')
githubPush()
}
stages {
stage('checkout') {
steps { checkout scm }
}
stage('build') {
when {
anyOf {
changeset "docker/solr-k8s/**"
triggeredBy 'TimerTrigger'
triggeredBy cause: "UserIdCause"
tag ""
}
}
steps {
script {
docker_image = docker.build("${env.DOCKER_IMAGE_NAME}:${env.DOCKER_IMAGE_TAG}", "--pull ${env.DOCKER_WORKDIR}")
}
}
}
stage('push') {
when {
anyOf {
changeset "docker/solr-k8s/**"
changeset "docs/images/solr-k8s.md"
triggeredBy 'TimerTrigger'
triggeredBy cause: "UserIdCause"
tag ""
}
}
parallel {
stage('release') {
when {
tag "v4.*"
}
environment {
DOCKER_IMAGE_TAG = "${TAG_NAME.substring(1)}"
}
steps {
script {
docker.withRegistry("${env.DOCKER_REGISTRY}", "${env.DOCKER_HUB_CRED}") {
docker_image.push("${env.DOCKER_IMAGE_TAG}")
}
}
}
}
stage('latest') {
when {
branch 'release'
}
environment {
// credentials() will magically add DOCKER_HUB_USR and DOCKER_HUB_PSW
// See also https://jenkins.io/doc/book/pipeline/jenkinsfile/#usernames-and-passwords
DOCKER_HUB = credentials("${env.DOCKER_HUB_CRED}")
}
steps {
script {
// Push release image to latest tag
docker.withRegistry("${env.DOCKER_REGISTRY}", "${env.DOCKER_HUB_CRED}") {
docker_image.push("latest")
}
}
// Update description on DockerHub
sh "./docs/images/push-description.sh solr-k8s"
}
}
}
}
}
post {
success {
setBuildStatus("Image build (if necessary: push) succeeded", "SUCCESS");
}
failure {
setBuildStatus("Image build or push failed", "FAILURE");
}
}
}