# WARNING: DO NOT EDIT! # # This file was generated by plugin_template, and is managed by it. Please use # './plugin-template --github pulpcore' to update this file. # # For more info visit https://github.com/pulp/plugin_template --- name: Core Release Pipeline on: workflow_dispatch: inputs: release: description: "Release tag (e.g. 3.2.1)" defaults: run: working-directory: "pulpcore" jobs: build-artifacts: runs-on: "ubuntu-latest" strategy: fail-fast: false steps: - uses: "actions/checkout@v4" with: fetch-depth: 0 path: "pulpcore" - 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 '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: "Upload Package whl" uses: "actions/upload-artifact@v3" with: name: "plugin_package" path: "pulpcore/dist/" if-no-files-found: "error" - name: "Tar files" run: | tar -cvf pulpcore.tar . - name: "Upload Artifact" uses: "actions/upload-artifact@v3" with: name: "pulpcore.tar" path: "pulpcore/pulpcore.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: "pulpcore.tar" path: "pulpcore/" - 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 pulpcore.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/pulpcore/.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: "pulpcore/core-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: "pulpcore/core-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: "pulpcore/core-ruby-client.tar" if-no-files-found: "error" - name: "Upload python client packages" uses: "actions/upload-artifact@v3" with: name: "python-client.tar" path: "pulpcore/file-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: "pulpcore/file-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: "pulpcore/file-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: "pulpcore/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: "pulpcore.tar" path: "pulpcore/" - name: "Untar repository" run: | tar -xf pulpcore.tar - 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: "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: "pulpcore" - uses: "actions/download-artifact@v3" with: name: "plugin_package" path: "pulpcore/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: "pulpcore" - name: "Download Python client" uses: "actions/download-artifact@v3" with: name: "python-client.tar" path: "pulpcore/" - name: "Untar python client packages" run: | tar -xvf core-python-client.tar tar -xvf file-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: "pulpcore" - name: "Download Ruby client" uses: "actions/download-artifact@v3" with: name: "ruby-client.tar" path: "pulpcore/" - name: "Untar Ruby client packages" run: | tar -xvf core-ruby-client.tar tar -xvf file-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: "pulpcore" - 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: "pulpcore/" - name: "Download Python client docs" uses: "actions/download-artifact@v3" with: name: "python-client-docs.tar" path: "pulpcore/" - 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", });