Add docs about pushing RPMs to scratch repos
[integration/packaging.git] / docs / rpms.rst
index 28d75f617c9912052b08356119e736349437a3df..d51f006014bf9a1cc634b7aeceadd468dd4eb6b6 100644 (file)
@@ -29,13 +29,30 @@ The `packaging-build-rpm job`_ is the primary way to build an RPM from an
 OpenDaylight distribution (built by `autorelease <autorelease-builds.html>`_
 or the `snapshot distribution <distribution-job-builds.html>` job). It accepts
 a set of `parameters`_ that can be used to configure the build and passes them
-to the `RPM build logic in Integration/Packaging's repo`_. The resulting
-artifacts are hosted on Jenkins for up to a week. The job actually produces
+to the `RPM build logic in Integration/Packaging's repo`_. The job produces
 both a noarch RPM and source RPM. The noarch RPM can be passed to test jobs for
 validation. The source RPM can be downloaded to a system with the required
 credentials and then pushed to the CentOS Community Build system to be built
 into a noarch RPM on their servers and hosted in their repos.
 
+The RPM and SRPM artifacts of the job are handled differently depending on the
+Jenkins silo the job is executing in.
+
+When running in production (releng silo), artifacts are hosted on Nexus. There
+are RPM repos for each active branch (`oxygen-devel`_). New builds are
+automatically added to the appropriate devel for their branch.
+
+When running in the sandbox, artifacts are thrown away by default. To keep an
+artifact for further testing, either:
+
+* Set the DEPLOY_TO_REPO parameter to opendaylight-epel-7-x86_64-devel. This is
+  a scratch repo that sandbox packaging jobs have permission to push to.
+  Packages will land in the `scratch repo on Nexus`_.
+* Add a path regex that matches it to the Archive Artifacts param of the job
+  (`ARCHIVE_ARTIFACTS=/home/jenkins/rpmbuild/RPMS/ noarch/opendaylight*.rpm`).
+  The files matched will be stored in OpenDaylight's log archive along with the
+  other job logs.
+
 packaging-build-rpm-snap
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -61,8 +78,29 @@ shell and checks that some key bundles are present.
 Repositories
 ------------
 
-CentOS
-^^^^^^
+OpenDaylight Nexus
+^^^^^^^^^^^^^^^^^^
+
+Packages resulting from build jobs running on OpenDaylight's infrastructure are
+automatically hosted on OpenDaylight's Nexus repositories.
+
+Continious Delivery Repositories
+................................
+
+OpenDaylight provides fully-automated Continuous Delivery pipelines for RPMs.
+
+Every RPM built in the production RelEng Jenkins silo is pushed to the devel
+repo appropriate for its branch. Builds are triggered for every successful
+autorelase job, as well as daily using the latest available snapshot build.
+
+
+Continuous Delivery repos for Oxygen and Fluorine:
+
+- `opendaylight-oxygen-epel-7-x86_64-devel`_
+- `opendaylight-fluorine-epel-7-x86_64-devel`_
+
+CentOS Community Build System
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 While most RPM builds are triggered automatically in OpenDaylight's Jenkins,
 some RPMs are promoted to be hosted in OpenDaylight's CentOS repositories.
@@ -70,44 +108,27 @@ There are a series of repos that are updated at varying frequencies, from
 testing repos that are updated with pre-release versions very frequently to
 release repos that are the permanent home of official OpenDaylight releases.
 
-Testing Repositories
-....................
-
-Repositories with the -testing suffix are updated very frequently with
-pre-release versions of OpenDaylight from the appropriate branch. New RPMs
-replace the old ones, so installing from these repos will always provide the
-most recent versions.
-
-Testing repos for Boron, Carbon and Nitrogen:
-
-- `nfv7-opendaylight-5-testing`_
-- `nfv7-opendaylight-6-testing`_
-- `nfv7-opendaylight-7-testing`_
-
 Release Repositories
 ....................
 
 Repositories with the -release suffix host official OpenDaylight releases. They
 are updated infrequently to never, and will host their release artifacts
 forever. Release repos are subdivided into two groups based version numbers.
-Repositories with both a major and minor version number (52, 53, 60) are pinned
-to a specific OpenDaylight release or service release (Boron SR2 5.2.0, Boron
-SR3 5.3.0, Carbon 6.0.0). Repositories with only a major version (5, 6) will
-always host the latest service release from that major release. If a new SR
-comes out, the repo will get the update (Boron SR4 will replace Boron SR3).
+Repositories with both a major and minor version number (81, 82) are pinned to
+a specific OpenDaylight release or service release (Oxygen 8.0.0, Oxygen SR1
+8.1.0). Repositories with only a major version (8, 9) will always host the
+latest service release from that major release. If a new SR comes out, the repo
+will get the update (Oxygen 3 will replace Oxygen SR2).
 
-Release repos for the latest Boron and Carbon service releases:
+Release repo for the latest Oxygen service release:
 
-- `nfv7-opendaylight-5-release`_
-- `nfv7-opendaylight-6-release`_
+- `nfv7-opendaylight-8-release`_
 
-Release repos that will permanently host specific Boron and Carbon releases:
+Release repos that will permanently host specific Carbon and Nitrogen releases:
 
-- `nfv7-opendaylight-50-release`_
-- `nfv7-opendaylight-51-release`_
-- `nfv7-opendaylight-52-release`_
-- `nfv7-opendaylight-53-release`_
-- `nfv7-opendaylight-60-release`_
+- `nfv7-opendaylight-80-release`_
+- `nfv7-opendaylight-81-release`_
+- `nfv7-opendaylight-82-release`_
 
 Repository Configuration Files
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -123,38 +144,50 @@ Package managers like Yum and DNF will automatically find repo configuration
 files placed in the /etc/yum.repos.d/ directory. Curl them into place with
 something like:
 
-    sudo curl -o /etc/yum.repos.d/opendaylight-7-testing.repo \
-      "https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging.git;a=blob_plain;f=rpm/example_repo_configs/opendaylight-7-testing.repo"
+    sudo curl -o /etc/yum.repos.d/opendaylight-9-devel.repo \
+      "https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging.git;a=blob_plain;f=packages/rpm/example_repo_configs/opendaylight-9-devel.repo"
 
 Standard install commands will now find the repository as expected.
 
     sudo dnf install -y opendaylight
 
+The latest RPM in the repo will be installed.
+
 Custom RPMs
 -----------
 
 It's possible for developers to build custom RPMs, typically with unmerged
-patches that need system testing. First, use the `integration-multipatch-test`_
-job to create a custom distribution that includes the set of unmerged patches.
-See the `Custom Distributions <distribution-job-builds.html#custom-
-distributions>`_ section for extensive docs. Once you have a custom
-distribution artifact, pass it to the `packaging-build-rpm job`_ to package it
-as an RPM. See the `packaging-build-rpm`_ section for docs.
+patches that need system testing.
+
+Most developers will want to run these jobs in the ODL Jenkins sandbox
+instance, as only a few community members have permission to manually trigger
+jobs on the releng Jenkins instance. See the `Jenkins sandbox`_ docs for
+details about how to get permissions to trigger sandbox jobs, required
+configuration and normal usage.
+
+To build an custom distribution with unmerged code, first use the
+`integration-multipatch-test`_ job to create distribution that includes the set
+of unmerged patches.  See the `Custom Distributions
+<distribution-job-builds.html#custom- distributions>`_ section for extensive
+docs.
+
+Once you have the distribution you want to package as an RPM, pass it to the
+`packaging-build-rpm job`_ to do the build. Use the See the `packaging-build-rpm`_
+section for docs.
 
 .. _packaging-build-rpm job: https://jenkins.opendaylight.org/releng/job/packaging-build-rpm-master/
 .. _parameters: https://jenkins.opendaylight.org/releng/job/packaging-build-rpm-master/build
-.. _RPM build logic in Integration/Packaging's repo: https://github.com/opendaylight/integration-packaging/blob/master/rpm/build.py
+.. _RPM build logic in Integration/Packaging's repo: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging.git;a=tree;f=packages/rpm
 .. _packaging-build-rpm-snap job: https://jenkins.opendaylight.org/releng/job/packaging-build-rpm-snap-master/
 .. _packaging-test-rpm job: https://jenkins.opendaylight.org/releng/job/packaging-test-rpm-master/
-.. _nfv7-opendaylight-5-testing: http://cbs.centos.org/repos/nfv7-opendaylight-5-testing/x86_64/os/Packages/
-.. _nfv7-opendaylight-6-testing: http://cbs.centos.org/repos/nfv7-opendaylight-6-testing/x86_64/os/Packages/
-.. _nfv7-opendaylight-7-testing: http://cbs.centos.org/repos/nfv7-opendaylight-7-testing/x86_64/os/Packages/
-.. _nfv7-opendaylight-5-release: http://cbs.centos.org/repos/nfv7-opendaylight-5-release/x86_64/os/Packages/
-.. _nfv7-opendaylight-6-release: http://cbs.centos.org/repos/nfv7-opendaylight-6-release/x86_64/os/Packages/
-.. _nfv7-opendaylight-50-release: http://cbs.centos.org/repos/nfv7-opendaylight-50-release/x86_64/os/Packages/
-.. _nfv7-opendaylight-51-release: http://cbs.centos.org/repos/nfv7-opendaylight-51-release/x86_64/os/Packages/
-.. _nfv7-opendaylight-52-release: http://cbs.centos.org/repos/nfv7-opendaylight-52-release/x86_64/os/Packages/
-.. _nfv7-opendaylight-53-release: http://cbs.centos.org/repos/nfv7-opendaylight-53-release/x86_64/os/Packages/
-.. _nfv7-opendaylight-60-release: http://cbs.centos.org/repos/nfv7-opendaylight-60-release/x86_64/os/Packages/
-.. _example repo config files for each official repository: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging.git;a=tree;f=rpm/example_repo_configs;hb=refs/heads/master
+.. _opendaylight-oxygen-epel-7-x86_64-devel: https://nexus.opendaylight.org/content/repositories/opendaylight-oxygen-epel-7-x86_64-devel/org/opendaylight/integration-packaging/opendaylight/
+.. _oxygen-devel: https://nexus.opendaylight.org/content/repositories/opendaylight-oxygen-epel-7-x86_64-devel/org/opendaylight/integration-packaging/opendaylight/
+.. _opendaylight-fluorine-epel-7-x86_64-devel: https://nexus.opendaylight.org/content/repositories/opendaylight-fluorine-epel-7-x86_64-devel/org/opendaylight/integration-packaging/opendaylight/
+.. _nfv7-opendaylight-80-release: http://cbs.centos.org/repos/nfv7-opendaylight-80-release/x86_64/os/Packages/
+.. _nfv7-opendaylight-81-release: http://cbs.centos.org/repos/nfv7-opendaylight-81-release/x86_64/os/Packages/
+.. _nfv7-opendaylight-82-release: http://cbs.centos.org/repos/nfv7-opendaylight-82-release/x86_64/os/Packages/
+.. _nfv7-opendaylight-8-release: http://cbs.centos.org/repos/nfv7-opendaylight-8-release/x86_64/os/Packages/
+.. _example repo config files for each official repository: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging.git;a=tree;f=packages/rpm/example_repo_configs
 .. _integration-multipatch-test: https://jenkins.opendaylight.org/releng/search/?q=integration-multipatch-test
+.. _Jenkins sandbox: https://docs.opendaylight.org/en/stable-carbon/submodules/releng/builder/docs/jenkins.html#jenkins-sandbox
+.. _scratch repo on Nexus: https://docs.opendaylight.org/en/stable-carbon/submodules/releng/builder/docs/jenkins.html#jenkins-sandbox