diff --git a/.ci/scripts/skip_tests.py b/.ci/scripts/skip_tests.py index 2a21a723..a68d000d 100755 --- a/.ci/scripts/skip_tests.py +++ b/.ci/scripts/skip_tests.py @@ -25,7 +25,6 @@ DOC_PATTERNS = [ r"^docs/", r"\.md$", - r"\.txt$", r"LICENSE.*", r"CHANGELOG.*", r"CHANGES.*", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7817dfa..0e9afb1f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,7 @@ jobs: runs-on: ubuntu-latest outputs: run_tests: ${{ steps.check.outputs.run_tests }} + run_docs: ${{ steps.check.outputs.run_docs }} steps: - uses: "actions/checkout@v4" with: @@ -67,6 +68,13 @@ jobs: shell: bash id: check run: | + # We only test docs on the default branch (usually main) + if [[ "${{ github.base_ref }}" == *"main" ]]; then + echo "run_docs=1" >> $GITHUB_OUTPUT + else + echo "run_docs=0" >> $GITHUB_OUTPUT + fi + set +e BASE_REF=${{ github.event.pull_request.base.sha }} echo "Checking against:" @@ -80,7 +88,10 @@ jobs: echo "run_tests=$exit_code" >> $GITHUB_OUTPUT docs: + needs: "check-changes" uses: "./.github/workflows/docs.yml" + with: + run_docs: ${{ needs.check-changes.outputs.run_docs }} lint: needs: @@ -133,13 +144,30 @@ jobs: - name: "Collect needed jobs results" working-directory: "." run: | - if [ ${{ needs.check-changes.outputs.run_tests }} == "1" ]; then - # Full test run - check all jobs - echo '${{toJson(needs)}}' | jq -r 'to_entries[]|select(.value.result!="success")|.key + ": " + .value.result' - echo '${{toJson(needs)}}' | jq -e 'to_entries|map(select(.value.result!="success"))|length == 0' - else - # Docs-only run - check only required jobs (exclude lint and test) - echo '${{toJson(needs)}}' | jq -r 'to_entries[]|select(.key != "lint" and .key != "test")|select(.value.result!="success")|.key + ": " + .value.result' - echo '${{toJson(needs)}}' | jq -e 'to_entries|map(select(.key != "lint" and .key != "test"))|map(select(.value.result!="success"))|length == 0' + RUN_TESTS=${{ needs.check-changes.outputs.run_tests }} + RUN_DOCS=${{ needs.check-changes.outputs.run_docs }} + + check_jobs() { + local filter="$1" + local needs_json='${{toJson(needs)}}' + # output failed jobs after filter + echo "$needs_json" | jq -r "to_entries[]|select($filter)|select(.value.result!=\"success\")|.key + \": \" + .value.result" + # fails if not all selected jobs passed + echo "$needs_json" | jq -e "to_entries|map(select($filter))|map(select(.value.result!=\"success\"))|length == 0" + } + + if [ "$RUN_TESTS" == "1" ] && [ "$RUN_DOCS" == "1" ]; then + FILTERS="true" # check all jobs + elif [ "$RUN_TESTS" == "1" ] && [ "$RUN_DOCS" == "0" ]; then + echo "Skipping docs: running on non-default branch" + FILTERS='.key != "docs"' + elif [ "$RUN_TESTS" == "0" ] && [ "$RUN_DOCS" == "1" ]; then + echo "Skipping tests: only doc changes" + FILTERS='.key != "lint" and .key != "test"' + else # RUN_TESTS=0, RUN_DOCS=0 + echo "What is this PR doing??" + FILTERS='.key != "lint" and .key != "test" and .key != "docs"' fi + + check_jobs "$FILTERS" echo "CI says: Looks good!" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1f9fe5f0..9e16317d 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -9,10 +9,14 @@ name: "Docs CI" on: workflow_call: + inputs: + run_docs: + description: "Whether to run docs jobs" + required: true + type: string jobs: changelog: - if: "endsWith(github.base_ref, 'main')" runs-on: "ubuntu-latest" defaults: run: @@ -34,14 +38,7 @@ jobs: run: | towncrier build --yes --version 4.0.0.ci docs: - if: "endsWith(github.base_ref, 'main')" + if: ${{ inputs.run_docs == '1' }} uses: 'pulp/pulp-docs/.github/workflows/docs-ci.yml@main' with: pulpdocs_ref: 'main' - - no-test: - if: "!endsWith(github.base_ref, 'main')" - runs-on: "ubuntu-latest" - steps: - - run: | - echo "Skip docs testing on non-default branches." diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index dbcd07a8..018013ad 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -167,8 +167,11 @@ jobs: pip install towncrier - name: "Get release notes" - id: get_release_notes + id: "get_release_notes" + shell: "bash" run: | + # The last commit before the release commit contains the release CHANGES fragments + git checkout "${TAG_NAME}~" NOTES=$(towncrier build --draft --version $TAG_NAME) echo "body<> $GITHUB_OUTPUT echo "$NOTES" >> $GITHUB_OUTPUT diff --git a/.github/workflows/scripts/build_python_client.sh b/.github/workflows/scripts/build_python_client.sh index e86ffc29..9eb0def9 100755 --- a/.github/workflows/scripts/build_python_client.sh +++ b/.github/workflows/scripts/build_python_client.sh @@ -21,10 +21,10 @@ rm -rf "pulp_python-client" ./gen-client.sh "../pulp_python/python-api.json" "python" python "pulp_python" pushd pulp_python-client -python setup.py sdist bdist_wheel --python-tag py3 +python -m build twine check "dist/pulp_python_client-"*"-py3-none-any.whl" -twine check "dist/pulp_python-client-"*".tar.gz" +twine check "dist/pulp_python_client-"*".tar.gz" tar cvf "../../pulp_python/python-python-client.tar" ./dist diff --git a/.github/workflows/scripts/publish_client_pypi.sh b/.github/workflows/scripts/publish_client_pypi.sh index 144f2597..c5a4295c 100755 --- a/.github/workflows/scripts/publish_client_pypi.sh +++ b/.github/workflows/scripts/publish_client_pypi.sh @@ -22,5 +22,5 @@ fi twine upload -u __token__ -p "${PYPI_API_TOKEN}" \ "dist/pulp_python_client-${VERSION}-py3-none-any.whl" \ -"dist/pulp_python-client-${VERSION}.tar.gz" \ +"dist/pulp_python_client-${VERSION}.tar.gz" \ ; diff --git a/.github/workflows/scripts/script.sh b/.github/workflows/scripts/script.sh index 00932968..0770527d 100755 --- a/.github/workflows/scripts/script.sh +++ b/.github/workflows/scripts/script.sh @@ -72,7 +72,7 @@ pushd ../pulp-openapi-generator rm -rf "./${PACKAGE}-client" ./gen-client.sh "${COMPONENT}-api.json" "${COMPONENT}" python "${PACKAGE}" pushd "${PACKAGE}-client" - python setup.py sdist bdist_wheel --python-tag py3 + python -m build popd else if [ ! -f "${PACKAGE}-client/dist/${PACKAGE}_client-${VERSION}-py3-none-any.whl" ] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 02e0c673..7a244d25 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -71,7 +71,7 @@ jobs: - name: "Install python dependencies" run: | echo ::group::PYDEPS - pip install towncrier twine wheel httpie docker netaddr boto3 'ansible~=10.3.0' mkdocs jq jsonpatch bump-my-version 'click<8.3' + pip install build towncrier twine wheel httpie docker netaddr boto3 'ansible~=10.3.0' mkdocs jq jsonpatch bump-my-version 'click<8.3' echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/pulp_python/.ci/assets/httpie/" >> $GITHUB_ENV echo ::endgroup::