Pin pygments to 2.3.x
[integration/packaging.git] / docs / autorelease-builds.rst
1 Autorelease Builds
2 ==================
3
4 OpenDaylight's primary build pipeline is called "autorelease". It is managed by
5 the `RelEng/Autorelease`_ project, and primarily takes the form of
6 `Autorelease's Jenkins jobs`_.
7
8 Autorelease builds every project from source. Artifact versions are rewritten
9 from the -SNAPSHOT suffixes in version control to release versions, like
10 -Carbon-SR1 or -Nitrogen. This contrasts with distribution jobs, which build
11 only a few projects from source and use -SNAPSHOT artifact versions. This makes
12 autorelesae builds slow, but identical to actual releases, whereas distribution
13 builds are fast but slightly less similar to official releases.
14
15 Daily Releases
16 --------------
17
18 `Autorelease's Jenkins jobs`_ run daily for every active branch, including
19 master.
20
21 - `Carbon autorelease job`_
22 - `Nitrogen autorelease job`_
23 - `Oxygen autorelease job`_
24 - `Fluorine autorelease job`_
25
26 Each of those jobs, when the build is successful, produces build artifacts that
27 include an OpenDaylight distribution.
28
29 *To download the distribution*
30
31 #. Pick an autorelease job that completed successfully (yellow or blue dot)
32 #. Access its logged console output
33
34    Logs are hosted on logs.opendaylight.org, at URLs like
35    `https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/autorelease-release-<stream>/
36    <build_number>/`, where stream could be "Fluorine" build_number "52".
37
38    There will be a link at the top of build's Jenkins page.
39
40 #. Open `deploy-staged-repository.log.gz` in browser
41
42    Search for "staging repository with ID" to find the repository ID, which
43    will be of the form "autorelease-1432".
44
45 #. Navigate to `OpenDaylight's Nexus`_ and find the staging repository with the same name
46 #. Drill down into one of these directories to find the build artifacts:
47
48    * Carbon or older: org/opendaylight/integration/distribution-karaf/
49    * Nitrogen or newer: org/opendaylight/integration/karaf/
50
51 .. note:: Autorelease build artifacts are persevered for 60 days.
52
53 Autorelease jobs trigger OpenDaylight's distribution tests when they complete.
54
55 *To see the test results*
56
57 #. Go to integration-distribution-test-<branch> job's Jenkins page
58 #. Find the job that started after the autorelease in question finished
59 #. Open it and explore the subprojects section for test results of all
60    the jobs triggered.
61
62    For example, in case of Nitrogen, you can find the list and
63    the results of jobs triggered `here`_.
64
65 The latest successful autorelease builds can also be easily found in Nexus at
66 `staging/org/opendaylight/integration/distribution-karaf/`_. Look for
67 0.5.4-Boron-SR4, 0.6.1-Carbon-SR1, 0.7.0-Nitrogen or similar staging
68 repositories. Note that the artifacts in these repositories are not
69 static - they are replaced each time new artifacts are generated. Use the
70 "autorelease-XXXX" repositories described above for semi-persistent URLs.
71
72
73 Official Releases
74 -----------------
75
76 As a part of the OpenDaylight community's efforts to move towards Continuous
77 Delivery, there is very little mechanical difference between the automated
78 daily releases documented above and official releases. The same autorelease
79 job runs, builds artifacts and kicks off distribution tests against them. When
80 doing official releases, the OpenDaylight community iterates through those
81 builds (calling them Release Candidate 1, RC2, ...) until no blocking bugs are
82 found. The OpenDaylight Technical Steering Committee then hears feedback from
83 the Release Engineering and Integration/Test teams, and if all's well blesses
84 the build as an official release. The build's Nexus staging repo is then
85 promoted to a release repo and publicized (example: `opendaylight.release/org
86 /opendaylight/integration/distribution-karaf/0.6.0-Carbon`_). Official
87 releases are persevered forever.
88
89 For more information about OpenDaylight releases, including timelines, see the
90 `Release Plans`_.
91
92
93 .. _RelEng/Autorelease: https://git.opendaylight.org/gerrit/gitweb?p=releng/autorelease.git;a=tree;h=refs/heads/master;hb=refs/heads/master
94 .. _Autorelease's Jenkins jobs: https://jenkins.opendaylight.org/releng/view/autorelease/
95 .. _Carbon autorelease job: https://jenkins.opendaylight.org/releng/view/autorelease/job/autorelease-release-carbon/
96 .. _Nitrogen autorelease job: https://jenkins.opendaylight.org/releng/view/autorelease/job/autorelease-release-nitrogen/
97 .. _Oxygen autorelease job: https://jenkins.opendaylight.org/releng/view/autorelease/job/autorelease-release-oxygen/
98 .. _Fluorine autorelease job: https://jenkins.opendaylight.org/releng/view/autorelease/job/autorelease-release-fluorine/
99 .. _OpenDaylight's Nexus: https://nexus.opendaylight.org/content/repositories/
100 .. _here: https://jenkins.opendaylight.org/releng/job/integration-distribution-test-nitrogen/
101 .. _staging/org/opendaylight/integration/distribution-karaf/: https://nexus.opendaylight.org/content/repositories/staging/org/opendaylight/integration/distribution-karaf/
102 .. _opendaylight.release/org /opendaylight/integration/distribution-karaf/0.6.0-Carbon: https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.6.0-Carbon/
103 .. _Release Plans: https://wiki.opendaylight.org/view/Release_Plan