forked from fabric8io/fabric8-maven-plugin
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Jenkinsfile
146 lines (113 loc) · 4.39 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/usr/bin/groovy
/*
* Copyright 2016 Red Hat, Inc.
*
* Red Hat licenses this file to you under the Apache License, version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
@Library('github.com/fabric8io/fabric8-pipeline-library@master')
def utils = new io.fabric8.Utils()
clientsTemplate{
mavenNode {
checkout scm
readTrusted 'release.groovy'
sh "git remote set-url origin [email protected]:fabric8io/fabric8-maven-plugin.git"
def pipeline = load 'release.groovy'
if (utils.isCI()) {
echo 'CI pipeline'
sh "mvn clean install"
} else if (utils.isCD()) {
// First we need to check that master is
// stable and all tests are working properly
// before generating tags and pushing it to github
container('maven') {
sh "mvn clean -B"
sh "mvn clean install"
}
def stagedProject
// These stage(), release(stagedProject) and
// updateDownstreamDependencies(stagedProject)
// are coming form release.groovy in same repo
stage('Stage') {
// This will generate new tag, push them to github,
// create the new release branch, build and run test
stagedProject = pipeline.stage()
}
stage('Promote') {
// This will release the project and update on
// maven central
pipeline.release(stagedProject)
}
// Disabled for now as it probably doesn't work because of the different directory structure
// with a dedicated doc-module
// stage 'Website'
// pipeline.website(stagedProject)
stage('Update downstream dependencies') {
// This will update the version of fmp
// in the pom.xml of some downstream repos like
// fabric8-services, quickstart etc.
pipeline.updateDownstreamDependencies(stagedProject)
}
}
}
}
deployTemplate{
dockerNode {
stage 'Deploy and run system tests'
deployAndRunSystemTests()
}
}
def deployAndRunSystemTests() {
// This will build the downstream projects
// (may be not all projects)
// to check whether the new version is
// working fine for them
def fabric8Quickstarts
def fabric8Devops
def fabric8Forge
def yaml
stage 'build snapshot fabric8-devops'
ws('devops') {
git 'https://github.com/fabric8io/fabric8-devops.git'
def pipeline = load 'release.groovy'
fabric8Devops = mavenBuildSnapshot {
extraImagesToStage = pipeline.externalImages()
}
}
stage 'build snapshot quickstarts'
ws('quickstarts') {
git 'https://github.com/fabric8io/ipaas-quickstarts.git'
fabric8Quickstarts = mavenBuildSnapshot {}
}
stage 'build snapshot fabric8-forge'
ws('forge') {
git 'https://github.com/fabric8io/fabric8-forge.git'
fabric8Forge = mavenBuildSnapshot {
pomVersionToUpdate = ['fabric8.devops.version': fabric8Devops, 'fabric8.archetypes.release.version': fabric8Quickstarts]
}
}
stage 'build snapshot fabric8-platform'
ws('platform') {
git 'https://github.com/fabric8io/fabric8-platform.git'
mavenBuildSnapshot {
pomVersionToUpdate = ['fabric8.devops.version': fabric8Devops, 'fabric8.forge.version': fabric8Forge]
}
yaml = readFile file: "packages/fabric8-platform/target/classes/META-INF/fabric8/kubernetes.yml"
if (yaml == null) {
error 'no yaml found for fabric8 platform'
}
}
stage 'starting system tests'
fabric8SystemTests {
packageYAML = yaml
}
}