Merge "Use "upgrade-strategy eager" for pip install"
authorEric Ball <eball@linuxfoundation.org>
Mon, 4 Nov 2019 17:15:30 +0000 (17:15 +0000)
committerGerrit Code Review <gerrit@linuxfoundation.org>
Mon, 4 Nov 2019 17:15:30 +0000 (17:15 +0000)
docs/jjb/lf-docker-jobs.rst
docs/jjb/lf-python-jobs.rst
jenkins-init-scripts/lf-env.sh
jjb/lf-docker-jobs.yaml
jjb/lf-python-jobs.yaml
jjb/lf-release-jobs.yaml
releasenotes/notes/docker-job-gerrit-trigger-regex-62e442cadcce9356.yaml [new file with mode: 0644]
releasenotes/notes/fix-pypi-compare-type-a3ae65287c42d2d3.yaml [new file with mode: 0644]
releasenotes/notes/fix-release-job-comment-triggers-692baf00dabe99e8.yaml [new file with mode: 0644]
releasenotes/notes/update-bash-library-86887cdc0675f956.yaml [new file with mode: 0644]

index 4a91dc7..e029bed 100644 (file)
@@ -54,7 +54,9 @@ Executes a docker build task.
     - gerrit-docker-verify
     - github-docker-verify
 
-:Comment Trigger: recheck|reverify
+:Comment Trigger: **recheck|reverify** post a comment with one of the
+    triggers to launch this job manually. Do not include any other
+    text or vote in the same comment.
 
 :Required parameters:
 
@@ -116,7 +118,9 @@ Executes a docker build task and publishes the resulting images to a specified D
     - gerrit-docker-merge
     - github-docker-merge
 
-:Comment Trigger: remerge
+:Comment Trigger: **remerge** post a comment with the trigger to launch
+    this job manually. Do not include any other text or vote in the
+    same comment.
 
 :Required parameters:
 
index 217a7b3..2cb9516 100644 (file)
@@ -65,7 +65,9 @@ to access Nexus IQ Server.
     - gerrit-python-xc-clm
     - github-python-xc-clm
 
-:Comment Trigger: run-clm
+:Comment Trigger: **run-clm** post a comment with the trigger to launch
+    this job manually. Do not include any other text or vote in the
+    same comment.
 
 :Required parameters:
 
@@ -147,7 +149,9 @@ https://docs.sonarqube.org/display/PLUG/Python+Coverage+Results+Import
     - gerrit-tox-sonar
     - github-tox-sonar
 
-:Comment Trigger: run-sonar
+:Comment Trigger: **run-sonar** post a comment with the trigger to launch
+    this job manually. Do not include any other text or vote in the
+    same comment.
 
 :Required parameters:
 
@@ -229,7 +233,9 @@ variables before running.
     - gerrit-tox-verify
     - github-tox-verify
 
-:Comment Trigger: recheck|reverify
+:Comment Trigger: **recheck|reverify** post a comment with one of the
+    triggers to launch this job manually. Do not include any other
+    text or vote in the same comment.
 
 :Required Parameters:
 
@@ -288,7 +294,9 @@ variables before running.
     - gerrit-tox-merge
     - github-tox-merge
 
-:Comment Trigger: remerge
+:Comment Trigger: **remerge** post a comment with the trigger to launch
+    this job manually. Do not include any other text or vote in the
+    same comment.
 
 :Required Parameters:
 
@@ -349,7 +357,9 @@ pyenv variables before running.
     - gerrit-pypi-verify
     - github-pypi-verify
 
-:Comment Trigger: recheck
+:Comment Trigger: **recheck|reverify** post a comment with one of the
+    triggers to launch this job manually. Do not include any other
+    text or vote in the same comment.
 
 :Required Parameters:
 
@@ -439,7 +449,9 @@ the repository key-value pair is optional, it defaults to pypi.org.
     - gerrit-pypi-merge
     - github-pypi-merge
 
-:Comment Trigger: remerge
+:Comment Trigger: **remerge** post a comment with the trigger to launch
+    this job manually. Do not include any other text or vote in the
+    same comment.
 
 :Required Parameters:
 
index 2acc413..b07bf81 100644 (file)
@@ -26,15 +26,15 @@ _lf_done_file=".lf-done"
 # Name:    lf-echo-stderr
 #
 # SYNOPSIS
-#       source ~/lf-env.sh
+#   source ~/lf-env.sh
 #
-#       lf-echo-stderr "this entire" "string will be sent to stderr"
+#   lf-echo-stderr "this entire" "string will be sent to stderr"
 #
 # DESCRIPTION
-#       This function will echo all command line aruments to 'stderr'
+#   This function will echo all command line aruments to 'stderr'
 #
 # RETURN VALUE
-#       None
+#   None
 #
 ################################################################################
 
@@ -46,28 +46,28 @@ function lf-echo-stderr() { echo "$@" 1>&2; }
 #       lf-boolean()
 #
 # SYNOPSIS
-#       # shellcheck disable=SC1090
-#       source ~/lf-env.sh
+#   # shellcheck disable=SC1090
+#   source ~/lf-env.sh
 #
-#       if lf-boolean $VAR; then
-#           echo "VAR is true"
-#       fi
+#   if lf-boolean $VAR; then
+#       echo "VAR is true"
+#   fi
 #
 # DESCRIPTION
-#       This function will return a BOOLEAN (true or false) based upon the value
-#       of VAR. The value of VAR will be mapped to lower case. If VAR maps to
-#       "true", return true(0). If VAR maps to "false", return false(1).  Any
-#       other values will return false(2) and an error message.
+#   This function will return a BOOLEAN (true or false) based upon the value
+#   of VAR. The value of VAR will be mapped to lower case. If VAR maps to
+#   "true", return true(0). If VAR maps to "false", return false(1).  Any
+#   other values will return false(2) and an error message.
 #
 # RETURN VALUES
-#       true(0), false(1) or false(2)
+#   true(0), false(1) or false(2)
 #
 ################################################################################
 
 function lf-boolean()
 {
     if (( $# != 1 )); then
-        echo "ERROR: ${FUNCNAME[0]}() line: ${BASH_LINENO[0]} : Missing required argument"
+        echo "ERROR: ${FUNCNAME[0]}() line: ${BASH_LINENO[0]} : Missing Required Argument"
         return 1
     fi
     local bool
@@ -89,20 +89,20 @@ function lf-boolean()
 ################################################################################
 #
 # NAME
-#       lf-venv-activate()
+#   lf-venv-activate()
 #
 # SYNOPSIS
-#       # shellcheck disable=SC1090
-#       source ~/lf-env.sh
+#   # shellcheck disable=SC1090
+#   source ~/lf-env.sh
 #
-#       lf-venv-activate python3
+#   lf-venv-activate python3
 #
 # DESCRIPTION
-#       This function will validate existance of 'python' venv. If it exists
-#       'path-to-venv/bin' will be prepended to the PATH.
+#   This function will validate existance of 'python' venv. If it exists
+#   'path-to-venv/bin' will be prepended to the PATH.
 #
 # RETURN VALUES
-#       None
+#   None
 #
 ################################################################################
 
@@ -132,23 +132,25 @@ function lf-venv-activate()
 ################################################################################
 #
 # NAME
-#       lf-venv-create()
+#   lf-venv-create python [package]...
 #
 # SYNOPSIS
-#       # shellcheck disable=SC1090
-#       source ~/lf-env.sh
+#   # shellcheck disable=SC1090
+#   source ~/lf-env.sh
 #
-#       lf-venv-create python2
-#       or
-#       lf-venv-create python3.6
+#   lf-venv-create python3 tox tox-pyenv virtualenv
+#   lf-venv-create python3.6
 #
 # DESCRIPTION
-#       This function will create a Python Virtual Environment based on the
-#       python specified. The 'python' argument must be in the PATH. The venv
-#       will be located in ~/.venv## where ## comes from the 'python' argument.
-#       I.E. python3 -> ~/.venv3. The resulting venv will be left 'read-only' to
-#       discourage the installation of any other packages (except by
-#       lf-venv-add()).
+#   This function will create/update a Python Virtual Environment (venv) based
+#   on the python specified. The 'python' argument must be in the PATH. The venv
+#   will be located in ~/.venv## where ## comes from the 'python' argument.
+#   I.E. python3 -> ~/.venv3. The resulting venv will be left 'read-only' to
+#   discourage the installation of any other packages (except by
+#   lf-venv-create()). By default, only versioned packages will be installed, so
+#   any required packages need to be specified.  By default the 'pip install
+#   --upgrade' will be run multiple times. Sometimes pip needs that to get the
+#   versioning correct.
 #
 # RETURN VALUES
 #       None
@@ -157,15 +159,17 @@ function lf-venv-activate()
 
 function lf-venv-create()
 {
-    if (( $# != 1 )); then
-        lf-echo-stderr "${FUNCNAME[0]}(): ERROR: Missing Python argument"
+    if (( $# < 1 )); then
+        lf-echo-stderr "${FUNCNAME[0]}(): ERROR: Missing Required Arguments"
         return 1
     fi
     python=$1
+    shift
     if ! type $python > /dev/null; then
         lf-echo-stderr "${FUNCNAME[0]}(): ERROR: Unknown Python: $python"
         return 1
     fi
+    local pkg_list="$* "
     local venv=~/.venv${python#python}
     local suffix=$python-$$
     local pip_log=/tmp/pip_log.$suffix
@@ -186,25 +190,22 @@ function lf-venv-create()
         # For Python2, just create venv and install pip
         virtualenv -p $python $venv > $pip_log || return 1
         $venv/bin/pip install --upgrade pip > $pip_log || return 1
+        $venv/bin/pip install --upgrade $pkg_list > $pip_log || return 1
         ;;
     python3*)
-        local pkg_list="git-review jenkins-job-builder lftools[openstack] "
-        pkg_list+="python-heatclient python-openstackclient "
-        pkg_list+="setuptools testresources tox yq"
+        # Include any packages that are tied to a specific version
+        pkg_list+="jenkins-job-builder==2.8.0 "
         $python -m venv $venv > $pip_log
         $venv/bin/pip install --upgrade pip > $pip_log || return 1
         # Redirect errors for now
         $venv/bin/pip install --upgrade $pkg_list >> $pip_log 2> /dev/null || return 1
         # Generate list of packages
         pkg_list=$($venv/bin/pip freeze | awk -F '=' '{print $1}') || return 1
-        # Update all packages, usuaally need to run twice to get all versions
-        # correct.
-        local upgrade_cmd="$venv/bin/pip install --upgrade $pkg_list"
-        if $upgrade_cmd >> $pip_log 2>&1 > /dev/null ; then
-            echo -n "Running 'pip --upgrade' to validate..."
-            $upgrade_cmd >> $pip_log || return 1
-            echo "..OK"
-        fi
+        # Update all packages, may need to run twice to get all versions
+        # synced up. Ignore exit status on first try
+        $venv/bin/pip install --upgrade $pkg_list >> $pip_log || true
+        echo "Running 'pip --upgrade' to validate..."
+        $venv/bin/pip install --upgrade $pkg_list >> $pip_log || return 1
         ;;
     *)
         lf-echo-stderr "${FUNCNAME[0]}(): ERROR: No support for: $python"
@@ -225,23 +226,23 @@ function lf-venv-create()
 ################################################################################
 #
 # NAME
-#       lf-venv-add()
+#   lf-venv-add()
 #
 # SYNOPSIS
-#       # shellcheck disable=SC1090
-#       source ~/lf-env.sh
+#   # shellcheck disable=SC1090
+#   source ~/lf-env.sh
 #
-#       lf-venv-add python3 pkg
-#       or
-#       lf-venv-add python2 pkg1 pkg2 pkg3
+#   lf-venv-add python3 pkg
+#   or
+#   lf-venv-add python2 pkg1 pkg2 pkg3
 #
 # DESCRIPTION
-#       This function will add one or more python packages to an existing venv.
-#       Attempts to add packages directly (pip) will result in errors because
-#       the venv does not have 'write' permission.
+#   This function will add one or more python packages to an existing venv.
+#   Attempts to add packages directly (pip) will result in errors because
+#   the venv does not have 'write' permission.
 #
 # RETURN VALUES
-#       None
+#   None
 #
 ################################################################################
 
index 4a7f297..1f9635c 100644 (file)
           exclude-no-code-change: false
       - draft-published-event
       - comment-added-contains-event:
-          comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
+          comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
 
     gerrit_trigger_file_paths:
       - compare-type: REG_EXP
     gerrit_merge_triggers:
       - change-merged-event
       - comment-added-contains-event:
-          comment-contains-value: remerge$
+          comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
 
     gerrit_trigger_file_paths:
       - compare-type: REG_EXP
index 606d5ec..fe06d71 100644 (file)
@@ -90,7 +90,7 @@
     submodule-disable: false
 
     gerrit_trigger_file_paths:
-      - compare-type: ANT
+      - compare-type: REG_EXP
         pattern: ".*"
 
     # github_included_regions MUST match gerrit_trigger_file_paths
     tox-envs: ""
 
     gerrit_trigger_file_paths:
-      - compare-type: ANT
+      - compare-type: REG_EXP
         pattern: ".*"
 
     # github_included_regions MUST match gerrit_trigger_file_paths
index c2bb749..c838482 100644 (file)
@@ -53,8 +53,8 @@
           exclude-no-code-change: false
       - draft-published-event
       - comment-added-contains-event:
-          comment-contains-value: |
-            ^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$
+          # yamllint disable-line rule:line-length
+          comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
 
     #####################
     # Job Configuration #
     gerrit_merge_triggers:
       - change-merged-event
       - comment-added-contains-event:
-          comment-contains-value: remerge$
+          comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
 
     #####################
     # Job Configuration #
diff --git a/releasenotes/notes/docker-job-gerrit-trigger-regex-62e442cadcce9356.yaml b/releasenotes/notes/docker-job-gerrit-trigger-regex-62e442cadcce9356.yaml
new file mode 100644 (file)
index 0000000..a789db2
--- /dev/null
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    Update the gerrit trigger regexes for the docker job templates
+    to use the shorter and more readable versions of the regexes
+    used in other verify and merge job templates.
+    Clarify documentation for comment triggers.
diff --git a/releasenotes/notes/fix-pypi-compare-type-a3ae65287c42d2d3.yaml b/releasenotes/notes/fix-pypi-compare-type-a3ae65287c42d2d3.yaml
new file mode 100644 (file)
index 0000000..cc9c56d
--- /dev/null
@@ -0,0 +1,10 @@
+---
+fixes:
+  - |
+
+    Change compare-type to REG_EXP in macros lf_python_clm_xc and
+    lf_pypi_common for config parameter gerrit_trigger_file_paths
+    with the regular expression .*
+    Previously was ANT, which didn't match anything with pattern .*
+    so recheck/reverify comment triggers did not work.
+    Clarify documentation of comment triggers for python jobs.
diff --git a/releasenotes/notes/fix-release-job-comment-triggers-692baf00dabe99e8.yaml b/releasenotes/notes/fix-release-job-comment-triggers-692baf00dabe99e8.yaml
new file mode 100644 (file)
index 0000000..1687fa6
--- /dev/null
@@ -0,0 +1,8 @@
+---
+fixes:
+  - |
+    Change the comment-added-contains-event strings for the release-verify and
+    release-merge templates to the same regexes used in other verify and merge
+    templates, instead of custom versions that didn't seem to work;
+    verify now uses '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
+    merge now uses  '^Patch Set\s+\d+:\s+remerge\s*$'
diff --git a/releasenotes/notes/update-bash-library-86887cdc0675f956.yaml b/releasenotes/notes/update-bash-library-86887cdc0675f956.yaml
new file mode 100644 (file)
index 0000000..3238e13
--- /dev/null
@@ -0,0 +1,9 @@
+---
+features:
+  - |
+    By default, the lf-venv-create() function only installs/upgrades 'pip' and
+    and any packages that need to be tied to a specific version like. Currently
+    the only version specific package is: 'jenkins-job-builder==2.8.0'. The
+    current version of lf-venv-create() supports being called twice but that
+    functionality has NOT yet been thoroughly tested. RELENG-2508 has been
+    created to validate & optimize that functionality.