Merge "Remove neutron carbon jobs"
[releng/builder.git] / jjb / autorelease / autorelease-macros.yaml
1 ---
2 # Macros for the AutoRelease project
3 - parameter:
4     name: autorelease-release-tag
5     parameters:
6       - string:
7           name: RELEASE_TAG
8           default: '{release-tag}'
9           description: "The Release train tag to use eg. Beryllium-SR1"
10
11 - wrapper:
12     name: autorelease-build-timeout
13     wrappers:
14       - timeout:
15           type: absolute
16           timeout: 1440
17           fail: true
18
19 - builder:
20     name: autorelease-checkout-gerrit-patch
21     builders:
22       - shell: |
23           #!/bin/bash
24           set -eu -o pipefail
25
26           # If the project is autorelease then we do not need to cd
27           if [ "$GERRIT_PROJECT" != "releng/autorelease" ]; then
28               cd "$WORKSPACE/$GERRIT_PROJECT"
29           fi
30
31           echo "Checking out ${GERRIT_PROJECT} patch ${GERRIT_REFSPEC}..."
32           git fetch origin ${GERRIT_REFSPEC} && git checkout FETCH_HEAD
33
34           # If the project is autorelease then we need to init and update submodules
35           if [ "$GERRIT_PROJECT" == "releng/autorelease" ]; then
36               git submodule update --init
37               # The previous checkout might have failed to remove directory of a submodule being removed.
38               # See https://stackoverflow.com/a/10761699
39               git clean -dff
40           fi
41
42 - builder:
43     name: autorelease-cfp
44     builders:
45       - config-file-provider:
46           files:
47             - file-id: 'autorelease-settings'
48               variable: 'SETTINGS_FILE'
49             - file-id: 'global-settings'
50               variable: 'GLOBAL_SETTINGS_FILE'
51
52 - builder:
53     name: autorelease-determine-merge-order
54     builders:
55       - shell: |
56           virtualenv --system-site-packages $WORKSPACE/venv
57           source $WORKSPACE/venv/bin/activate
58           PYTHON="$WORKSPACE/venv/bin/python"
59           $PYTHON -m pip install --upgrade "pip<10.0.0" setuptools
60           $PYTHON -m pip install --upgrade networkx
61           $PYTHON -m pip freeze
62           ./scripts/determine-merge-order.py
63           deactivate
64           rm -rf $WORKSPACE/venv
65
66 - builder:
67     name: autorelease-maven-deploy
68     builders:
69       - shell: !include-raw: autorelease-maven-deploy.sh
70
71 - builder:
72     name: autorelease-maven-sources
73     builders:
74       - maven-target:
75           maven-version: '{maven-version}'
76           pom: 'pom.xml'
77           goals: |
78               dependency:sources
79               --quiet
80               -DoutputFile=$WORKSPACE/sources.log
81               -DappendOutput
82               {opendaylight-infra-mvn-opts}
83           java-opts:
84             - '-Xmx4096m -XX:MaxPermSize=1024m'
85           settings: '{settings}'
86           settings-type: cfp
87           global-settings: '{global-settings}'
88           global-settings-type: cfp
89
90 - builder:
91     name: autorelease-maven-sources-post-process
92     builders:
93       - shell: |
94           awk '/The following files have NOT been resolved:/,/^$/' sources.log > missing-sources.log
95
96 - builder:
97     name: autorelease-distribute-taglist
98     builders:
99       - integration-set-variables
100       - shell: |
101           #!/bin/bash
102           set +e  # DO NOT fail build if copying fails.
103
104           cp -vf "$WORKSPACE/archives/patches/taglist.log" \
105               "integration/distribution/$KARAF_ARTIFACT/src/main/assembly/"
106
107           # DO NOT fail the build if copying failed.
108           exit 0
109
110 - builder:
111     name: autorelease-generate-artifact-versions
112     # Generate versions.csv containing version of all mvn artifacts in this build.
113     builders:
114       - shell: |
115           #!/bin/bash
116           set -eu -o pipefail
117           ./scripts/generate-artifact-versions.sh
118           mkdir -p "$WORKSPACE/archives"
119           mv versions.csv "$WORKSPACE/archives"
120
121 - builder:
122     name: autorelease-generate-release-patches
123     builders:
124       - shell: !include-raw:
125           - ../global-jjb/shell/lftools-install.sh
126           - prepare-release.sh
127
128 - builder:
129     name: autorelease-get-integration-test-variables
130     builders:
131       - integration-set-variables
132       - shell: !include-raw: autorelease-get-integration-test-variables.sh
133       - inject:
134           properties-file: variables.prop
135
136 - builder:
137     name: autorelease-fix-relative-paths
138     builders:
139       - shell: |
140           ./scripts/fix-relativepaths.sh
141
142 - builder:
143     name: autorelease-generate-release-notes
144     builders:
145       - shell: !include-raw:
146           - generate-release-notes.sh
147
148 - builder:
149     name: autorelease-update-project-views
150     builders:
151       - shell: !include-raw: update-autorelease-projects-views.sh
152
153 - builder:
154     name: autorelease-update-validate-projects
155     builders:
156       - shell: !include-raw: update-validate-autorelease-projects.sh
157
158 - builder:
159     name: autorelease-compare-projects
160     builders:
161       - shell: !include-raw: compare-autorelease-projects.sh
162
163 - publisher:
164     # Search console log for failures and email status to the release mailing list.
165     name: opendaylight-infra-notify-status
166     publishers:
167       - postbuildscript:
168           builders:
169             - role: BOTH
170               build-on:
171                 - ABORTED
172                 - FAILURE
173                 - NOT_BUILT
174                 - SUCCESS
175                 - UNSTABLE
176               build-steps:
177                 - shell: !include-raw: notify-build-failure.sh
178           mark-unstable-if-failed: true