Skip to content

Python Release Pipeline #35

Python Release Pipeline

Python Release Pipeline #35

Workflow file for this run

# WARNING: DO NOT EDIT!
#
# This file was generated by plugin_template, and is managed by it. Please use
# './plugin-template --github pulp_python' to update this file.
#
# For more info visit https://github.com/pulp/plugin_template
---
name: Python Release Pipeline
on:
workflow_dispatch:
inputs:
release:
description: "Release tag (e.g. 3.2.1)"
before_script:
description: |
Bash code to run before bindings and docs are built. This should only be used when re-running
a workflow to correct some aspect of the docs. e.g.: git checkout origin/3.14 CHANGES.rst
required: false
env:
RELEASE_WORKFLOW: true
jobs:
build-artifacts:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: "3.8"
- name: Install python dependencies
run: |
echo ::group::PYDEPS
pip install packaging~=21.3 bump2version gitpython towncrier==19.9.0 wheel requests
echo ::endgroup::
- name: Configure Git with pulpbot name and email
run: |
git config --global user.name 'pulpbot'
git config --global user.email '[email protected]'
- name: Setting secrets
run: python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT"
env:
SECRETS_CONTEXT: ${{ toJson(secrets) }}
- name: Create the release commit, tag it, create a post-release commit, and build plugin package
run: python .github/workflows/scripts/release.py ${{ github.event.inputs.release }}
- name: 'Tar files'
run: tar -cvf pulp_python.tar .
- name: 'Upload Artifact'
uses: actions/upload-artifact@v3
with:
name: pulp_python.tar
path: pulp_python.tar
build-bindings-docs:
needs: build-artifacts
runs-on: ubuntu-latest
# Install scripts expect TEST to be set, 'docs' is most appropriate even though we don't run tests
env:
TEST: docs
steps:
- uses: actions/download-artifact@v3
with:
name: pulp_python.tar
- uses: actions/setup-python@v4
with:
python-version: "3.8"
- uses: ruby/setup-ruby@v1
with:
ruby-version: "2.6"
- name: Untar repository
run: |
tar -xf pulp_python.tar
# update to the branch's latest ci files rather than the ones from the release tag. this is
# helpful when there was a problem with the ci files during the release which needs to be
# fixed after the release tag has been created
- name: Update ci files
run: |
git checkout "origin/${GITHUB_REF##*/}" -- .ci
git checkout "origin/${GITHUB_REF##*/}" -- .github
- name: Install httpie
run: |
echo ::group::HTTPIE
pip install httpie
echo ::endgroup::
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV
# Building the bindings and docs requires accessing the OpenAPI specs endpoint, so we need to
# setup the Pulp instance.
- name: Before Install
run: .github/workflows/scripts/before_install.sh
shell: bash
env:
PY_COLORS: '1'
ANSIBLE_FORCE_COLOR: '1'
GITHUB_PULL_REQUEST: ${{ github.event.number }}
GITHUB_PULL_REQUEST_BODY: ${{ github.event.pull_request.body }}
GITHUB_BRANCH: ${{ github.head_ref }}
GITHUB_REPO_SLUG: ${{ github.repository }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_CONTEXT: ${{ github.event.pull_request.commits_url }}
- name: Install
run: |
export PLUGIN_VERSION=${{ github.event.inputs.release }}
.github/workflows/scripts/install.sh
env:
PY_COLORS: '1'
ANSIBLE_FORCE_COLOR: '1'
GITHUB_PULL_REQUEST: ${{ github.event.number }}
GITHUB_PULL_REQUEST_BODY: ${{ github.event.pull_request.body }}
GITHUB_BRANCH: ${{ github.head_ref }}
GITHUB_REPO_SLUG: ${{ github.repository }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_CONTEXT: ${{ github.event.pull_request.commits_url }}
shell: bash
- name: Additional before_script
run: ${{ github.event.inputs.before_script }}
shell: bash
- name: Install Python client
run: .github/workflows/scripts/install_python_client.sh
shell: bash
- name: Install Ruby client
run: .github/workflows/scripts/install_ruby_client.sh
shell: bash
- name: Upload python client packages
uses: actions/upload-artifact@v3
with:
name: python-client.tar
path: python-client.tar
- name: Upload python client docs
uses: actions/upload-artifact@v3
with:
name: python-client-docs.tar
path: python-client-docs.tar
- name: Upload ruby client packages
uses: actions/upload-artifact@v3
with:
name: ruby-client.tar
path: ruby-client.tar
- name: Build docs
run: |
export DJANGO_SETTINGS_MODULE=pulpcore.app.settings
export PULP_SETTINGS=$PWD/.ci/ansible/settings/settings.py
make -C docs/ PULP_URL="https://pulp" diagrams html
tar -cvf docs/docs.tar docs/_build
- name: Upload built docs
uses: actions/upload-artifact@v3
with:
name: docs.tar
path: docs/docs.tar
- name: Logs
if: always()
run: |
echo "Need to debug? Please check: https://github.com/marketplace/actions/debugging-with-tmate"
http --timeout 30 --check-status --pretty format --print hb "https://pulp${PULP_API_ROOT}api/v3/status/" || true
docker images || true
docker ps -a || true
docker logs pulp || true
docker exec pulp ls -latr /etc/yum.repos.d/ || true
docker exec pulp cat /etc/yum.repos.d/* || true
docker exec pulp bash -c "pip3 list && pip3 install pipdeptree && pipdeptree"
publish:
runs-on: ubuntu-latest
needs: build-bindings-docs
env:
TEST: publish
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/download-artifact@v3
with:
name: pulp_python.tar
- uses: actions/setup-python@v4
with:
python-version: "3.8"
- uses: ruby/setup-ruby@v1
with:
ruby-version: "2.6"
- name: Configure Git with pulpbot name and email
run: |
git config --global user.name 'pulpbot'
git config --global user.email '[email protected]'
- name: Untar repository
run: |
tar -xf pulp_python.tar
# update to the branch's latest ci files rather than the ones from the release tag. this is
# helpful when there was a problem with the ci files during the release which needs to be
# fixed after the release tag has been created
- name: Update ci files
run: |
git checkout "origin/${GITHUB_REF##*/}" -- .ci
git checkout "origin/${GITHUB_REF##*/}" -- .github
- name: Setting secrets
run: python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT"
env:
SECRETS_CONTEXT: ${{ toJson(secrets) }}
- name: Install python dependencies
run: |
echo ::group::PYDEPS
pip install gitpython requests packaging~=21.3 tweepy
echo ::endgroup::
- name: Push branch and tag to GitHub
run: bash .github/workflows/scripts/push_branch_and_tag_to_github.sh ${{ github.event.inputs.release }}
- name: Download built docs
uses: actions/download-artifact@v3
with:
name: docs.tar
- name: Download Python client docs
uses: actions/download-artifact@v3
with:
name: python-client-docs.tar
- name: Publish docs to pulpproject.org
run: |
tar -xvf docs.tar
.github/workflows/scripts/publish_docs.sh tag ${{ github.event.inputs.release }}
- name: Deploy plugin to pypi
run: bash .github/workflows/scripts/publish_plugin_pypi.sh ${{ github.event.inputs.release }}
- name: Download Python client
uses: actions/download-artifact@v3
with:
name: python-client.tar
- name: Untar python client packages
run: tar -xvf python-client.tar
- name: Publish client to pypi
run: bash .github/workflows/scripts/publish_client_pypi.sh
- name: Download Ruby client
uses: actions/download-artifact@v3
with:
name: ruby-client.tar
- name: Untar Ruby client packages
run: tar -xvf ruby-client.tar
- name: Publish client to rubygems
run: bash .github/workflows/scripts/publish_client_gem.sh
- name: Update GitHub
continue-on-error: true
run: |
set -euv
export COMMIT_MSG=$(git log --format=%B --no-merges -1)
export GH_ISSUES=$(echo $COMMIT_MSG | grep -o "GH Issues: .*" | awk '{print $3}')
pip install pygithub
echo "GH Issues $GH_ISSUES"
python .ci/scripts/update_github.py
- name: Create release on GitHub
run: bash .github/workflows/scripts/create_release_from_tag.sh ${{ github.event.inputs.release }}