Rpm Release Pipeline #201
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# WARNING: DO NOT EDIT! | |
# | |
# This file was generated by plugin_template, and is managed by it. Please use | |
# './plugin-template --github pulp_rpm' to update this file. | |
# | |
# For more info visit https://github.com/pulp/plugin_template | |
--- | |
name: Rpm Release Pipeline | |
on: | |
workflow_dispatch: | |
inputs: | |
release: | |
description: "Release tag (e.g. 3.2.1)" | |
defaults: | |
run: | |
working-directory: "pulp_rpm" | |
jobs: | |
build-artifacts: | |
runs-on: "ubuntu-latest" | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 0 | |
path: "pulp_rpm" | |
- 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 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: "Upload Package whl" | |
uses: "actions/upload-artifact@v3" | |
with: | |
name: "plugin_package" | |
path: "pulp_rpm/dist/" | |
if-no-files-found: "error" | |
- name: "Tar files" | |
run: | | |
tar -cvf pulp_rpm.tar . | |
- name: "Upload Artifact" | |
uses: "actions/upload-artifact@v3" | |
with: | |
name: "pulp_rpm.tar" | |
path: "pulp_rpm/pulp_rpm.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_rpm.tar" | |
path: "pulp_rpm/" | |
- uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 1 | |
repository: "pulp/pulp-openapi-generator" | |
path: "pulp-openapi-generator" | |
- 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_rpm.tar | |
- name: "Install python dependencies" | |
run: | | |
echo ::group::PYDEPS | |
pip install towncrier twine wheel httpie docker netaddr boto3 ansible mkdocs | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/pulp_rpm/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo ::endgroup:: | |
# 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_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}" | |
- name: "Install" | |
run: | | |
.github/workflows/scripts/install.sh | |
shell: "bash" | |
env: | |
PY_COLORS: "1" | |
ANSIBLE_FORCE_COLOR: "1" | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}" | |
- 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: "pulp_rpm/rpm-python-client.tar" | |
if-no-files-found: "error" | |
- name: "Upload python client docs" | |
uses: "actions/upload-artifact@v3" | |
with: | |
name: "python-client-docs.tar" | |
path: "pulp_rpm/rpm-python-client-docs.tar" | |
if-no-files-found: "error" | |
- name: "Upload ruby client packages" | |
uses: "actions/upload-artifact@v3" | |
with: | |
name: "ruby-client.tar" | |
path: "pulp_rpm/rpm-ruby-client.tar" | |
if-no-files-found: "error" | |
- 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: "pulp_rpm/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-tag: | |
runs-on: "ubuntu-latest" | |
needs: | |
- "build-bindings-docs" | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
steps: | |
- uses: "actions/download-artifact@v3" | |
with: | |
name: "pulp_rpm.tar" | |
path: "pulp_rpm/" | |
- name: "Untar repository" | |
run: | | |
tar -xf pulp_rpm.tar | |
- 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: "Push branch and tag to GitHub" | |
run: | | |
bash .github/workflows/scripts/push_branch_and_tag_to_github.sh ${{ github.event.inputs.release }} | |
publish-package: | |
runs-on: "ubuntu-latest" | |
needs: | |
- "build-bindings-docs" | |
- "publish-tag" | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
steps: | |
- uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 1 | |
path: "pulp_rpm" | |
- uses: "actions/download-artifact@v3" | |
with: | |
name: "plugin_package" | |
path: "pulp_rpm/dist/" | |
- uses: "actions/setup-python@v4" | |
with: | |
python-version: "3.8" | |
- name: "Install python dependencies" | |
run: | | |
echo ::group::PYDEPS | |
pip install twine | |
echo ::endgroup:: | |
- name: "Setting secrets" | |
run: | | |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" | |
env: | |
SECRETS_CONTEXT: "${{ toJson(secrets) }}" | |
- name: "Deploy plugin to pypi" | |
run: | | |
.github/workflows/scripts/publish_plugin_pypi.sh ${{ github.event.inputs.release }} | |
publish-python-bindings: | |
runs-on: "ubuntu-latest" | |
needs: | |
- "build-bindings-docs" | |
- "publish-tag" | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
steps: | |
- uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 1 | |
path: "pulp_rpm" | |
- name: "Download Python client" | |
uses: "actions/download-artifact@v3" | |
with: | |
name: "python-client.tar" | |
path: "pulp_rpm/" | |
- name: "Untar python client packages" | |
run: | | |
tar -xvf rpm-python-client.tar | |
- uses: "actions/setup-python@v4" | |
with: | |
python-version: "3.8" | |
- name: "Install python dependencies" | |
run: | | |
echo ::group::PYDEPS | |
pip install twine | |
echo ::endgroup:: | |
- name: "Setting secrets" | |
run: | | |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" | |
env: | |
SECRETS_CONTEXT: "${{ toJson(secrets) }}" | |
- name: "Publish client to pypi" | |
run: | | |
bash .github/workflows/scripts/publish_client_pypi.sh ${{ github.event.inputs.release }} | |
publish-ruby-bindings: | |
runs-on: "ubuntu-latest" | |
needs: | |
- "build-bindings-docs" | |
- "publish-tag" | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
steps: | |
- uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 1 | |
path: "pulp_rpm" | |
- name: "Download Ruby client" | |
uses: "actions/download-artifact@v3" | |
with: | |
name: "ruby-client.tar" | |
path: "pulp_rpm/" | |
- name: "Untar Ruby client packages" | |
run: | | |
tar -xvf rpm-ruby-client.tar | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "2.6" | |
- name: "Setting secrets" | |
run: | | |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" | |
env: | |
SECRETS_CONTEXT: "${{ toJson(secrets) }}" | |
- name: "Publish client to rubygems" | |
run: | | |
bash .github/workflows/scripts/publish_client_gem.sh ${{ github.event.inputs.release }} | |
publish-docs: | |
runs-on: "ubuntu-latest" | |
needs: | |
- "build-bindings-docs" | |
- "publish-tag" | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
steps: | |
- uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 1 | |
path: "pulp_rpm" | |
- uses: "actions/setup-python@v4" | |
with: | |
python-version: "3.8" | |
- name: "Install python dependencies" | |
run: | | |
echo ::group::PYDEPS | |
pip install 'packaging~=21.3' requests | |
echo ::endgroup:: | |
- name: "Setting secrets" | |
run: | | |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" | |
env: | |
SECRETS_CONTEXT: "${{ toJson(secrets) }}" | |
- name: "Download built docs" | |
uses: "actions/download-artifact@v3" | |
with: | |
name: "docs.tar" | |
path: "pulp_rpm/" | |
- name: "Download Python client docs" | |
uses: "actions/download-artifact@v3" | |
with: | |
name: "python-client-docs.tar" | |
path: "pulp_rpm/" | |
- name: "Publish docs to pulpproject.org" | |
run: | | |
tar -xvf docs.tar | |
.github/workflows/scripts/publish_docs.sh tag ${{ github.event.inputs.release }} | |
create-gh-release: | |
runs-on: "ubuntu-latest" | |
needs: | |
- "build-bindings-docs" | |
- "publish-tag" | |
- "publish-package" | |
- "publish-python-bindings" | |
- "publish-ruby-bindings" | |
- "publish-docs" | |
steps: | |
- name: "Create release on GitHub" | |
uses: "actions/github-script@v7" | |
env: | |
TAG_NAME: "${{ inputs.release }}" | |
with: | |
script: | | |
const { TAG_NAME } = process.env; | |
await github.rest.repos.createRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag_name: TAG_NAME, | |
make_latest: "legacy", | |
}); |