X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=docs%2Fjjb%2Flf-release-jobs.rst;h=0a9cc09ec9fbbf9a3daa481059f9e5580e016b16;hb=refs%2Fchanges%2F76%2F61576%2F3;hp=f5572473113294e34bc2588342e68cb17dffc346;hpb=82c8847bbd144b67331d2268919ce6422e481b94;p=releng%2Fglobal-jjb.git diff --git a/docs/jjb/lf-release-jobs.rst b/docs/jjb/lf-release-jobs.rst index f5572473..0a9cc09e 100644 --- a/docs/jjb/lf-release-jobs.rst +++ b/docs/jjb/lf-release-jobs.rst @@ -1,43 +1,69 @@ .. _lf-global-jjb-release: ####################### -Self Serve Release Jobs +Self-Serve Release Jobs ####################### -Self serve release jobs allow a project to create a releases directory and then place a release file in it. -Jenkins will pick this up and then promote the artifact from the staging log directory (log_dir) and tag the release -with the defined version. maven_central_url is optional +Self-serve release jobs allow a project team to direct Jenkins to promote jar files or container +images from staging areas to release areas. To trigger the action, create a releases/ or .releases/ +directory, place one or more release yaml files in it, and submit the change to Gerrit. Upon merge +of the change, Jenkins will sign the reference(s) extrapolated by log_dir and promote the artifact(s). + +Release jobs can also be triggered from Jenkins via the "Build with parameters" action, removing the +need for a release yaml file. The parameters must be filled out in the same way as a release file, +except for the special USE_RELEASE_FILE and DRY_RUN check boxes. The USE_RELEASE_FILE check box must +be unchecked if the job is expected to run with a release file, while passing the required information +as build parameters. Similarly, the DRY_RUN check box must be unchecked if the job needs to be tested +while skipping repository promotion to Nexus. + +The special parameters are as follows:: + + GERRIT_BRANCH = master + VERSION = 1.0.0 + LOG_DIR = example-project-maven-stage-master/17/ + DISTRIBUTION_TYPE = maven + USE_RELEASE_FILE = false + DRY_RUN = false .. note:: - Example of a maven release file: + The release files regex is: (releases\/.*\.yaml|\.releases\/.*\.yaml). + In words, the directory name can be ".releases" or "releases"; the file + name can be any name with suffix ".yaml". + +Example of a maven release file: .. code-block:: bash - $ cat releases/maven-1.0.0.yaml - --- - distribution_type: 'maven' - version: '1.0.0' - project: 'example-project' - log_dir: 'example-project-maven-stage-master/17/' + $ cat releases/maven-1.0.0.yaml + --- + distribution_type: 'maven' + version: '1.0.0' + project: 'example-project' + log_dir: 'example-project-maven-stage-master/17/' - Example of a container release file: +Example of a container release file: .. code-block:: bash - $ cat releases/container-1.0.0.yaml - --- - distribution_type: 'container' - version: '1.0.0' - project: 'example-project' - log_dir: 'example-project-maven-docker-stage-master/17/' + $ cat releases/container-1.0.0.yaml + --- + distribution_type: 'container' + version: '1.0.0' + project: 'test' + containers: + - name: test-backend + version: 1.0.0-20190806T184921Z + - name: test-frontend + version: 1.0.0-20190806T184921Z .. note:: Job should be appended under gerrit-maven-stage - Example of a terse Jenkins job to call global-jjb macro: + +Example of a terse Jenkins job to call the global-jjb macro: .. code-block:: none @@ -50,11 +76,11 @@ with the defined version. maven_central_url is optional .. note:: - Release Engineers Please follow the setup guide before adding the job definition: + Release Engineers: please follow the setup guide below before adding the job definition. -Setup for LFID Nexus Jenkins and Gerrit: -======================================== +Setup for LFID, Nexus, Jenkins and Gerrit +========================================= LFID ==== @@ -62,6 +88,7 @@ LFID Create an ``lfid`` and an ``ssh-key`` ``YOUR_RELEASE_USERNAME`` for example: onap-release + ``YOUR_RELEASE_EMAIL`` for example: collab-it+onap-release@linuxfoundation.org ssh-key example: @@ -84,8 +111,8 @@ Create a Nexus account called ``'jenkins-release'`` with promote privileges. Gerrit ====== -Log into your Gerrit with ``YOU_RELEASE_USERNAME``, upload the publick part of the ``ssh-key`` you created earlier. -Log out of Gerrit and log in again with your normal account for the next steps. +Log into your Gerrit with ``YOU_RELEASE_USERNAME``, upload the public part of the ``ssh-key`` you +created earlier. Log out of Gerrit and log in again with your normal account for the next steps. In Gerrit create a new group called ``self-serve-release`` and give it direct push rights via ``All-Projects`` @@ -109,7 +136,7 @@ Jenkins ======= Add a global credential to Jenkins called ``jenkins-release`` and set the ID: ``'jenkins-release'`` -as its value insert the private portion of the ``ssh-key`` that you created for your Gerrit user. +as its value insert the private half of the ``ssh-key`` that you created for your Gerrit user. Add Global vars in Jenkins: Jenkins configure -> Global properties -> Environment variables @@ -139,8 +166,8 @@ Jenkins Settings -> Managed files -> Add (or edit) -> Custom file Ci-management ============= -Upgrade your projects global-jjb if needed -add this to your global defaults file (eg: jjb/defaults.yaml). +Upgrade your project's global-jjb if needed, then add the following to your global defaults +file (e.g., jjb/defaults.yaml). .. code-block:: bash @@ -161,21 +188,7 @@ Job Templates Release Merge ------------- -Runs: - -- sigul-install -- sigul-configuration -- checkout ref from taglist.log -- applies the $PROJECT.bundle -- signs, tags and pushes - -.. code-block:: bash - - lftools nexus release --server $NEXUS_URL $STAGING_REPO - - -:Template Name: - - {project-name}-release-merge-{stream} +:Template Name: {project-name}-release-merge :Comment Trigger: remerge @@ -198,25 +211,14 @@ Runs: file modifications will trigger a build. **default**:: - - compare-type: ANT - pattern: 'releases/*.yaml' + - compare-type: REG_EXP + pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)' Release Verify ------------------ -Release verify job checks the schema and ensures that the staging-repo.txt.gz -is available on the job. - -- sigul-install -- sigul-configuration -- checkout ref from taglist.log -- applies the $PROJECT.bundle -- signs and shows signature - - -:Template Names: - - {project-name}-release-verify-{stream} +:Template Name: {project-name}-release-verify :Comment Trigger: recheck|reverify @@ -244,5 +246,5 @@ is available on the job. file modifications will trigger a build. **default**:: - - compare-type: ANT - pattern: 'releases/*.yaml' + - compare-type: REG_EXP + pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'