author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 01 Aug 2017 20:44:33 +0100 | |
changeset 131 | edaf0258b9c2 |
parent 129 | b94e3e84adf9 |
child 154 | bca6821cadad |
child 169 | f9f519bb10b6 |
permissions | -rw-r--r-- |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
/* |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
* Jenkins Pipeline definitions for Smalltalk/X jv-branch |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
* |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
* Following pipelines are defined here: |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
* |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
* * `build()` - compiles and tests all supported configurations |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
* No artifacts are archived |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
* |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
* * `integration()` - like `build()` pipeline, then all test pass on all |
128
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
10 |
* configurations, archive artifacts and push staged changes to opstream |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
11 |
* (if approvec by the user) |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
*/ |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
|
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
14 |
import com.cloudbees.plugins.credentials.CredentialsProvider; |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
15 |
import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials; |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
16 |
import com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey; |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
|
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
18 |
/** |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
19 |
* Supported configurations. To overwrite, do: |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
20 |
* |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
21 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
22 |
* pipeline = load "pipeline.groovy" |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
23 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
24 |
* pipeline.configurations = [ 'NODE': 'qnx', 'ARCH' : 'mips' ] |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
25 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
26 |
* |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
27 |
* Default value: see below. |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
*/ |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
configurations = [ |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
'NODE': ['windows' , 'linux' ], |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
'ARCH': ['i386', 'x86_64' ] |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
] |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
|
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
34 |
/** Branch to build. To overwrite do: |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
35 |
* |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
36 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
37 |
* pipeline = load "pipeline.groovy" |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
38 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
39 |
* pipeline.branch = "issue-123" |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
40 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
41 |
* |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
42 |
* Default value: |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
43 |
* For multibranch jobs, this is the value of BRANCH_NAME environment variable. |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
44 |
* For normal jobs this is the value of 'Branch' field from SCM configuration. |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
45 |
* |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
46 |
* Due to Jenkins internals, the fallback to use SCM configuration must be done |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
47 |
* by 'user' of this variable (i.e., use `branch != null ? branch : scm.getBranch()) |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
48 |
*/ |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
49 |
branch = env.BRANCH_NAME |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
50 |
|
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
51 |
/** |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
52 |
* Workspace to use. To overwrite do: |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
53 |
* |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
54 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
55 |
* pipeline = load "pipeline.groovy" |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
56 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
57 |
* pipeline.workspace = "some-other-job" |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
58 |
* ... |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
59 |
* |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
60 |
* Default value: |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
61 |
* Name of current job. |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
62 |
*/ |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
63 |
workspace = env.JOB_NAME |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
/* |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
* "Default" pipeline: |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
*/ |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
def build() { |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
69 |
stage ( "Build" ) { |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
70 |
matrix ( configurations ) { |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
71 |
stage ( "Checkout - {${env.NODE}-${env.ARCH}} " ) { |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
72 |
sshagent([ scm.getCredentialsId() ]) { |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
73 |
sh """ |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
74 |
if [ -f Jenkinsfile.rb ]; then |
103
fda494c2564b
CI: Pass `--ssh ssh` option to hg when checking out / updating rakefiles
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
96
diff
changeset
|
75 |
hg pull --ssh ssh ${scm.getSource()} |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
76 |
else |
103
fda494c2564b
CI: Pass `--ssh ssh` option to hg when checking out / updating rakefiles
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
96
diff
changeset
|
77 |
hg clone --ssh ssh ${scm.getSource()} . |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
78 |
fi |
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
79 |
hg up ${branch != null ? branch : scm.getBranch()} |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
80 |
""" |
90
9f574fad295d
When building under CI throw an error if repositoryset is explicitly defined
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
81 |
sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" --arch ${env.ARCH} update" |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
82 |
} |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
83 |
} |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
84 |
|
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
85 |
stage ( "Compile - {${env.NODE}-${env.ARCH}}") { |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
86 |
sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" compile" |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
} |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
89 |
} |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
|
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
91 |
stage ( "Test" ) { |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
92 |
matrix ( configurations ) { |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
93 |
stage ( "Test - {${env.NODE}-${env.ARCH}}") { |
115
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
94 |
/* |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
95 |
* Some tests requires display, so: |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
96 |
* |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
97 |
* * on *NIX hosts, launch Xvfb |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
98 |
* * on Windows, do nothing. Windows slave must be configured |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
99 |
* so it has an access to interactive window station (which |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
100 |
* means it has to run under user session, not as a service) |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
101 |
*/ |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
102 |
if ( isUnix() ) { |
129
b94e3e84adf9
CI: Let Xvfb to choose the display name
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
128
diff
changeset
|
103 |
wrap([$class: 'Xvfb', autoDisplayName: true, additionalOptions: '-screen 0 1024x768x24 -pixdepths 24 4 8 15 16 32', parallelBuild: true]) { |
115
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
104 |
sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" test" |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
105 |
} |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
106 |
} else { |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
107 |
sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" test" |
3b8372e82acd
CI: On *NIX nodes, start Xvfb to allow for UI testing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
108 |
} |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
109 |
junit allowEmptyResults: true, testResults: "reports/*build${env.BUILD_NUMBER}*.xml" |
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
110 |
} |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
/* |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
* "Integration" pipeline |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
117 |
*/ |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
118 |
def integration() { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
build() |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
120 |
/* |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
* If a single test fails, abort the pipeline. There's no point |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
* archiving a broken build. |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
*/ |
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
124 |
println "Smalltalk/X built, job status is: ${currentBuild.result}" |
128
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
125 |
if ( currentBuild.result == 'UNSTABLE' ) { |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
return; |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
artifacts() |
128
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
129 |
|
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
130 |
/* |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
131 |
* Check if there are changes to be pushed to upstream. If so, |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
132 |
* ask user to approve that push |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
133 |
*/ |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
134 |
if ( changes() ) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
135 |
def integrate = input(message: 'Integrate all staged changes to upstream?', |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
136 |
parameters: [ |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
137 |
booleanParam(name: "Integrate changes", |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
138 |
description: 'If checked, all staged changes will be pushed to an upstream repository', |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
139 |
defaultValue: true)]); |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
140 |
if ( integrate ) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
141 |
push() |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
142 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
143 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
144 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
145 |
|
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
146 |
/* |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
147 |
* Utility. Return true, if there are any changes to be pushed to an upstream, |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
148 |
* false othervise. |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
149 |
*/ |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
150 |
def changes() { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
151 |
changes = false; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
152 |
matrix ( configurations ) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
153 |
withCredentialsForUpstream() { user, pass -> |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
154 |
status = sh ( script: "rake \"workflow:out-upstream[${user}, ${pass}]\"", returnStatus: true) |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
155 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
156 |
changes = status == 0; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
157 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
158 |
return changes; |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
161 |
def combine(configurations, axes = null, axis = 0, partial = new HashMap(), combinations = []) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
162 |
def axes0 = axes |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
if (axes0 == null) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
axes0 = configurations.keySet().toArray(); |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
165 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
166 |
if ( axis < axes0.length ) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
167 |
for ( value in configurations[axes0[axis]] ) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
168 |
def combined = partial.clone() |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
169 |
combined[axes0[axis]] = value |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
170 |
combine(configurations, axes0, axis + 1, combined, combinations) |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
171 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
172 |
} else { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
173 |
combinations.add(partial) |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
return combinations; |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
176 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
def matrix(configurations, block) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
def combinations = combine(configurations).toArray() |
70
8e73f248c6d4
Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
181 |
def branches = [failFast: true] |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
for (i = 0; i < combinations.length; i++) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
def index = i |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
def conf = combinations[i]; |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
185 |
branches["${conf.NODE}-${conf.ARCH}"] = { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
186 |
node ( conf.NODE ) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
def newEnv = [] |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
for (k in conf.keySet()) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
newEnv.add("${k}=${conf[k]}") |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
withEnv ( newEnv ) { |
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
192 |
ws ("workspace/${workspace}/${env.ARCH}") { |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
block() |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
196 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
parallel branches |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
def any(configurations, block) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
def axes = configurations.keySet().toArray() |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
def conf = [:] |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
for (axis in axes) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
conf[axis] = configurations[axis][0] |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
node ( conf.NODE ) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
def newEnv = [] |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
212 |
for (k in conf.keySet()) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
newEnv.add("${k}=${conf[k]}") |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
withEnv ( newEnv ) { |
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
216 |
ws ("workspace/${workspace}/${env.ARCH}") { |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
block() |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
220 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
|
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
def artifacts() { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
matrix ( configurations ) { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
stage ( "Artifacts - {${env.NODE}-${env.ARCH}}") { |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" artifacts" |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
archiveArtifacts artifacts: "artifacts/*build${env.BUILD_NUMBER}*.zip, artifacts/*build${env.BUILD_NUMBER}*.bz2, artifacts/*build${env.BUILD_NUMBER}*.sha256", fingerprint: true//, onlyIfSuccessful: true |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
|
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
233 |
/** |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
234 |
* Push changes to upstream reporitory. To be called after a successful |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
235 |
* build. See #build() |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
236 |
*/ |
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
237 |
def push() { |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
any ( configurations ) { |
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
239 |
stage ( "Push to upstream" ) { |
128
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
240 |
withCredentialsForUpstream { user, pass -> |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
241 |
sh "rake \"workflow:push-upstream[${user}, ${pass}]\"" |
106
af335c19cc3b
CI: Allow to use different credentials to push to upstream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
105
diff
changeset
|
242 |
} |
69
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
} |
23cdc822cfc5
Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
246 |
|
128
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
247 |
/* |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
248 |
* Utility. Executes given block with credentials for upstream repository. |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
249 |
*/ |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
250 |
def withCredentialsForUpstream(block) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
251 |
/* |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
252 |
* Kludge: Upstream repositories may be on a public BitBucket |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
253 |
* server. To access repos on BitBucket, I (JV) don't |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
254 |
* want to use the same key / password as for checkouts from |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
255 |
* staging repositories, |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
256 |
* |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
257 |
* Therefore, also look for another credentials with ID |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
258 |
* `workflow:push-upstream`. If it exists, then use these to |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
259 |
* push to upstrem repository. If no such credentials exist, |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
260 |
* use standard credentials. |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
261 |
* |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
262 |
* So, here we go: |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
263 |
*/ |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
264 |
def id1 = "workflow-push-upstream"; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
265 |
def id2 = scm.getCredentialsId(); |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
266 |
def credentials = null; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
267 |
|
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
268 |
for (StandardUsernameCredentials c : CredentialsProvider.lookupCredentials(StandardUsernameCredentials.class)) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
269 |
if (c.getId().equals(id1)) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
270 |
credentials = c; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
271 |
break; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
272 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
273 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
274 |
if (credentials == null) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
275 |
for (StandardUsernameCredentials c : CredentialsProvider.lookupCredentials(StandardUsernameCredentials.class)) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
276 |
if (c.getId().equals(id2)) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
277 |
credentials = c; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
278 |
break; |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
279 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
280 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
281 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
282 |
|
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
283 |
println "Using upstream credentials ${credentials.getId()}: ${credentials.getDescription()}" |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
284 |
|
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
285 |
if (credentials instanceof SSHUserPrivateKey) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
286 |
sshagent([ credentials.getId() ]) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
287 |
// sh "rake \"workflow:push-upstream\"" |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
288 |
block(null, null) |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
289 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
290 |
} else { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
291 |
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: credentials.getId(), passwordVariable: 'pass', usernameVariable: 'user']]) { |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
292 |
// sh "rake \"workflow:push-upstream[${user}, ${pass}]\"" |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
293 |
block(user, pass) |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
294 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
295 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
296 |
} |
1433658a3853
CI: changed integration pipeline to check for outgoing changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
115
diff
changeset
|
297 |
|
96
12b2d2bbd417
Merged changes from branch feature-block-in-context
Jan Vrany <jan.vrany@fit.cvut.cz>
diff
changeset
|
298 |
return this; |