Merge "Use lf-infra-parameters"
[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           fi
38
39 - builder:
40     name: autorelease-cfp
41     builders:
42       - config-file-provider:
43           files:
44             - file-id: 'autorelease-settings'
45               variable: 'SETTINGS_FILE'
46             - file-id: 'global-settings'
47               variable: 'GLOBAL_SETTINGS_FILE'
48
49 - builder:
50     name: autorelease-determine-merge-order
51     builders:
52       - shell: |
53           virtualenv --system-site-packages $WORKSPACE/venv
54           source $WORKSPACE/venv/bin/activate
55           PYTHON="$WORKSPACE/venv/bin/python"
56           $PYTHON -m pip install --upgrade pip
57           $PYTHON -m pip install --upgrade networkx
58           $PYTHON -m pip freeze
59           ./scripts/determine-merge-order.py
60           deactivate
61           rm -rf $WORKSPACE/venv
62
63 - builder:
64     name: autorelease-maven-deploy
65     builders:
66       - shell: !include-raw: include-raw-autorelease-maven-deploy.sh
67
68 - builder:
69     name: autorelease-maven-sources
70     builders:
71       - maven-target:
72           maven-version: '{maven-version}'
73           pom: 'pom.xml'
74           goals: |
75               dependency:sources
76               --quiet
77               -DoutputFile=$WORKSPACE/sources.log
78               -DappendOutput
79               {opendaylight-infra-mvn-opts}
80           java-opts:
81             - '-Xmx4096m -XX:MaxPermSize=1024m'
82           settings: '{settings}'
83           settings-type: cfp
84           global-settings: '{global-settings}'
85           global-settings-type: cfp
86
87 - builder:
88     name: autorelease-maven-sources-post-process
89     builders:
90       - shell: |
91           awk '/The following files have NOT been resolved:/,/^$/' sources.log > missing-sources.log
92
93 - builder:
94     name: autorelease-generate-taglist
95     builders:
96       - shell: |
97           echo autorelease `git rev-parse --verify HEAD` ${RELEASE_TAG} \
98               | tee -a $WORKSPACE/taglist.log
99           git submodule foreach 'echo $path `git rev-parse --verify HEAD` ${RELEASE_TAG} \
100               | tee -a $WORKSPACE/taglist.log'
101
102 - builder:
103     name: autorelease-distribute-taglist
104     builders:
105       - integration-set-variables
106       - shell: |
107           #!/bin/bash
108           set +e  # DO NOT fail build if copying fails.
109
110           if [ -d "integration/distribution/distributions" ]; then
111               cp -vf "$WORKSPACE/taglist.log" "integration/distribution/distributions/karaf/src/main/assembly/"
112           else
113               cp -vf "$WORKSPACE/taglist.log" "integration/distribution/$KARAF_ARTIFACT/src/main/assembly/"
114           fi
115
116           # DO NOT fail the build if copying failed.
117           exit 0
118
119 - builder:
120     name: autorelease-generate-release-patches
121     builders:
122       - shell: !include-raw:
123           - ../global-jjb/shell/lftools-install.sh
124           - prepare-release.sh
125
126 - builder:
127     name: autorelease-get-integration-test-variables
128     builders:
129       - integration-set-variables
130       - shell: !include-raw: include-raw-autorelease-get-integration-test-variables.sh
131       - inject:
132           properties-file: variables.prop
133
134 - builder:
135     name: autorelease-fix-relative-paths
136     builders:
137       - shell: |
138           ./scripts/fix-relativepaths.sh
139
140 - builder:
141     name: autorelease-generate-release-notes
142     builders:
143       - shell: |
144           cd $WORKSPACE/scripts/release_notes_management
145           java -jar target/autonotes.jar
146           if [ -f  "$WORKSPACE/scripts/release_notes_management/projects/release-notes.rst" ]; then
147               mkdir -p $WORKSPACE/archives
148               cp -vf "$WORKSPACE/scripts/release_notes_management/projects/release-notes.rst" "$WORKSPACE/archives"
149           fi
150
151 - publisher:
152     # Search console log for failures and email status to the release mailing list.
153     name: opendaylight-infra-notify-status
154     publishers:
155       - postbuildscript:
156           builders:
157             - shell: !include-raw: notify-build-failure.sh
158           script-only-if-succeeded: false
159           script-only-if-failed: true