From 80fd45462e84ff59083de3038daea1a18915e28e Mon Sep 17 00:00:00 2001 From: "Lott, Christopher (cl778h)" Date: Thu, 10 Oct 2019 14:43:55 -0400 Subject: [PATCH] Repair pypi template tag and trigger behaviors 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) --- docs/jjb/lf-python-jobs.rst | 36 ++++++++++++---------- jjb/lf-python-jobs.yaml | 8 ++--- .../repair-pypi-behaviors-500855d749779c34.yaml | 7 +++++ shell/pypi-tag-release.sh | 10 +++--- 4 files changed, 34 insertions(+), 27 deletions(-) create mode 100644 releasenotes/notes/repair-pypi-behaviors-500855d749779c34.yaml diff --git a/docs/jjb/lf-python-jobs.rst b/docs/jjb/lf-python-jobs.rst index 13047edf..2e490fb1 100644 --- a/docs/jjb/lf-python-jobs.rst +++ b/docs/jjb/lf-python-jobs.rst @@ -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. diff --git a/jjb/lf-python-jobs.yaml b/jjb/lf-python-jobs.yaml index baf68f15..7cae5b8a 100644 --- a/jjb/lf-python-jobs.yaml +++ b/jjb/lf-python-jobs.yaml @@ -997,8 +997,8 @@ - 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: @@ -1067,8 +1067,8 @@ - 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 index 00000000..3bf022a8 --- /dev/null +++ b/releasenotes/notes/repair-pypi-behaviors-500855d749779c34.yaml @@ -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. diff --git a/shell/pypi-tag-release.sh b/shell/pypi-tag-release.sh index d920c54d..2d098ee5 100644 --- a/shell/pypi-tag-release.sh +++ b/shell/pypi-tag-release.sh @@ -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" -- 2.16.6