Update CI files #119
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_container' to update this file. | ||
# | ||
# For more info visit https://github.com/pulp/plugin_template | ||
--- | ||
name: Container Release Pipeline | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
release: | ||
description: "Release tag (e.g. 3.2.1)" | ||
defaults: | ||
run: | ||
working-directory: "pulp_container" | ||
jobs: | ||
build-artifacts: | ||
runs-on: "ubuntu-latest" | ||
strategy: | ||
fail-fast: false | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
path: "pulp_container" | ||
- 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 'pulp-infra@redhat.com' | ||
- 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_container.tar . | ||
- name: "Upload Artifact" | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: "pulp_container.tar" | ||
path: "pulp_container/pulp_container.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_container.tar" | ||
path: "pulp_container/" | ||
- 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_container.tar | ||
- name: Install httpie | ||
run: | | ||
echo ::group::HTTPIE | ||
pip install httpie | ||
echo ::endgroup:: | ||
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/pulp_container/.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_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_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
GITHUB_CONTEXT: ${{ github.event.pull_request.commits_url }} | ||
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: "pulp_container/container-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_container/container-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_container/container-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_container/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_container.tar" | ||
path: "pulp_container/" | ||
- 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 'pulp-infra@redhat.com' | ||
- name: Untar repository | ||
run: | | ||
tar -xf pulp_container.tar | ||
- 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 | ||
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" | ||
path: "pulp_container/" | ||
- name: "Download Python client docs" | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: "python-client-docs.tar" | ||
path: "pulp_container/" | ||
- 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" | ||
path: "pulp_container/" | ||
- name: "Untar python client packages" | ||
run: | | ||
tar -xvf container-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" | ||
path: "pulp_container/" | ||
- name: "Untar Ruby client packages" | ||
run: | | ||
tar -xvf container-ruby-client.tar | ||
- name: "Publish client to rubygems" | ||
run: | | ||
bash .github/workflows/scripts/publish_client_gem.sh | ||
- name: Create release on GitHub | ||
uses: actions/github-script@v7 | ||
env: | ||
TAG_NAME: ${{ inputs.release }} | ||
with: | ||
const { TAG_NAME } = process.env; | ||
script: | | ||
await github.rest.repos.createRelease({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
tag_name: TAG_NAME, | ||
make_latest: "legacy", | ||
}); |