Repair pypi template tag and trigger behaviors 66/61966/2
authorLott, Christopher (cl778h) <cl778h@att.com>
Thu, 10 Oct 2019 18:43:55 +0000 (14:43 -0400)
committerLott, Christopher (cl778h) <cl778h@att.com>
Fri, 11 Oct 2019 10:27:42 +0000 (06:27 -0400)
Add missing {branch} parameter to branch-pattern in gerrit trigger
blocks in PyPI release-verify and release-merge templates. Jobs
were starting on all defined branches, not limited to the target.

Change pypi-tag-release.sh script to continue (not declare error)
if the tag already exists.

Update docs for the tagging behavior.

Change-Id: I76f31520794cc673e7f398ea90cd17d5ef3851a8
Signed-off-by: Lott, Christopher (cl778h) <cl778h@att.com>
docs/jjb/lf-python-jobs.rst
jjb/lf-python-jobs.yaml
releasenotes/notes/repair-pypi-behaviors-500855d749779c34.yaml [new file with mode: 0644]
shell/pypi-tag-release.sh

index 13047ed..2e490fb 100644 (file)
@@ -29,9 +29,10 @@ lf-infra-pypi-tag-release
 -------------------------
 
 Checks the format of the release version string and checks the git
-repository for that tag. In a merge job, continues to tag the repository
-and push the tag to the git server. Also installs supporting tools
-including Sigul and lftools.  Sigul requires a CentOS build node.
+repository for that tag. In a merge job, if the tag does not exist,
+adds the tag to the repository, signs the tag, and pushes the tag
+to the git server. Signing requires sigul, which is only available
+on a CentOS build node.
 
 lf-infra-pypi-upload
 --------------------
@@ -331,7 +332,7 @@ PyPI Verify
 
 Verifies a Python library project on creation of a patch set. Runs tox
 then builds a source distribution and (optionally) a binary
-distribution.  The project repository must have a setup.py file with
+distribution. The project repository must have a setup.py file with
 configuration for packaging the component.
 
 The tox runner is pyenv aware so if the image contains an installation
@@ -393,7 +394,7 @@ pyenv variables before running.
 PyPI Merge
 ----------
 
-Creates and uploads distribution files on merge of a patch set.  Runs
+Creates and uploads distribution files on merge of a patch set. Runs
 tox, builds a source distribution and (optionally) a binary
 distribution, and uploads the distribution(s) to a PyPI repository.
 This job should be configured to use a test PyPI repository like
@@ -461,7 +462,7 @@ PyPI section.
     :pre-build-script: Shell script to execute before the tox builder. For
         example, install system prerequisites. (default: a shell comment)
     :pypi-repo: Key for PyPI repository parameters in the .pypirc file.
-        Merge jobs should use a server like testpypi.python.org.  (default: pypi-test)
+        Merge jobs should use a server like testpypi.python.org. (default: pypi-test)
     :python-version: Python version to invoke pip install of tox-pyenv
         (default: python3)
     :stream: Keyword representing a release code-name.
@@ -489,13 +490,13 @@ Verifies a Python library project on creation of a patch set with a
 release yaml file. Runs tox, builds source and (optionally) binary
 distributions, checks the format of the version string, checks that
 the distribution file names contain the release version string, and
-checks that no tag exists in the code repository for the release
+checks if the tag exists in the code repository for the release
 version.
 
 To initiate the release process, create a releases/ or .releases/
 directory at the root of the project repository, add one release yaml
 file to it, and submit a change set with that release yaml file. A
-schema and and an example for the release yaml file appear below.  The
+schema and and an example for the release yaml file appear below. The
 version in the release yaml file must be a valid Semantic Versioning
 (SemVer) string, matching either the pattern "v#.#.#" or "#.#.#" where
 "#" is one or more digits.
@@ -571,7 +572,7 @@ An example of a pypi release file appears below.
         For example, install prerequisites or move files to the repo root.
         (default: a string with a shell comment)
     :pypi-repo: Key for PyPI repository parameters in the .pypirc file.
-        Release jobs should use a server like pypy.org.  (default: pypi)
+        Release jobs should use a server like pypy.org. (default: pypi)
     :python-version: Python version to invoke pip install of tox-pyenv
         (default: python3)
     :stream: Keyword representing a release code-name.
@@ -593,16 +594,17 @@ PyPI Release Merge
 ------------------
 
 Publishes a Python library on merge of a patch set with a release yaml
-file.  Runs tox, builds source and (optionally) binary distributions,
+file. Runs tox, builds source and (optionally) binary distributions,
 checks the format of the version string, checks that the distribution
-file names contain the release version string, checks that no tag
-exists in the code repository for the release version, tags the code
-repository with the release version, pushes the tag to the git server,
-and uploads distributions to a PyPI repository.
+file names contain the release version string, checks if the tag
+exists in the code repository for the release version, then if the tag
+does not exist, tags the code repository with the release version,
+signs the tag and pushes the tag to the git server. Finally this
+uploads the distributions to a PyPI repository.
 
 This job is similar to the PyPI merge job, but is only triggered by
-merge of a release yaml file and checks the version and tag before
-uploading to a public repository such as PyPI.
+merge of a release yaml file, also this checks the version and tag
+before uploading to a public repository such as PyPI.
 
 See the PyPI Release Verify job above for documentation of the release
 yaml file format.
@@ -651,7 +653,7 @@ The special parameters are as follows::
         For example, install prerequisites or move files to the repo root.
         (default: a string with a shell comment)
     :pypi-repo: Key for PyPI repository parameters in the .pypirc file.
-        Release jobs should use a server like pypy.org.  (default: pypi)
+        Release jobs should use a server like pypy.org. (default: pypi)
     :python-version: Python version to invoke pip install of tox-pyenv
         (default: python3)
     :stream: Keyword representing a release code-name.
index baf68f1..7cae5b8 100644 (file)
             - project-compare-type: "ANT"
               project-pattern: "{project}"
               branches:
-                - branch-compare-type: "ANT"
-                  branch-pattern: "**"
+                - branch-compare-type: ANT
+                  branch-pattern: "**/{branch}"
               file-paths: "{obj:gerrit_release_trigger_file_paths}"
 
 - job-template:
             - project-compare-type: "ANT"
               project-pattern: "{project}"
               branches:
-                - branch-compare-type: "ANT"
-                  branch-pattern: "**"
+                - branch-compare-type: ANT
+                  branch-pattern: "**/{branch}"
               file-paths: "{obj:gerrit_release_trigger_file_paths}"
 
 - job-template:
diff --git a/releasenotes/notes/repair-pypi-behaviors-500855d749779c34.yaml b/releasenotes/notes/repair-pypi-behaviors-500855d749779c34.yaml
new file mode 100644 (file)
index 0000000..3bf022a
--- /dev/null
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    Add missing {branch} parameter to branch-pattern in gerrit trigger
+    blocks in PyPI release-verify and release-merge templates. Jobs
+    were starting on all defined branches, not limited to target.
+    Change pypi-tag-release script to continue if tag exists, not stop.
index d920c54..2d098ee 100644 (file)
@@ -92,17 +92,14 @@ verify_dist(){
     fi
 }
 
-# TODO: how to tag Github?
+# sigul is only available on Centos
 tag_gerrit(){
     echo "INFO: Verifying tag $VERSION in repo"
     # Import public signing key
     gpg --import "$SIGNING_PUBKEY"
-    # Fail if tag exists
     if git tag -v "$VERSION"; then
-        echo "ERROR: Repo already tagged"
-        exit 1
-    else
-        echo "INFO: Repo has not yet been tagged"
+        echo "INFO: Repo already tagged"
+        return 0
     fi
     echo "INFO: Tagging repo"
     git tag -am "${PROJECT//\//-} $VERSION" "$VERSION"
@@ -147,5 +144,6 @@ if $USE_RELEASE_FILE; then
 fi
 verify_version
 verify_dist
+# TODO: write tag_github function
 tag_gerrit
 echo "---> pypi-tag-release.sh ends"