From 866e54074d8bd5e3a29f3ae60bacfee907149ed1 Mon Sep 17 00:00:00 2001 From: pulpbot Date: Fri, 1 Dec 2023 14:40:25 +0000 Subject: [PATCH] Update CI files [noissue] --- .github/template_gitref | 2 +- .github/workflows/build.yml | 14 +- .github/workflows/changelog.yml | 30 +- .github/workflows/ci.yml | 47 ++- .github/workflows/create-branch.yml | 15 +- .github/workflows/lint.yml | 12 +- .github/workflows/nightly.yml | 37 +- .github/workflows/pr_checks.yml | 2 +- .github/workflows/release.yml | 318 +++++++++++++----- .github/workflows/scripts/before_install.sh | 3 - .github/workflows/scripts/check_commit.sh | 13 +- .../scripts/install_python_client.sh | 21 +- .../workflows/scripts/publish_client_gem.sh | 25 +- .../workflows/scripts/publish_client_pypi.sh | 8 +- .github/workflows/scripts/publish_docs.sh | 17 - .../workflows/scripts/publish_plugin_pypi.sh | 28 +- .github/workflows/scripts/release.py | 2 +- .github/workflows/scripts/script.sh | 3 +- .github/workflows/test.yml | 121 ++++--- .github/workflows/update-labels.yml | 10 +- .github/workflows/update_ci.yml | 76 ++--- CHANGES/.TEMPLATE.rst | 12 +- docs/template_gitref | 2 +- 23 files changed, 473 insertions(+), 345 deletions(-) diff --git a/.github/template_gitref b/.github/template_gitref index f8a822ba..5eb4b23f 100644 --- a/.github/template_gitref +++ b/.github/template_gitref @@ -1 +1 @@ -2021.08.26-279-gea3c2fb +2021.08.26-290-g4d54366 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 407da5cd..648c0af0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,21 +19,23 @@ jobs: runs-on: "ubuntu-latest" steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 1 path: "pulp_gem" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS - pip install packaging wheel + pip install packaging twine wheel echo ::endgroup:: - name: "Build package" - run: "python3 setup.py sdist bdist_wheel --python-tag py3" - - name: 'Upload Package whl' + run: | + python3 setup.py sdist bdist_wheel --python-tag py3 + twine check dist/* + - name: "Upload Package whl" uses: "actions/upload-artifact@v3" with: name: "plugin_package" diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index f7a9b3e7..c9d41725 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -6,53 +6,53 @@ # For more info visit https://github.com/pulp/plugin_template --- -name: Gem changelog update +name: "Gem changelog update" on: push: branches: - - main + - "main" paths: - - CHANGES.rst - - CHANGES.md + - "CHANGES.rst" + - "CHANGES.md" workflow_dispatch: jobs: update-changelog: - runs-on: ubuntu-latest + runs-on: "ubuntu-latest" strategy: fail-fast: false steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 1 - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS pip install -r doc_requirements.txt echo ::endgroup:: - - name: Fake api schema + - name: "Fake api schema" run: | mkdir -p docs/_build/html echo "{}" > docs/_build/html/api.json mkdir -p docs/_static echo "{}" > docs/_static/api.json - - name: + - name: "Build Docs" run: | - pip install "Jinja2<3.1" make diagrams html - working-directory: ./docs + working-directory: "./docs" env: PULP_CONTENT_ORIGIN: "http://localhost/" - - name: Publish changlog to pulpproject.org - run: .github/workflows/scripts/publish_docs.sh changelog ${GITHUB_REF##*/} + - name: "Publish changlog to pulpproject.org" + run: | + .github/workflows/scripts/publish_docs.sh changelog ${GITHUB_REF##*/} env: - PULP_DOCS_KEY: ${{ secrets.PULP_DOCS_KEY }} + PULP_DOCS_KEY: "${{ secrets.PULP_DOCS_KEY }}" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e89c54cb..b8d1db57 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ # For more info visit https://github.com/pulp/plugin_template --- -name: Gem CI +name: "Gem CI" on: {pull_request: {branches: ['*']}} concurrency: @@ -18,49 +18,46 @@ defaults: working-directory: "pulp_gem" jobs: - ready-to-ship: - runs-on: ubuntu-latest + runs-on: "ubuntu-latest" steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 0 path: "pulp_gem" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Verify requirements files - run: python .ci/scripts/check_requirements.py + - name: "Verify requirements files" + run: | + python .ci/scripts/check_requirements.py lint: uses: "./.github/workflows/lint.yml" build: - needs: lint + needs: "lint" uses: "./.github/workflows/build.yml" test: - needs: build + needs: "build" uses: "./.github/workflows/test.yml" deprecations: - defaults: - run: - working-directory: "." - runs-on: ubuntu-latest + runs-on: "ubuntu-latest" if: github.base_ref == 'main' - needs: test + needs: "test" steps: - - name: Fail on deprecations + - name: "Create working directory" run: | - test -z "${{ needs.test.outputs.deprecations-pulp }}" - test -z "${{ needs.test.outputs.deprecations-azure }}" - test -z "${{ needs.test.outputs.deprecations-s3 }}" - test -z "${{ needs.test.outputs.deprecations-lowerbounds }}" - - name: Print deprecations - if: failure() + mkdir -p "pulp_gem" + working-directory: "." + - name: "Download Deprecations" + uses: actions/download-artifact@v3 + with: + name: "deprecations" + path: "pulp_gem" + - name: "Print deprecations" run: | - echo "${{ needs.test.outputs.deprecations-pulp }}" | base64 -d - echo "${{ needs.test.outputs.deprecations-azure }}" | base64 -d - echo "${{ needs.test.outputs.deprecations-s3 }}" | base64 -d - echo "${{ needs.test.outputs.deprecations-lowerbounds }}" | base64 -d + cat deprecations-*.txt | sort -u + ! cat deprecations-*.txt | grep '[^[:space:]]' diff --git a/.github/workflows/create-branch.yml b/.github/workflows/create-branch.yml index 86dd59f5..7adac43a 100644 --- a/.github/workflows/create-branch.yml +++ b/.github/workflows/create-branch.yml @@ -21,26 +21,27 @@ jobs: fail-fast: false steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 0 path: "pulp_gem" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS pip install bump2version jinja2 pyyaml echo ::endgroup:: - - name: Setting secrets - working-directory: pulp_gem - run: python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" + - name: "Setting secrets" + working-directory: "pulp_gem" + run: | + python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" env: - SECRETS_CONTEXT: ${{ toJson(secrets) }} + SECRETS_CONTEXT: "${{ toJson(secrets) }}" - name: Determine new branch name working-directory: pulp_gem diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2db66c69..f8667f7e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,18 +19,20 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 1 path: "pulp_gem" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - # lint_requirements contains tools needed for flake8, etc. - - name: Install requirements - run: pip3 install -r lint_requirements.txt + - name: "Install python dependencies" + run: | + echo ::group::PYDEPS + pip install -r lint_requirements.txt + echo ::endgroup:: - name: Lint workflow files run: | diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index bc85f36d..fa7ab313 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -33,22 +33,22 @@ jobs: changelog: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 0 path: "pulp_gem" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.11" - - name: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS pip install gitpython toml echo ::endgroup:: - - name: Configure Git with pulpbot name and email + - name: "Configure Git with pulpbot name and email" run: | git config --global user.name 'pulpbot' git config --global user.email 'pulp-infra@redhat.com' @@ -71,7 +71,7 @@ jobs: needs: test steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 1 path: "pulp_gem" @@ -81,17 +81,17 @@ jobs: name: "plugin_package" path: "pulp_gem/dist/" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS - pip install requests + pip install requests 'packaging~=21.3' mkdocs pymdown-extensions 'Jinja2<3.1' echo ::endgroup:: - - name: Set environment variables + - name: "Set environment variables" run: | echo "TEST=${{ matrix.env.TEST }}" >> $GITHUB_ENV @@ -107,24 +107,13 @@ jobs: name: "python-client-docs.tar" path: "pulp_gem" - - name: Setting secrets - run: python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" + - name: "Setting secrets" + run: | + python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" env: - SECRETS_CONTEXT: ${{ toJson(secrets) }} + SECRETS_CONTEXT: "${{ toJson(secrets) }}" - name: Publish docs to pulpproject.org run: | tar -xvf docs.tar -C ./docs .github/workflows/scripts/publish_docs.sh nightly ${GITHUB_REF##*/} - - - 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" diff --git a/.github/workflows/pr_checks.yml b/.github/workflows/pr_checks.yml index c810fca7..58b78658 100644 --- a/.github/workflows/pr_checks.yml +++ b/.github/workflows/pr_checks.yml @@ -26,7 +26,7 @@ jobs: permissions: pull-requests: write steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 0 - name: Commit Count Check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a8730e59..edb7faf1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,65 +25,75 @@ jobs: fail-fast: false steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 0 path: "pulp_gem" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS - pip install packaging~=21.3 bump2version gitpython towncrier==19.9.0 wheel requests + pip install 'packaging~=21.3' bump2version gitpython towncrier wheel requests echo ::endgroup:: - - name: Configure Git with pulpbot name and email + - 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" + - name: "Setting secrets" + run: | + python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" env: - SECRETS_CONTEXT: ${{ toJson(secrets) }} + 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: 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_gem/dist/" + if-no-files-found: "error" - name: "Tar files" run: | tar -cvf pulp_gem.tar . - name: "Upload Artifact" - uses: actions/upload-artifact@v3 + uses: "actions/upload-artifact@v3" with: name: "pulp_gem.tar" path: "pulp_gem/pulp_gem.tar" build-bindings-docs: - needs: build-artifacts - runs-on: ubuntu-latest + 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 + TEST: "docs" steps: - - uses: actions/download-artifact@v3 + - uses: "actions/download-artifact@v3" with: name: "pulp_gem.tar" path: "pulp_gem/" - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 1 repository: "pulp/pulp-openapi-generator" path: "pulp-openapi-generator" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - uses: ruby/setup-ruby@v1 @@ -94,56 +104,58 @@ jobs: run: | tar -xf pulp_gem.tar - - name: Install httpie + - name: "Install python dependencies" run: | - echo ::group::HTTPIE - pip install httpie - echo ::endgroup:: + echo ::group::PYDEPS + pip install towncrier twine wheel httpie docker netaddr boto3 ansible mkdocs echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/pulp_gem/.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 + - 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 }} + PY_COLORS: "1" + ANSIBLE_FORCE_COLOR: "1" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}" - - name: Install + - name: "Install" run: | - export PLUGIN_VERSION=${{ github.event.inputs.release }} .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 }} - 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 + 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 + uses: "actions/upload-artifact@v3" with: name: "python-client.tar" path: "pulp_gem/gem-python-client.tar" if-no-files-found: "error" - name: "Upload python client docs" - uses: actions/upload-artifact@v3 + uses: "actions/upload-artifact@v3" with: name: "python-client-docs.tar" path: "pulp_gem/gem-python-client-docs.tar" if-no-files-found: "error" - name: "Upload ruby client packages" - uses: actions/upload-artifact@v3 + uses: "actions/upload-artifact@v3" with: name: "ruby-client.tar" path: "pulp_gem/gem-ruby-client.tar" @@ -161,7 +173,7 @@ jobs: name: "docs.tar" path: "pulp_gem/docs/docs.tar" - - name: Logs + - name: "Logs" if: always() run: | echo "Need to debug? Please check: https://github.com/marketplace/actions/debugging-with-tmate" @@ -174,70 +186,93 @@ jobs: docker exec pulp bash -c "pip3 list && pip3 install pipdeptree && pipdeptree" - publish: - runs-on: ubuntu-latest - needs: build-bindings-docs + publish-tag: + runs-on: "ubuntu-latest" + needs: + - "build-bindings-docs" env: - TEST: publish - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" steps: - - uses: actions/download-artifact@v3 + - uses: "actions/download-artifact@v3" with: name: "pulp_gem.tar" path: "pulp_gem/" - - 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_gem.tar - - name: Configure Git with pulpbot name and email + - 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 + - name: "Setting secrets" run: | - tar -xf pulp_gem.tar - - - name: Setting secrets - run: python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" + python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" env: - SECRETS_CONTEXT: ${{ toJson(secrets) }} + SECRETS_CONTEXT: "${{ toJson(secrets) }}" - - name: Install python dependencies + - name: "Push branch and tag to GitHub" run: | - echo ::group::PYDEPS - pip install gitpython requests packaging~=21.3 - echo ::endgroup:: + 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" - - 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 + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + + steps: + - uses: "actions/checkout@v4" with: - name: "docs.tar" - path: "pulp_gem/" + fetch-depth: 1 + path: "pulp_gem" - - name: "Download Python client docs" - uses: actions/download-artifact@v3 + - uses: "actions/download-artifact@v3" with: - name: "python-client-docs.tar" - path: "pulp_gem/" + name: "plugin_package" + path: "pulp_gem/dist/" - - name: Publish docs to pulpproject.org + - uses: "actions/setup-python@v4" + with: + python-version: "3.8" + + - name: "Install python dependencies" 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 }} + 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_gem" + - name: "Download Python client" - uses: actions/download-artifact@v3 + uses: "actions/download-artifact@v3" with: name: "python-client.tar" path: "pulp_gem/" @@ -246,11 +281,42 @@ jobs: run: | tar -xvf gem-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 + 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_gem" + - name: "Download Ruby client" - uses: actions/download-artifact@v3 + uses: "actions/download-artifact@v3" with: name: "ruby-client.tar" path: "pulp_gem/" @@ -259,14 +325,82 @@ jobs: run: | tar -xvf gem-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 + 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_gem" + + - 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: Create release on GitHub - uses: actions/github-script@v7 + - name: "Download built docs" + uses: "actions/download-artifact@v3" + with: + name: "docs.tar" + path: "pulp_gem/" + + - name: "Download Python client docs" + uses: "actions/download-artifact@v3" + with: + name: "python-client-docs.tar" + path: "pulp_gem/" + + - 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 }} + TAG_NAME: "${{ inputs.release }}" with: script: | const { TAG_NAME } = process.env; diff --git a/.github/workflows/scripts/before_install.sh b/.github/workflows/scripts/before_install.sh index d4219838..a2aae680 100755 --- a/.github/workflows/scripts/before_install.sh +++ b/.github/workflows/scripts/before_install.sh @@ -55,9 +55,6 @@ then echo $COMMIT_MSG | sed -n -e 's/.*CI Base Image:\s*\([-_/[:alnum:]]*:[-_[:alnum:]]*\).*/ci_base: "\1"/p' >> .ci/ansible/vars/main.yaml fi -# Intall requirements for ansible playbooks -pip install docker netaddr boto3 ansible - for i in {1..3} do ansible-galaxy collection install "amazon.aws:1.5.0" && s=0 && break || s=$? && sleep 3 diff --git a/.github/workflows/scripts/check_commit.sh b/.github/workflows/scripts/check_commit.sh index 16fbd663..d948f877 100755 --- a/.github/workflows/scripts/check_commit.sh +++ b/.github/workflows/scripts/check_commit.sh @@ -8,20 +8,13 @@ # For more info visit https://github.com/pulp/plugin_template # make sure this script runs at the repo root -cd "$(dirname "$(realpath -e "$0")")"/../../.. +cd "$(dirname "$(realpath -e "$0")")/../../.." set -euv -echo ::group::REQUESTS -pip3 install requests - -pip3 install pygithub - -echo ::endgroup:: - -for sha in $(curl -H "Authorization: token $GITHUB_TOKEN" $GITHUB_CONTEXT | jq '.[].sha' | sed 's/"//g') +for SHA in $(curl -H "Authorization: token $GITHUB_TOKEN" "$GITHUB_CONTEXT" | jq -r '.[].sha') do - python3 .ci/scripts/validate_commit_message.py $sha + python3 .ci/scripts/validate_commit_message.py "$SHA" VALUE=$? if [ "$VALUE" -gt 0 ]; then exit $VALUE diff --git a/.github/workflows/scripts/install_python_client.sh b/.github/workflows/scripts/install_python_client.sh index b298cca1..8215373d 100755 --- a/.github/workflows/scripts/install_python_client.sh +++ b/.github/workflows/scripts/install_python_client.sh @@ -16,8 +16,6 @@ source .github/workflows/scripts/utils.sh export PULP_URL="${PULP_URL:-https://pulp}" -pip install twine wheel - REPORTED_STATUS="$(pulp status)" REPORTED_VERSION="$(echo "$REPORTED_STATUS" | jq --arg plugin "gem" -r '.versions[] | select(.component == $plugin) | .version')" VERSION="$(echo "$REPORTED_VERSION" | python -c 'from packaging.version import Version; print(Version(input()))')" @@ -28,8 +26,8 @@ rm -rf pulp_gem-client pushd pulp_gem-client python setup.py sdist bdist_wheel --python-tag py3 -twine check "dist/pulp_gem_client-$VERSION-py3-none-any.whl" || exit 1 -twine check "dist/pulp_gem-client-$VERSION.tar.gz" || exit 1 +twine check "dist/pulp_gem_client-$VERSION-py3-none-any.whl" +twine check "dist/pulp_gem-client-$VERSION.tar.gz" cmd_prefix pip3 install "/root/pulp-openapi-generator/pulp_gem-client/dist/pulp_gem_client-${VERSION}-py3-none-any.whl" tar cvf ../../pulp_gem/gem-python-client.tar ./dist @@ -39,6 +37,21 @@ find ./docs/* -exec sed -i 's/README//g' {} \; cp README.md docs/index.md sed -i 's/docs\///g' docs/index.md find ./docs/* -exec sed -i 's/\.md//g' {} \; + +cat >> mkdocs.yml << DOCSYAML +--- +site_name: PulpGem Client +site_description: Gem bindings +site_author: Pulp Team +site_url: https://docs.pulpproject.org/pulp_gem_client/ +repo_name: pulp/pulp_gem +repo_url: https://github.com/pulp/pulp_gem +theme: readthedocs +DOCSYAML + +# Building the bindings docs +mkdocs build + tar cvf ../../pulp_gem/gem-python-client-docs.tar ./docs popd popd diff --git a/.github/workflows/scripts/publish_client_gem.sh b/.github/workflows/scripts/publish_client_gem.sh index 0a3c7541..7e992256 100755 --- a/.github/workflows/scripts/publish_client_gem.sh +++ b/.github/workflows/scripts/publish_client_gem.sh @@ -12,27 +12,24 @@ set -euv # make sure this script runs at the repo root cd "$(dirname "$(realpath -e "$0")")"/../../.. - -mkdir ~/.gem || true -touch ~/.gem/credentials -echo "--- -:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials -sudo chmod 600 ~/.gem/credentials - -export VERSION=$(ls pulp_gem_client* | sed -rn 's/pulp_gem_client-(.*)\.gem/\1/p') +VERSION="$1" if [[ -z "$VERSION" ]]; then - echo "No client package found." - exit + echo "No version specified." + exit 1 fi -export response=$(curl --write-out %{http_code} --silent --output /dev/null https://rubygems.org/gems/pulp_gem_client/versions/$VERSION) +RESPONSE="$(curl --write-out '%{http_code}' --silent --output /dev/null "https://rubygems.org/gems/pulp_gem_client/versions/$VERSION")" -if [ "$response" == "200" ]; +if [ "$RESPONSE" == "200" ]; then echo "pulp_gem client $VERSION has already been released. Skipping." exit fi -GEM_FILE="$(ls pulp_gem_client-*)" -gem push ${GEM_FILE} +mkdir -p ~/.gem +touch ~/.gem/credentials +echo "--- +:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials +sudo chmod 600 ~/.gem/credentials +gem push "pulp_gem_client-${VERSION}.gem" diff --git a/.github/workflows/scripts/publish_client_pypi.sh b/.github/workflows/scripts/publish_client_pypi.sh index c763ace4..e7d7bffc 100755 --- a/.github/workflows/scripts/publish_client_pypi.sh +++ b/.github/workflows/scripts/publish_client_pypi.sh @@ -12,13 +12,11 @@ set -euv # make sure this script runs at the repo root cd "$(dirname "$(realpath -e "$0")")/../../.." -pip install twine - -VERSION="$(ls dist | sed -rn 's/pulp_gem-client-(.*)\.tar.gz/\1/p')" +VERSION="$1" if [[ -z "$VERSION" ]]; then - echo "No client package found." - exit + echo "No version specified." + exit 1 fi RESPONSE="$(curl --write-out '%{http_code}' --silent --output /dev/null "https://pypi.org/project/pulp-gem-client/$VERSION/")" diff --git a/.github/workflows/scripts/publish_docs.sh b/.github/workflows/scripts/publish_docs.sh index e6869391..c81580da 100755 --- a/.github/workflows/scripts/publish_docs.sh +++ b/.github/workflows/scripts/publish_docs.sh @@ -20,8 +20,6 @@ echo "$PULP_DOCS_KEY" > ~/.ssh/pulp-infra echo "docs.pulpproject.org,8.43.85.236 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGXG+8vjSQvnAkq33i0XWgpSrbco3rRqNZr0SfVeiqFI7RN/VznwXMioDDhc+hQtgVhd6TYBOrV07IMcKj+FAzg=" >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts -pip3 install packaging - export PYTHONUNBUFFERED=1 export DJANGO_SETTINGS_MODULE=pulpcore.app.settings export PULP_SETTINGS=$PWD/.ci/ansible/settings/settings.py @@ -38,24 +36,9 @@ if [[ "$GITHUB_WORKFLOW" == "Gem changelog update" ]]; then exit fi -pip install mkdocs pymdown-extensions "Jinja2<3.1" - mkdir -p ../gem-bindings tar -xvf gem-python-client-docs.tar --directory ../gem-bindings pushd ../gem-bindings -cat >> mkdocs.yml << DOCSYAML ---- -site_name: PulpGem Client -site_description: Gem bindings -site_author: Pulp Team -site_url: https://docs.pulpproject.org/pulp_gem_client/ -repo_name: pulp/pulp_gem -repo_url: https://github.com/pulp/pulp_gem -theme: readthedocs -DOCSYAML - -# Building the bindings docs -mkdocs build # publish to docs.pulpproject.org/pulp_gem_client rsync -avzh site/ doc_builder_pulp_gem@docs.pulpproject.org:/var/www/docs.pulpproject.org/pulp_gem_client/ diff --git a/.github/workflows/scripts/publish_plugin_pypi.sh b/.github/workflows/scripts/publish_plugin_pypi.sh index f1e8aa9c..2f6678ac 100755 --- a/.github/workflows/scripts/publish_plugin_pypi.sh +++ b/.github/workflows/scripts/publish_plugin_pypi.sh @@ -7,23 +7,27 @@ # # For more info visit https://github.com/pulp/plugin_template +set -euv + # make sure this script runs at the repo root cd "$(dirname "$(realpath -e "$0")")"/../../.. -set -euv +VERSION="$1" -export response=$(curl --write-out %{http_code} --silent --output /dev/null https://pypi.org/project/pulp-gem/$1/) -if [ "$response" == "200" ]; -then - echo "pulp_gem $1 has already been released. Skipping." - exit +if [[ -z "$VERSION" ]]; then + echo "No version specified." + exit 1 fi -pip install twine +RESPONSE="$(curl --write-out '%{http_code}' --silent --output /dev/null "https://pypi.org/project/pulp-gem/$VERSION/")" -twine check dist/pulp_gem-$1-py3-none-any.whl || exit 1 -twine check dist/pulp-gem-$1.tar.gz || exit 1 -twine upload dist/pulp_gem-$1-py3-none-any.whl -u pulp -p $PYPI_PASSWORD -twine upload dist/pulp-gem-$1.tar.gz -u pulp -p $PYPI_PASSWORD +if [ "$RESPONSE" == "200" ]; +then + echo "pulp_gem $VERSION has already been released. Skipping." + exit +fi -exit $? +twine upload -u pulp -p "$PYPI_PASSWORD" \ +"dist/pulp_gem-$VERSION-py3-none-any.whl" \ +"dist/pulp-gem-$VERSION.tar.gz" \ +; diff --git a/.github/workflows/scripts/release.py b/.github/workflows/scripts/release.py index 45b2a389..69da1905 100755 --- a/.github/workflows/scripts/release.py +++ b/.github/workflows/scripts/release.py @@ -48,7 +48,7 @@ def create_release_commits(repo, release_version, plugin_path): issues = ",".join(issues_to_close) # First commit: changelog - os.system(f"towncrier --yes --version {release_version}") + os.system(f"towncrier build --yes --version {release_version}") git = repo.git git.add("CHANGES.rst") git.add("CHANGES/*") diff --git a/.github/workflows/scripts/script.sh b/.github/workflows/scripts/script.sh index e8ff4582..7be22077 100755 --- a/.github/workflows/scripts/script.sh +++ b/.github/workflows/scripts/script.sh @@ -29,8 +29,7 @@ export PULP_URL="https://pulp" if [[ "$TEST" = "docs" ]]; then if [[ "$GITHUB_WORKFLOW" == "Gem CI" ]]; then - pip install towncrier==19.9.0 - towncrier --yes --version 4.0.0.ci + towncrier build --yes --version 4.0.0.ci fi cd docs make PULP_URL="$PULP_URL" diagrams html diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c5eb5e4d..df41cd87 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,25 +26,20 @@ jobs: - TEST: azure - TEST: s3 - TEST: lowerbounds - outputs: - deprecations-pulp: ${{ steps.deprecations.outputs.deprecations-pulp }} - deprecations-azure: ${{ steps.deprecations.outputs.deprecations-azure }} - deprecations-s3: ${{ steps.deprecations.outputs.deprecations-s3 }} - deprecations-lowerbounds: ${{ steps.deprecations.outputs.deprecations-lowerbounds }} steps: - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 1 path: "pulp_gem" - - uses: actions/checkout@v4 + - uses: "actions/checkout@v4" with: fetch-depth: 1 repository: "pulp/pulp-openapi-generator" path: "pulp-openapi-generator" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" @@ -53,69 +48,83 @@ jobs: name: "plugin_package" path: "pulp_gem/dist/" - - name: Install httpie + - name: "Install python dependencies" run: | - echo ::group::HTTPIE - pip install httpie - echo ::endgroup:: + echo ::group::PYDEPS + pip install towncrier twine wheel httpie docker netaddr boto3 ansible mkdocs echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/pulp_gem/.ci/assets/httpie/" >> $GITHUB_ENV + echo ::endgroup:: - - name: Set environment variables + - name: "Set environment variables" run: | echo "TEST=${{ matrix.env.TEST }}" >> $GITHUB_ENV - - name: Before Install - run: .github/workflows/scripts/before_install.sh - shell: bash + - 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 }} + PY_COLORS: "1" + ANSIBLE_FORCE_COLOR: "1" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}" - uses: ruby/setup-ruby@v1 if: ${{ env.TEST == 'pulp' }} with: ruby-version: "2.6" - - name: Install - run: .github/workflows/scripts/install.sh - shell: bash + - 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: Before Script - run: .github/workflows/scripts/before_script.sh - shell: bash + PY_COLORS: "1" + ANSIBLE_FORCE_COLOR: "1" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}" + + - name: "Before Script" + run: | + .github/workflows/scripts/before_script.sh + shell: "bash" env: - PY_COLORS: '1' - ANSIBLE_FORCE_COLOR: '1' - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITHUB_CONTEXT: ${{ github.event.pull_request.commits_url }} - REDIS_DISABLED: ${{ contains('', matrix.env.TEST) }} - - - name: Install Python client - run: .github/workflows/scripts/install_python_client.sh - shell: bash - - name: Install Ruby client - if: ${{ env.TEST == 'pulp' }} - run: .github/workflows/scripts/install_ruby_client.sh - shell: bash + PY_COLORS: "1" + ANSIBLE_FORCE_COLOR: "1" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}" + REDIS_DISABLED: "${{ contains('', matrix.env.TEST) }}" + + - name: "Install Python client" + run: | + .github/workflows/scripts/install_python_client.sh + shell: "bash" + - name: "Install Ruby client" + if: "${{ env.TEST == 'pulp' }}" + run: | + .github/workflows/scripts/install_ruby_client.sh + shell: "bash" - - name: Script - run: .github/workflows/scripts/script.sh - shell: bash + - name: "Script" + run: | + .github/workflows/scripts/script.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: Extract Deprecations from Logs - id: deprecations - run: echo deprecations-${{ matrix.env.TEST }}=$(docker logs pulp 2>&1 | grep -i pulpcore.deprecation | base64 -w 0) >> $GITHUB_OUTPUT + PY_COLORS: "1" + ANSIBLE_FORCE_COLOR: "1" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}" + + - name: "Extract Deprecations from Logs" + run: | + docker logs pulp 2>&1 | grep -i pulpcore.deprecation | tee deprecations-${{ matrix.env.TEST }}.txt + + - name: "Upload Deprecations" + uses: actions/upload-artifact@v3 + with: + name: "deprecations" + path: "pulp_gem/deprecations-${{ matrix.env.TEST }}.txt" + if-no-files-found: "error" + retention-days: 5 - name: Upload python client packages if: ${{ env.TEST == 'pulp' }} uses: actions/upload-artifact@v3 @@ -148,7 +157,7 @@ jobs: name: "docs.tar" path: "pulp_gem/docs/docs.tar" - - name: Logs + - name: "Logs" if: always() run: | echo "Need to debug? Please check: https://github.com/marketplace/actions/debugging-with-tmate" diff --git a/.github/workflows/update-labels.yml b/.github/workflows/update-labels.yml index 95596d9b..bf0c52ea 100644 --- a/.github/workflows/update-labels.yml +++ b/.github/workflows/update-labels.yml @@ -17,16 +17,16 @@ on: jobs: update_backport_labels: - runs-on: ubuntu-latest + runs-on: "ubuntu-latest" steps: - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Configure Git with pulpbot name and email + - 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: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS pip install requests pyyaml @@ -36,4 +36,4 @@ jobs: run: | python3 .github/workflows/scripts/update_backport_labels.py env: - GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} + GITHUB_TOKEN: "${{ secrets.RELEASE_TOKEN }}" diff --git a/.github/workflows/update_ci.yml b/.github/workflows/update_ci.yml index 43229109..15c8ba9b 100644 --- a/.github/workflows/update_ci.yml +++ b/.github/workflows/update_ci.yml @@ -7,7 +7,7 @@ --- -name: Gem CI Update +name: "Gem CI Update" on: schedule: # * is a special character in YAML so you have to quote this string @@ -17,81 +17,81 @@ on: jobs: update: - runs-on: ubuntu-latest + runs-on: "ubuntu-latest" strategy: fail-fast: false steps: - - uses: actions/checkout@v3 + - uses: "actions/checkout@v4" with: - repository: pulp/plugin_template - path: plugin_template fetch-depth: 0 + repository: "pulp/plugin_template" + path: "plugin_template" - - uses: actions/setup-python@v4 + - uses: "actions/setup-python@v4" with: python-version: "3.8" - - name: Install python dependencies + - name: "Install python dependencies" run: | echo ::group::PYDEPS pip install gitpython requests packaging jinja2 pyyaml echo ::endgroup:: - - name: Configure Git with pulpbot name and email + - name: "Configure Git with pulpbot name and email" run: | git config --global user.name 'pulpbot' git config --global user.email 'pulp-infra@redhat.com' - - uses: actions/checkout@v3 + - uses: "actions/checkout@v4" with: - path: pulp_gem - ref: 'main' fetch-depth: 0 + path: "pulp_gem" + ref: "main" - - name: Run update - working-directory: pulp_gem + - name: "Run update" + working-directory: "pulp_gem" run: | ../plugin_template/scripts/update_ci.sh - - name: Create Pull Request for CI files - uses: peter-evans/create-pull-request@v4 + - name: "Create Pull Request for CI files" + uses: "peter-evans/create-pull-request@v4" with: - token: ${{ secrets.RELEASE_TOKEN }} - path: pulp_gem - committer: pulpbot - author: pulpbot - title: 'Update CI files for branch main' - body: '[noissue]' - branch: 'update-ci/main' - base: 'main' + token: "${{ secrets.RELEASE_TOKEN }}" + path: "pulp_gem" + committer: "pulpbot " + author: "pulpbot " + title: "Update CI files for branch main" + body: "" + branch: "update-ci/main" + base: "main" commit-message: | Update CI files [noissue] delete-branch: true - - uses: actions/checkout@v3 + - uses: "actions/checkout@v4" with: - path: pulp_gem - ref: '0.1' fetch-depth: 0 + path: "pulp_gem" + ref: "0.1" - - name: Run update - working-directory: pulp_gem + - name: "Run update" + working-directory: "pulp_gem" run: | ../plugin_template/scripts/update_ci.sh - - name: Create Pull Request for CI files - uses: peter-evans/create-pull-request@v4 + - name: "Create Pull Request for CI files" + uses: "peter-evans/create-pull-request@v4" with: - token: ${{ secrets.RELEASE_TOKEN }} - path: pulp_gem - committer: pulpbot - author: pulpbot - title: 'Update CI files for branch 0.1' - body: '[noissue]' - branch: 'update-ci/0.1' - base: '0.1' + token: "${{ secrets.RELEASE_TOKEN }}" + path: "pulp_gem" + committer: "pulpbot " + author: "pulpbot " + title: "Update CI files for branch 0.1" + body: "" + branch: "update-ci/0.1" + base: "0.1" commit-message: | Update CI files diff --git a/CHANGES/.TEMPLATE.rst b/CHANGES/.TEMPLATE.rst index a5b57d69..49c2305d 100644 --- a/CHANGES/.TEMPLATE.rst +++ b/CHANGES/.TEMPLATE.rst @@ -1,4 +1,12 @@ -{# TOWNCRIER TEMPLATE #} +{% if render_title %} +{% if versiondata.name %} +{{ versiondata.name }} {{ versiondata.version }} ({{ versiondata.date }}) +{{ top_underline * ((versiondata.name + versiondata.version + versiondata.date)|length + 4)}} +{% else %} +{{ versiondata.version }} ({{ versiondata.date }}) +{{ top_underline * ((versiondata.version + versiondata.date)|length + 3)}} +{% endif %} +{% endif %} {% for section, _ in sections.items() %} {% set underline = underlines[0] %}{% if section %}{{section}} {{ underline * section|length }}{% set underline = underlines[1] %} @@ -35,3 +43,5 @@ No significant changes. {% endfor %} ---- + + diff --git a/docs/template_gitref b/docs/template_gitref index 99cbe100..5eb4b23f 100644 --- a/docs/template_gitref +++ b/docs/template_gitref @@ -1 +1 @@ -2021.08.26-278-g22c5b00 +2021.08.26-290-g4d54366