Fix validate job when run against autorelease
[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 - parameter:
12     name: autorelease-release-branch
13     parameters:
14       - string:
15           name: RELEASE_BRANCH
16           default: '{release-branch}'
17           description: "The Release train branch to base build off eg. stable/beryllium"
18
19 - wrapper:
20     name: autorelease-build-timeout
21     wrappers:
22       - timeout:
23           type: absolute
24           timeout: 1440
25           fail: true
26
27 - builder:
28     name: autorelease-checkout-gerrit-patch
29     builders:
30       - shell: |
31           #!/bin/bash
32           set -eu -o pipefail
33
34           # If the project is autorelease then we do not need to cd
35           if [ "$GERRIT_PROJECT" != "releng/autorelease" ]; then
36               cd "$WORKSPACE/$GERRIT_PROJECT"
37           fi
38
39           echo "Checking out ${GERRIT_PROJECT} patch ${GERRIT_REFSPEC}..."
40           git fetch origin ${GERRIT_REFSPEC} && git checkout FETCH_HEAD
41
42           # If the project is autorelease then we need to init and update submodules
43           if [ "$GERRIT_PROJECT" != "releng/autorelease" ]; then
44               git submodule update --init
45           fi
46
47 - builder:
48     name: autorelease-cfp
49     builders:
50       - config-file-provider:
51           files:
52             - file-id: 'autorelease-settings'
53               variable: 'SETTINGS_FILE'
54             - file-id: 'global-settings'
55               variable: 'GLOBAL_SETTINGS_FILE'
56
57 - builder:
58     name: autorelease-determine-merge-order
59     builders:
60       - shell: |
61           virtualenv --system-site-packages $WORKSPACE/venv
62           source $WORKSPACE/venv/bin/activate
63           PYTHON="$WORKSPACE/venv/bin/python"
64           $PYTHON -m pip install --upgrade pip
65           $PYTHON -m pip install --upgrade networkx
66           $PYTHON -m pip freeze
67           ./scripts/determine-merge-order.py
68           deactivate
69           rm -rf $WORKSPACE/venv
70
71 - builder:
72     name: autorelease-maven-deploy
73     builders:
74       - shell: !include-raw: include-raw-autorelease-maven-deploy.sh
75
76 - builder:
77     name: autorelease-maven-sources
78     builders:
79       - maven-target:
80           maven-version: '{maven-version}'
81           pom: 'pom.xml'
82           goals: |
83               dependency:sources
84               --quiet
85               -DoutputFile=$WORKSPACE/sources.log
86               -DappendOutput
87               {opendaylight-infra-mvn-opts}
88           java-opts:
89             - '-Xmx4096m -XX:MaxPermSize=1024m'
90           settings: '{settings}'
91           settings-type: cfp
92           global-settings: '{global-settings}'
93           global-settings-type: cfp
94
95 - builder:
96     name: autorelease-maven-sources-post-process
97     builders:
98       - shell: |
99           awk '/The following files have NOT been resolved:/,/^$/' sources.log > missing-sources.log
100
101 - builder:
102     name: autorelease-generate-taglist
103     builders:
104       - shell: |
105           echo autorelease `git rev-parse --verify HEAD` ${RELEASE_TAG} \
106               | tee -a $WORKSPACE/taglist.log
107           git submodule foreach 'echo $path `git rev-parse --verify HEAD` ${RELEASE_TAG} \
108               | tee -a $WORKSPACE/taglist.log'
109
110 - builder:
111     name: autorelease-distribute-taglist
112     builders:
113       - integration-set-variables
114       - shell: |
115           #!/bin/bash
116           set +e  # DO NOT fail build if copying fails.
117
118           if [ -d "integration/distribution/distributions" ]; then
119               cp -vf "$WORKSPACE/taglist.log" "integration/distribution/distributions/karaf/src/main/assembly/"
120           else
121               cp -vf "$WORKSPACE/taglist.log" "integration/distribution/$KARAF_ARTIFACT/src/main/assembly/"
122           fi
123
124           # DO NOT fail the build if copying failed.
125           exit 0
126
127 - builder:
128     name: autorelease-generate-release-patches
129     builders:
130       - shell: !include-raw:
131           - ../global-jjb/shell/lftools-install.sh
132           - include-raw-autorelease-release-versions.sh
133
134 - builder:
135     name: autorelease-get-integration-test-variables
136     builders:
137       - integration-set-variables
138       - shell: !include-raw: include-raw-autorelease-get-integration-test-variables.sh
139       - inject:
140           properties-file: variables.prop
141
142 - builder:
143     name: autorelease-fix-relative-paths
144     builders:
145       - shell: |
146           ./scripts/fix-relativepaths.sh
147
148 - builder:
149     name: autorelease-generate-release-notes
150     builders:
151       - shell: |
152           cd $WORKSPACE/scripts/release_notes_management
153           java -jar target/autonotes.jar
154           if [ -f  "$WORKSPACE/scripts/release_notes_management/projects/release-notes.rst" ]; then
155               mkdir -p $WORKSPACE/archives
156               cp -vf "$WORKSPACE/scripts/release_notes_management/projects/release-notes.rst" "$WORKSPACE/archives"
157           fi
158
159 - publisher:
160     # include-raw-autorelease-notify-build-failure.sh searches console log for
161     # failures and emails the status to the release mailing list.
162     name: opendaylight-infra-notify-status
163     publishers:
164       - postbuildscript:
165           builders:
166             - shell: !include-raw: include-raw-autorelease-notify-build-failure.sh
167           script-only-if-succeeded: 'False'
168           script-only-if-failed: 'True'