This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch chandan/automate-pypi-release in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 865d5f4357a5041163d4cbc0c4b359b280edae5a Author: Chandan Singh <csing...@bloomberg.net> AuthorDate: Fri Aug 24 22:15:00 2018 +0100 .gitlab-ci.yml: Publish to PyPI when new tags are pushed Add a new CI job to publish souce distribution archive to PyPi any time new tags are pushed to the repository. Releases will be made on test.pypi.org first. Part of https://gitlab.com/BuildStream/buildstream/issues/587. --- .gitlab-ci.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e8603a..812d5aa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,6 +14,9 @@ variables: PYTEST_ADDOPTS: "--color=yes" INTEGRATION_CACHE: "${CI_PROJECT_DIR}/cache/integration-cache" TEST_COMMAND: 'python3 setup.py test --index-url invalid://uri --addopts --integration' + TEST_PYPI_UPLOAD_URL: "https://test.pypi.org/legacy/" + TEST_PYPI_INDEX_URL: "https://test.pypi.org/simple/" + PYPI_UPLOAD_URL: "https://upload.pypi.org/legacy/" ##################################################### # Prepare stage # @@ -323,3 +326,33 @@ pages: - master except: - schedules + +# Release to PyPI, only for tags. +# +# TODO: To begin with, we only upload to test.pypi. Later we should also push +# to real PyPI after verifying that it can be installed correctly. +# +pypi_release: + stage: post + dependencies: + - source_dist + script: + - | + if [[ ! "$CI_COMMIT_TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Not processing non-numeric tag: $CI_COMMIT_TAG for PyPI" + exit + fi + minor_version="$(echo "$CI_COMMIT_TAG" | cut -d. -f2)" + if [[ "$(( minor_version %2 ))" -ne 0 ]]; then + echo "Not uploading development release: $CI_COMMIT_TAG to PyPI" + exit + fi + + # Credentials for PyPI are defined in secret CI variables "TWINE_USERNAME" + # and "TWINE_PASSWORD". + pip3 install twine + twine upload --repository-url "$TEST_PYPI_UPLOAD_URL" dist/*.tar.gz + pip3 install --extra-index-url "$TEST_PYPI_INDEX_URL" "BuildStream==$CI_COMMIT_TAG" + bst --version + only: + - tags