Skip to content
This repository was archived by the owner on Jun 29, 2021. It is now read-only.

Commit 5dea92a

Browse files
committed
Load dependencies from file if exists
1 parent 4ae3373 commit 5dea92a

File tree

1 file changed

+44
-11
lines changed

1 file changed

+44
-11
lines changed

workflow-job

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import java.util.List
1+
import java.io.StringReader
22
import java.util.ArrayList
33
import java.util.UUID
4+
import java.util.Properties
45
import org.kohsuke.github.GitHub
56
import org.kohsuke.github.GHCommitState
67
import org.kohsuke.github.GHRepository
@@ -124,10 +125,10 @@ public class CommitStatus implements Serializable {
124125
}
125126

126127
class Images implements Serializable {
127-
def cassandra = 'cassandra:3.11.3'
128-
def elasticSearch = 'docker.elastic.co/elasticsearch/elasticsearch:6.3.2'
129-
def rabbitmq = "rabbitmq:3.7.7-management"
130-
def swift = "linagora/openstack-keystone-swift:pike"
128+
def cassandra
129+
def elasticSearch
130+
def rabbitmq
131+
def swift
131132
def jamesCompile
132133
def jamesCassandra
133134
def jamesCassandraRabbitMQ
@@ -157,6 +158,32 @@ class Images implements Serializable {
157158
jamesJPA, jamesJpaSample, jamesJpaSampleForTesting, jamesSpring, gitPublish ]
158159
}
159160

161+
def customDependenciesOrDefault(def node) {
162+
Properties properties = fromFile(node, 'dockerfiles/run/dependencies.properties')
163+
164+
cassandra = properties."cassandra" ?: 'cassandra:3.11.3'
165+
elasticSearch = properties."elasticSearch" ?: 'docker.elastic.co/elasticsearch/elasticsearch:6.3.2'
166+
rabbitmq = properties."rabbitmq" ?: 'rabbitmq:3.7.7-management'
167+
swift = properties."swift" ?: 'linagora/openstack-keystone-swift:pike'
168+
}
169+
170+
def fromFile(def node, def file) {
171+
if (!node.fileExists('dockerfiles/run/dependencies.properties')) {
172+
node.echo "Using default dependencies"
173+
return new Properties()
174+
}
175+
176+
try {
177+
Properties properties = new Properties()
178+
properties.load(new StringReader(node.readFile(file)))
179+
return properties
180+
} catch (Exception e) {
181+
node.echo "Exception occured while getting dependencies, using default values"
182+
node.echo "${e}"
183+
return new Properties()
184+
}
185+
}
186+
160187
def deleteAll = { node ->
161188
new Command("docker rmi --force=true ${images.join(' ')} || true").execute(node)
162189
}
@@ -369,7 +396,6 @@ def containerIp(dockerContainer) {
369396
// Define main variables
370397
buildId = "${workingBranch.toLowerCase()}-${UUID.randomUUID()}"
371398
mergeBranch = "MERGE-${buildId}"
372-
images = new Images(buildId)
373399
containers = new Containers(buildId)
374400
jamesLinks = "--link ${containers.cassandra}:cassandra --link ${containers.elasticSearch}:elasticsearch"
375401
rabbitmqSwiftLinks = "--link ${containers.rabbitmq}:rabbitmq --link ${containers.swift}:swift"
@@ -435,16 +461,17 @@ if (packageOnGitlab()) {
435461
statuses.addPendingStatus(packagingTrigger)
436462
}
437463
rabbitMQProductExists = false
464+
images = null
438465
flows["${sha1}"] = {
439466

440467
stage "Build"
441468
node('remote') {
442469
ws("/home/jenkins/build/workspace/${env.BUILD_NUMBER}") {
443470
try {
444471
if (isTag()) {
445-
buildVolumeFromTag()
472+
buildVolumeFromTag(this)
446473
} else {
447-
merge()
474+
merge(this)
448475
}
449476
merging.success()
450477
rabbitMQProductExists = fileExists 'dockerfiles/run/guice/cassandra-rabbitmq-ldap'
@@ -476,7 +503,7 @@ flows["${sha1}"] = {
476503
}
477504
} finally {
478505
containers.deleteAll(this)
479-
images.deleteAll(this)
506+
images?.deleteAll(this)
480507
}
481508
}
482509
}
@@ -486,20 +513,26 @@ flows["${sha1}"] = {
486513
parallel flows
487514

488515
jamesVersion = ""
489-
def merge() {
516+
def merge(def node) {
490517
git url: authorParentURL, branch: branch
491518
sh "git fetch origin"
492519
sh "git checkout ${branch}"
493520
jamesVersion = version()
521+
images = new Images(buildId)
522+
images.customDependenciesOrDefault(node)
523+
494524
sh "docker build --tag ${images.gitPublish} -f dockerfiles/merge/Dockerfile ."
495525
sh "docker run ${verbose} -t --name ${containers.gitPublish} -v /origin ${images.gitPublish} ${sha1ToBuild} ${mergeBranch} ${originalBranch}"
496526
}
497527

498-
def buildVolumeFromTag() {
528+
def buildVolumeFromTag(def node) {
499529
git url: authorParentURL, branch: "master"
500530
sh "git fetch --tags origin"
501531
sh "git checkout ${tagName} -b ${mergeBranch}"
502532
jamesVersion = version()
533+
images = new Images(buildId)
534+
images.customDependenciesOrDefault(node)
535+
503536
def dockerfile = """\
504537
FROM debian:8.11
505538

0 commit comments

Comments
 (0)