Merge "Add templates Cmake + SonarQube Jenkins plugin"
authorEric Ball <eball@linuxfoundation.org>
Wed, 4 Mar 2020 17:33:20 +0000 (17:33 +0000)
committerGerrit Code Review <gerrit@linuxfoundation.org>
Wed, 4 Mar 2020 17:33:20 +0000 (17:33 +0000)
docs/jjb/lf-release-jobs.rst
releasenotes/notes/tox-run-log-details-4e81e3136a6816c9.yaml [new file with mode: 0644]
shell/tox-run.sh

index 2ddc6ee..d4af19b 100644 (file)
@@ -70,8 +70,8 @@ The following parameters must appear in a maven release yaml file.
 :Required Parameters:
 
     :distribution_type: Must be "maven".
-    :log_dir: The suffix of the logs URL reported on completion by the
-        Jenkins stage job that created and pushed the artifact
+    :log_dir: The suffix of the logs URL reported on successful completion
+        by the Jenkins stage job that created and pushed the artifact
         to the staging repository.  For example, use value
         "example-project-maven-stage-master/17" for the logs URL
         https://logs.lf-project.org/production/vex-sjc-lfp-jenkins-prod-1/example-project-maven-stage-master/17
@@ -162,9 +162,9 @@ packages.
 
 :Required Parameters:
 
-    :log_dir: The suffix of the logs URL reported on completion by the
-        Jenkins merge job that created and pushed the distribution files
-        to the staging repository.  For example, use value
+    :log_dir: The suffix of the logs URL reported on successful completion
+        by the Jenkins merge job that created and pushed the distribution
+        files to the staging repository.  For example, use value
         "example-project-pypi-merge-master/17" for the logs URL
         https://logs.lf-project.org/production/vex-sjc-lfp-jenkins-prod-1/example-project-pypi-merge-master/17
     :pypi_project: The PyPI project name at the staging and
@@ -221,9 +221,9 @@ packages.
         "curl https://packagecloud.io/api/v1/repos/test_user/test_repo/search?q=
         | yq -r .[].filename"
     :ref: The git commit reference (SHA-1 code) to tag with the version string.
-    :log_dir: The suffix of the logs URL reported on completion by the
-        Jenkins merge job that created and pushed the distribution files
-        to the staging repository. For example, use value
+    :log_dir: The suffix of the logs URL reported on successful completion
+        by the Jenkins merge job that created and pushed the distribution
+        files to the staging repository. For example, use value
         "example-project-packagecloud-merge-/21" for the logs URL
         https://logs.lf-project.org/production/vex-sjc-lfp-jenkins-prod-1/example-project-packagecloud-merge/21
     :version: The semantic version string used for the package.
@@ -302,11 +302,8 @@ projects can repeat the release action in case of merge job failure.
 
     :gerrit_merge_triggers: Override Gerrit Triggers.
     :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
+        file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/.*\.yaml|\.releases\/.*\.yaml)``
 
 
 Release Verify
@@ -336,11 +333,8 @@ This template supports Maven and Container release jobs.
 
     :gerrit_verify_triggers: Override Gerrit Triggers.
     :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
+        file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/.*\.yaml|\.releases\/.*\.yaml)``
 
 
 PyPI Release Merge
@@ -385,12 +379,9 @@ projects can repeat the release action in case of merge job failure.
         should be the repository pypy.org. (default: pypi)
     :use-release-file: Whether to use the release file. (default: true)
 
-    :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)'
+    :gerrit_release_trigger_file_paths: Override file paths filter which checks
+        which file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)``
 
 PyPI Release Verify
 ~~~~~~~~~~~~~~~~~~~
@@ -429,19 +420,17 @@ verify template accepts neither a branch nor a stream parameter.
         should be the repository pypy.org (default: pypi)
     :use-release-file: Whether to use the release file. (default: true)
 
-    :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)'
+    :gerrit_release_trigger_file_paths: Override file paths filter which checks
+        which file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)``
 
 PackageCloud Release Verify
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 This template supports PackageCloud release jobs. Checks that the specified
 packages are present in the staging repository and absent from the release
-repository.
+repository. The file path trigger uses the regular expression
+``(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)``
 
 :Template Name: {project-name}-packagecloud-release-verify
 
@@ -463,30 +452,23 @@ repository.
     :gerrit-skip-vote: Skip voting for this job. (default: false)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
 
-    :gerrit_verify_triggers: Override Gerrit Triggers.
-    :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'
-
-
 PackageCloud Release Merge
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 This template supports PackageCloud release jobs.  Promotes the specified
 packages from the staging repository to the release repository.
+The file path trigger uses the regular expression
+``(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)``
 
 This template uses a git commit choosing strategy that builds the merged
 commit with the release yaml file, not the tip of the target branch, so
 projects can repeat the release action in case of merge job failure.
 
-:template name: {project-name}-packagecloud-release-merge
+:Template Name: {project-name}-packagecloud-release-merge
 
-:comment trigger: remerge
+:Comment Trigger: remerge
 
-:required parameters:
+:Required Parameters:
 
     :build-node: the node to run build on.
     :jenkins-ssh-release-credential: credential to use for ssh. (generally set
@@ -494,20 +476,11 @@ projects can repeat the release action in case of merge job failure.
     :project: git repository name
     :project-name: jenkins job name prefix
 
-:optional parameters:
+:Optional Parameters:
 
     :build-days-to-keep: days to keep build logs in jenkins. (default: 7)
     :build-timeout: timeout in minutes before aborting build. (default: 15)
 
-    :gerrit_merge_triggers: override gerrit triggers.
-    :gerrit_trigger_file_paths: override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: reg_exp
-              pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'
-
-
 Setup for LFID, Nexus, Jenkins and Gerrit
 -----------------------------------------
 
diff --git a/releasenotes/notes/tox-run-log-details-4e81e3136a6816c9.yaml b/releasenotes/notes/tox-run-log-details-4e81e3136a6816c9.yaml
new file mode 100644 (file)
index 0000000..aeea3fc
--- /dev/null
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Revise tox-run.sh to guard against unbound variable TOX_ENVS;
+    stop on error or unbound variable (options -eu); and to print
+    commands before executing (option -x).  Add echo command at end.
index c955466..af3ac7a 100644 (file)
 ##############################################################################
 echo "---> tox-run.sh"
 
+# do not use -o pipefail
+set -eux
+
 ARCHIVE_TOX_DIR="$WORKSPACE/archives/tox"
 ARCHIVE_DOC_DIR="$WORKSPACE/archives/docs"
 mkdir -p "$ARCHIVE_TOX_DIR"
 cd "$WORKSPACE/$TOX_DIR" || exit 1
 
-if [ -d "/opt/pyenv" ]; then
+if [[ -d /opt/pyenv ]]; then
     echo "---> Setting up pyenv"
     export PYENV_ROOT="/opt/pyenv"
     export PATH="$PYENV_ROOT/bin:$PATH"
@@ -25,8 +28,8 @@ if [ -d "/opt/pyenv" ]; then
 fi
 
 PARALLEL="${PARALLEL:-true}"
-if [ "${PARALLEL}" = true ]; then
-    if [ -n "$TOX_ENVS" ]; then
+if [[ ${PARALLEL} = true ]]; then
+    if [[ -n ${TOX_ENVS:-} ]]; then
         tox -e "$TOX_ENVS" --parallel auto --parallel-live | tee -a "$ARCHIVE_TOX_DIR/tox.log"
         tox_status="${PIPESTATUS[0]}"
     else
@@ -34,7 +37,7 @@ if [ "${PARALLEL}" = true ]; then
         tox_status="${PIPESTATUS[0]}"
     fi
 else
-    if [ -n "$TOX_ENVS" ]; then
+    if [[ -n ${TOX_ENVS:-} ]]; then
         tox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/tox.log"
         tox_status="${PIPESTATUS[0]}"
     else
@@ -43,6 +46,8 @@ else
     fi
 fi
 
+echo "---> Completed tox runs"
+
 # Disable SC2116 as we want to echo a space separated list of TOX_ENVS
 # shellcheck disable=SC2116
 for i in .tox/*/log; do
@@ -50,14 +55,13 @@ for i in .tox/*/log; do
     cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env"
 done
 
-echo "Completed tox runs."
-
-
 # If docs are generated push them to archives.
 DOC_DIR="${DOC_DIR:-docs/_build/html}"
-if [[ -d "$DOC_DIR" ]]; then
+if [[ -d $DOC_DIR ]]; then
     echo "---> Archiving generated docs"
     mv "$DOC_DIR" "$ARCHIVE_DOC_DIR"
 fi
 
+echo "---> tox-run.sh ends"
+
 test "$tox_status" -eq 0 || exit "$tox_status"