From 6b53be2db0cb7eaa85b5a6c60edf4e5e5a8f5c80 Mon Sep 17 00:00:00 2001 From: Aric Gardner Date: Wed, 19 Jun 2019 14:10:42 -0400 Subject: [PATCH] Self serve release docs And code fixes for new: jenkins-ssh-release-credential Fix in release-job.sh These were overlooked for merge: git config user.name git config user.email gerrit_ssh=$(echo "$GERRIT_URL" | awk -F"/" '{print $3}') git remote set-url origin ssh://"$RELEASE_USERNAME"@"$gerrit_ssh":29418/$PROJECT Also included a small capitalization fix in lf-info-vote.rst ISSUE: RELENG-2127 Signed-off-by: Aric Gardner Signed-off-by: Anil Belur Change-Id: I11ad122153d71a3d25d6b8839e09435f8b27b19d --- .jjb-test/defaults.yaml | 1 + docs/_static/nexus-promote-privs.png | Bin 0 -> 37139 bytes docs/jjb/lf-info-vote.rst | 2 +- docs/jjb/lf-release-jobs.rst | 151 ++++++++++++++++++--- .../notes/lf-release-jobs-f470e781be753872.yaml | 7 + shell/release-job.sh | 4 + 6 files changed, 145 insertions(+), 20 deletions(-) create mode 100644 docs/_static/nexus-promote-privs.png create mode 100644 releasenotes/notes/lf-release-jobs-f470e781be753872.yaml diff --git a/.jjb-test/defaults.yaml b/.jjb-test/defaults.yaml index ddf07c0c..f7d88947 100644 --- a/.jjb-test/defaults.yaml +++ b/.jjb-test/defaults.yaml @@ -4,6 +4,7 @@ # General jenkins-ssh-credential: test-credential + jenkins-ssh-release-credential: test-release-credential # Gerrit Infra gerrit-server-name: test-server diff --git a/docs/_static/nexus-promote-privs.png b/docs/_static/nexus-promote-privs.png new file mode 100644 index 0000000000000000000000000000000000000000..b770123da40643e1f06b06690f2f63c50a4c2b90 GIT binary patch literal 37139 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 literal 0 HcmV?d00001 diff --git a/docs/jjb/lf-info-vote.rst b/docs/jjb/lf-info-vote.rst index 64151f1f..733a5510 100644 --- a/docs/jjb/lf-info-vote.rst +++ b/docs/jjb/lf-info-vote.rst @@ -1,7 +1,7 @@ .. _lf-global-jjb-info-vote: ############# -INFO VOTE JOB +Info Vote Job ############# Job counts the votes from the committers against a change diff --git a/docs/jjb/lf-release-jobs.rst b/docs/jjb/lf-release-jobs.rst index 87932f85..73187b13 100644 --- a/docs/jjb/lf-release-jobs.rst +++ b/docs/jjb/lf-release-jobs.rst @@ -1,28 +1,141 @@ .. _lf-global-jjb-release: -#################### -Releng Release Files -#################### +####################### +Self Serve Release Jobs +####################### -Projects can 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. -if a maven_central_url is given artifact will be pushed there as well. +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 -example of a projects release file +.. note:: + + Example of a project's release file: + +.. code-block:: bash + + $ cat releases/1.0.0.yaml + --- + distribution_type: 'maven' + version: '1.0.0' + project: 'example-test-release' + log_dir: 'example-test-release-maven-stage-master/17/' + maven_central_url: 'oss.sonatype.org' + +.. note:: + + Example of a terse Jenkins job to call global-jjb macro: + +.. code-block:: none + + - project: + name: '{project-name}-gerrit-release-jobs' + project: 'example-test-release' + build-node: centos7-builder-2c-1g + project-name: example-test-release + jobs: + - '{project-name}-gerrit-release-jobs' + +.. note:: + + Example of a verbose Jenkins job to call global-jjb macro: + +.. code-block:: none + + - project: + name: '{project-name}-releases-verify' + project: 'example-test-release' + build-node: centos7-builder-2c-1g + project-name: example-test-release + jobs: + - 'gerrit-releases-verify' + +.. code-block:: none + + - project: + name: '{project-name}-releases-merge' + project: 'example-test-release' + build-node: centos7-builder-2c-1g + project-name: example-test-release + jobs: + - 'gerrit-releases-merge' + +.. note:: + + Release Engineers Please follow the setup guide before adding the job definition: + +Setup for LFID Nexus Jenkins and Gerrit: +======================================== + +LFID +==== + +Create an ``lfid`` and an ``ssh-key`` + +``RELEASE_USERNAME`` +``RELEASE_EMAIL`` + +ssh-key example: .. code-block:: bash - $ cat releases/1.0.0.yaml - --- - distribution_type: 'maven' - version: '1.0.0' - project: 'zzz-test-release' - log_dir: 'zzz-test-release-maven-stage-master/17/' - maven_central_url: 'oss.sonatype.org' + ssh-keygen -t rsa -C "collab-it+odl-release@linuxfoundation.org" -f /tmp/odl-release + + +`Create an LFID `_ + +Nexus +===== + +Create a Nexus account called ``'jenkins-release'`` with promote privileges. + +.. image:: ../_static/nexus-promote-privs.png + +Gerrit +====== + +Log into your Gerrit with ``RELEASE_USERNAME``, upload 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`` +``push - refs/heads/*`` + +1. Add a push reference +2. Set the ref as refs/heads/* +3. Make sure "force push" is not checked + +Add ``RELEASE_USERNAME`` to group ``self-serve-release`` and group ``Non-Interactive Users`` + +Jenkins +======= + +Add a global credential to Jenkins called ``jenkins-release`` and set the ID: ``'jenkins-release'`` +as its value insert the ``ssh-key`` that you uploaded to Gerrit. + +Add Global vars in Jenkins: +Jenkins configre -> Global properties -> Environment variables + +``RELEASE_USERNAME = $RELEASE_USERNAME`` +``RELEASE_EMAIL = $RELEASE_EMAIL`` + +Add or edit the managed file in Jenkins called ``lftoolsini``, appending a nexus section: +Jenkins Settings -> Managed files -> Add (or edit) -> Custom file + +.. code-block:: none + + [nexus] + username=jenkins-release + password=redacted + +Ci-management +============= + +upgrade you projects global-jjb if needed +add this to your global defaults file (eg: jjb/defaults.yaml) + +.. code-block:: bash -lftools nexus release is used so there must be a lftoolsini section in jenkins -configfiles with a [nexus] section for auth. + jenkins-ssh-release-credential: 'jenkins-release' Macros ====== @@ -60,7 +173,7 @@ Runs: :Required parameters: :build-node: The node to run build on. - :jenkins-ssh-credential: Credential to use for SSH. (Generally set + :jenkins-ssh-release-credential: Credential to use for SSH. (Generally set in defaults.yaml) :stream: run this job against: master @@ -101,7 +214,7 @@ is available on the job. :Required Parameters: :build-node: The node to run build on. - :jenkins-ssh-credential: Credential to use for SSH. (Generally set + :jenkins-ssh-release-credential: Credential to use for SSH. (Generally set in defaults.yaml) :stream: run this job against: master diff --git a/releasenotes/notes/lf-release-jobs-f470e781be753872.yaml b/releasenotes/notes/lf-release-jobs-f470e781be753872.yaml new file mode 100644 index 00000000..bd82c3ac --- /dev/null +++ b/releasenotes/notes/lf-release-jobs-f470e781be753872.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Allows projects to promote their own builds. + Requires setup of accounts and permissions in + Gerrit, Jenkins and Nexus. Please refer to the + lf-release-jobs documentation for details. diff --git a/shell/release-job.sh b/shell/release-job.sh index ec59da09..783979a6 100644 --- a/shell/release-job.sh +++ b/shell/release-job.sh @@ -105,6 +105,10 @@ for release_file in $release_files; do ########## Merge Part ############## if [[ "$JOB_NAME" =~ "merge" ]]; then echo "Running merge" + gerrit_ssh=$(echo "$GERRIT_URL" | awk -F"/" '{print $3}') + git remote set-url origin ssh://"$RELEASE_USERNAME"@"$gerrit_ssh":29418/$PROJECT + git config user.name "$RELEASE_USERNAME" + git config user.email "$RELEASE_EMAIL" git push origin "$VERSION" lftools nexus release --server "$NEXUS_URL" "$STAGING_REPO" if [ "${MAVEN_CENTRAL_URL}" == 'None' ]; then -- 2.16.6