From 2766f15fc1f5c65b25fe772004328ec19aba551b Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:08:50 +0000 Subject: [PATCH 01/11] Centralise Python version specification --- .github/workflows/coverage_runner.yml | 18 +++++++++++------- .github/workflows/get-python-versions.yml | 15 +++++++++++++++ .github/workflows/linter_docs_mypy.yaml | 18 ++++++++++++------ .github/workflows/nightly_runner.yml | 11 ++++++----- 4 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/get-python-versions.yml diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index b28fde64b7..9724d5187f 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -29,21 +29,25 @@ jobs: organization-name: 'hazelcast' member-name: ${{ github.event.pull_request.head.repo.owner.login }} token: ${{ secrets.PAT }} - + + python-versions: + uses: ./.github/workflows/get-python-versions.yml + run-tests: runs-on: ${{ matrix.os }} - needs: [check_for_membership] + needs: [check_for_membership, python-versions] if: github.event_name == 'push' || needs.check_for_membership.outputs.check-result == 'true' || github.event_name == 'workflow_dispatch' name: Run tests with Python ${{ matrix.python-version }} on ${{ matrix.os }} strategy: matrix: - python-version: [ '3.7', '3.12' ] + # Use newest and oldest version of Python + python-version: ${{ fromJSON(needs.python-versions.outputs.python-versions)[0] }}, ${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} os: [ ubuntu-latest, windows-latest ] fail-fast: false steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} @@ -81,20 +85,20 @@ jobs: run: python run_tests.py - name: Publish results to Codecov for PR coming from hazelcast organization - if: ${{ matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request_target' }} + if: ${{ matrix.python-version == fromJSON(needs.python-versions.outputs.python-versions)[-1] && matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request_target' }} uses: codecov/codecov-action@v1 with: files: ./coverage.xml override_pr: ${{ github.event.pull_request.number }} - name: Publish results to Codecov for Push - if: ${{ matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest' && github.event_name == 'push' }} + if: ${{ matrix.python-version == fromJSON(needs.python-versions.outputs.python-versions)[-1] && matrix.os == 'ubuntu-latest' && github.event_name == 'push' }} uses: codecov/codecov-action@v1 with: files: ./coverage.xml - name: Publish result to Codecov for PR coming from community - if: ${{ matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest' && github.event_name == 'workflow_dispatch' }} + if: ${{ matrix.python-version == fromJSON(needs.python-versions.outputs.python-versions)[-1] && matrix.os == 'ubuntu-latest' && github.event_name == 'workflow_dispatch' }} uses: codecov/codecov-action@v1 with: files: ./coverage.xml diff --git a/.github/workflows/get-python-versions.yml b/.github/workflows/get-python-versions.yml new file mode 100644 index 0000000000..148569a715 --- /dev/null +++ b/.github/workflows/get-python-versions.yml @@ -0,0 +1,15 @@ +name: Get Python versions + +on: + workflow_call: + outputs: + python-versions: + value: ${{ jobs.get-python-versions.outputs.python-versions }} + +jobs: + get-python-versions: + runs-on: ubuntu-latest + outputs: + python-versions: "[ '3.7', '3.8', '3.9', '3.10', '3.11', '3.12']" + steps: + - run: exit 0 \ No newline at end of file diff --git a/.github/workflows/linter_docs_mypy.yaml b/.github/workflows/linter_docs_mypy.yaml index a8a3abe592..c204dfd3cc 100644 --- a/.github/workflows/linter_docs_mypy.yaml +++ b/.github/workflows/linter_docs_mypy.yaml @@ -9,14 +9,18 @@ on: - master - '[45].*.z' jobs: + python-versions: + uses: ./.github/workflows/get-python-versions.yml + run-linter: runs-on: ubuntu-latest + needs: python-versions name: Run black to check the code style steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: ${{ fromJSON(needs.get-python-versions.outputs.python-version)[-1] }} - name: Checkout to code uses: actions/checkout@v4 @@ -31,12 +35,13 @@ jobs: generate_docs: runs-on: ubuntu-latest + needs: python-versions name: Generate documentation steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: ${{ fromJSON(needs.get-python-versions.outputs.python-version)[-1] }} - name: Checkout to code uses: actions/checkout@v4 @@ -52,12 +57,13 @@ jobs: run-mypy: runs-on: ubuntu-latest + needs: python-versions name: Run mypy to check type annotations steps: - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: $${{ fromJSON(needs.get-python-versions.outputs.python-version)[-1] }} - name: Checkout to code uses: actions/checkout@v4 diff --git a/.github/workflows/nightly_runner.yml b/.github/workflows/nightly_runner.yml index 5f7ad148dd..2d3d08f29e 100644 --- a/.github/workflows/nightly_runner.yml +++ b/.github/workflows/nightly_runner.yml @@ -4,20 +4,21 @@ on: schedule: - cron: '0 2 * * *' jobs: + python-versions: + uses: ./.github/workflows/get-python-versions.yml + run-tests: + needs: python-versions runs-on: ${{ matrix.os }} name: Run tests with Python ${{ matrix.python-version }} on ${{ matrix.os }} strategy: matrix: - python-version: [ '3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ${{ fromJSON(needs.python-versions.outputs.python-versions) }} os: [ ubuntu-latest, windows-latest ] - exclude: - - os: windows-latest - python-version: pypy-3.9 fail-fast: false steps: - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install JDK From 751b1327dd9683647b355452ec9dcd06399dfcec Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:10:26 +0000 Subject: [PATCH 02/11] Fix --- .github/workflows/linter_docs_mypy.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linter_docs_mypy.yaml b/.github/workflows/linter_docs_mypy.yaml index c204dfd3cc..a20b214309 100644 --- a/.github/workflows/linter_docs_mypy.yaml +++ b/.github/workflows/linter_docs_mypy.yaml @@ -20,7 +20,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: ${{ fromJSON(needs.get-python-versions.outputs.python-version)[-1] }} + python-version: ${{ fromJSON(needs.python-versions.outputs.python-version)[-1] }} - name: Checkout to code uses: actions/checkout@v4 @@ -41,7 +41,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: ${{ fromJSON(needs.get-python-versions.outputs.python-version)[-1] }} + python-version: ${{ fromJSON(needs.python-versions.outputs.python-version)[-1] }} - name: Checkout to code uses: actions/checkout@v4 @@ -63,7 +63,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: $${{ fromJSON(needs.get-python-versions.outputs.python-version)[-1] }} + python-version: $${{ fromJSON(needs.python-versions.outputs.python-version)[-1] }} - name: Checkout to code uses: actions/checkout@v4 From 0744f21d39ef98766d5cb03f4855793c16d70404 Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:11:56 +0000 Subject: [PATCH 03/11] Fix --- .github/workflows/linter_docs_mypy.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linter_docs_mypy.yaml b/.github/workflows/linter_docs_mypy.yaml index a20b214309..2313e9f9d0 100644 --- a/.github/workflows/linter_docs_mypy.yaml +++ b/.github/workflows/linter_docs_mypy.yaml @@ -20,7 +20,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: ${{ fromJSON(needs.python-versions.outputs.python-version)[-1] }} + python-version: ${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} - name: Checkout to code uses: actions/checkout@v4 @@ -41,7 +41,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: ${{ fromJSON(needs.python-versions.outputs.python-version)[-1] }} + python-version: ${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} - name: Checkout to code uses: actions/checkout@v4 @@ -63,7 +63,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: $${{ fromJSON(needs.python-versions.outputs.python-version)[-1] }} + python-version: $${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} - name: Checkout to code uses: actions/checkout@v4 From 2dd4179019c71bd8c6dac74b0a87bac28c881ea8 Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:22:41 +0000 Subject: [PATCH 04/11] Fix --- .github/workflows/coverage_runner.yml | 11 ++++++----- .github/workflows/get-python-versions.yml | 15 ++++++++++++++- .github/workflows/linter_docs_mypy.yaml | 6 +++--- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index 9724d5187f..c4482f94dc 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -40,8 +40,9 @@ jobs: name: Run tests with Python ${{ matrix.python-version }} on ${{ matrix.os }} strategy: matrix: - # Use newest and oldest version of Python - python-version: ${{ fromJSON(needs.python-versions.outputs.python-versions)[0] }}, ${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} + python-version: + - ${{ needs.python-versions.outputs.earliest-python-version }} + - ${{ needs.python-versions.outputs.latest-python-version }} os: [ ubuntu-latest, windows-latest ] fail-fast: false @@ -85,20 +86,20 @@ jobs: run: python run_tests.py - name: Publish results to Codecov for PR coming from hazelcast organization - if: ${{ matrix.python-version == fromJSON(needs.python-versions.outputs.python-versions)[-1] && matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request_target' }} + if: ${{ matrix.python-version == needs.python-versions.outputs.latest-python-version && matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request_target' }} uses: codecov/codecov-action@v1 with: files: ./coverage.xml override_pr: ${{ github.event.pull_request.number }} - name: Publish results to Codecov for Push - if: ${{ matrix.python-version == fromJSON(needs.python-versions.outputs.python-versions)[-1] && matrix.os == 'ubuntu-latest' && github.event_name == 'push' }} + if: ${{ matrix.python-version == needs.python-versions.outputs.latest-python-version && matrix.os == 'ubuntu-latest' && github.event_name == 'push' }} uses: codecov/codecov-action@v1 with: files: ./coverage.xml - name: Publish result to Codecov for PR coming from community - if: ${{ matrix.python-version == fromJSON(needs.python-versions.outputs.python-versions)[-1] && matrix.os == 'ubuntu-latest' && github.event_name == 'workflow_dispatch' }} + if: ${{ matrix.python-version == needs.python-versions.outputs.latest-python-version && matrix.os == 'ubuntu-latest' && github.event_name == 'workflow_dispatch' }} uses: codecov/codecov-action@v1 with: files: ./coverage.xml diff --git a/.github/workflows/get-python-versions.yml b/.github/workflows/get-python-versions.yml index 148569a715..2b2491e7b7 100644 --- a/.github/workflows/get-python-versions.yml +++ b/.github/workflows/get-python-versions.yml @@ -5,11 +5,24 @@ on: outputs: python-versions: value: ${{ jobs.get-python-versions.outputs.python-versions }} + earliest-python-version: + value: ${{ jobs.get-python-versions.outputs.earliest-python-version }} + latest-python-version: + value: ${{ jobs.get-python-versions.outputs.latest-python-version }} jobs: get-python-versions: runs-on: ubuntu-latest outputs: - python-versions: "[ '3.7', '3.8', '3.9', '3.10', '3.11', '3.12']" + python-versions: ${{ steps.extract-versions.outputs.python-versions }} + earliest-python-version: ${{ steps.extract-versions.outputs.earliest-python-version }} + latest-python-version: ${{ steps.extract-versions.outputs.latest-python-version }} steps: + - id: extract-versions + run: | + python_versions='[ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12" ]' + + echo "python-versions=${python_versions}" >> $GITHUB_OUTPUT + echo "earliest-python-version=$(echo "${python_versions}" | jq '.[0]')" >> $GITHUB_OUTPUT + echo "latest-python-version=$(echo "${python_versions}" | jq '.[-1]')" >> $GITHUB_OUTPUT - run: exit 0 \ No newline at end of file diff --git a/.github/workflows/linter_docs_mypy.yaml b/.github/workflows/linter_docs_mypy.yaml index 2313e9f9d0..bcd8474437 100644 --- a/.github/workflows/linter_docs_mypy.yaml +++ b/.github/workflows/linter_docs_mypy.yaml @@ -20,7 +20,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: ${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} + python-version: ${{ needs.python-versions.outputs.latest-python-version }} - name: Checkout to code uses: actions/checkout@v4 @@ -41,7 +41,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: ${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} + python-version: ${{ needs.python-versions.outputs.latest-python-version }} - name: Checkout to code uses: actions/checkout@v4 @@ -63,7 +63,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: $${{ fromJSON(needs.python-versions.outputs.python-versions)[-1] }} + python-version: $${{ needs.python-versions.outputs.latest-python-version }} - name: Checkout to code uses: actions/checkout@v4 From cec7758706d57cd456223b57b0bcec411b13da0a Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:28:16 +0000 Subject: [PATCH 05/11] Fix --- .github/workflows/get-python-versions.yml | 4 ++-- .github/workflows/linter_docs_mypy.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/get-python-versions.yml b/.github/workflows/get-python-versions.yml index 2b2491e7b7..a3b0a6cb61 100644 --- a/.github/workflows/get-python-versions.yml +++ b/.github/workflows/get-python-versions.yml @@ -23,6 +23,6 @@ jobs: python_versions='[ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12" ]' echo "python-versions=${python_versions}" >> $GITHUB_OUTPUT - echo "earliest-python-version=$(echo "${python_versions}" | jq '.[0]')" >> $GITHUB_OUTPUT - echo "latest-python-version=$(echo "${python_versions}" | jq '.[-1]')" >> $GITHUB_OUTPUT + echo "earliest-python-version=$(echo "${python_versions}" | jq --raw-output '.[0]')" >> $GITHUB_OUTPUT + echo "latest-python-version=$(echo "${python_versions}" | jq --raw-output '.[-1]')" >> $GITHUB_OUTPUT - run: exit 0 \ No newline at end of file diff --git a/.github/workflows/linter_docs_mypy.yaml b/.github/workflows/linter_docs_mypy.yaml index bcd8474437..b9e3faae54 100644 --- a/.github/workflows/linter_docs_mypy.yaml +++ b/.github/workflows/linter_docs_mypy.yaml @@ -63,7 +63,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: $${{ needs.python-versions.outputs.latest-python-version }} + python-version: ${{ needs.python-versions.outputs.latest-python-version }} - name: Checkout to code uses: actions/checkout@v4 From 4618b62f64fc4ccd6ae0ba32d33d565b69aee664 Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:29:14 +0000 Subject: [PATCH 06/11] Fix --- .github/workflows/coverage_runner.yml | 2 +- .github/workflows/get-python-versions.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index c4482f94dc..84f91340da 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -10,7 +10,7 @@ on: branches: - master - '[45].*.z' - pull_request_target: + pull_request: branches: - master - '[45].*.z' diff --git a/.github/workflows/get-python-versions.yml b/.github/workflows/get-python-versions.yml index a3b0a6cb61..85a89810f1 100644 --- a/.github/workflows/get-python-versions.yml +++ b/.github/workflows/get-python-versions.yml @@ -25,4 +25,4 @@ jobs: echo "python-versions=${python_versions}" >> $GITHUB_OUTPUT echo "earliest-python-version=$(echo "${python_versions}" | jq --raw-output '.[0]')" >> $GITHUB_OUTPUT echo "latest-python-version=$(echo "${python_versions}" | jq --raw-output '.[-1]')" >> $GITHUB_OUTPUT - - run: exit 0 \ No newline at end of file + - run: exit 0 From 9aedf125d6b6d0d15a5ae313b6806107d6f9662f Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:29:32 +0000 Subject: [PATCH 07/11] Revert --- .github/workflows/coverage_runner.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index 84f91340da..c4482f94dc 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -10,7 +10,7 @@ on: branches: - master - '[45].*.z' - pull_request: + pull_request_target: branches: - master - '[45].*.z' From e79e6d79db16a8ff8fd8ba3456d565a78eef9d77 Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:30:46 +0000 Subject: [PATCH 08/11] Test --- .github/workflows/coverage_runner.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index c4482f94dc..9a8835f013 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -10,7 +10,7 @@ on: branches: - master - '[45].*.z' - pull_request_target: + pull_request: branches: - master - '[45].*.z' @@ -36,7 +36,6 @@ jobs: run-tests: runs-on: ${{ matrix.os }} needs: [check_for_membership, python-versions] - if: github.event_name == 'push' || needs.check_for_membership.outputs.check-result == 'true' || github.event_name == 'workflow_dispatch' name: Run tests with Python ${{ matrix.python-version }} on ${{ matrix.os }} strategy: matrix: From 250cd8775b35d143246f17b878bd1de68d6af60e Mon Sep 17 00:00:00 2001 From: Jack Green Date: Tue, 11 Feb 2025 20:31:28 +0000 Subject: [PATCH 09/11] Revert --- .github/workflows/coverage_runner.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index 9a8835f013..c4482f94dc 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -10,7 +10,7 @@ on: branches: - master - '[45].*.z' - pull_request: + pull_request_target: branches: - master - '[45].*.z' @@ -36,6 +36,7 @@ jobs: run-tests: runs-on: ${{ matrix.os }} needs: [check_for_membership, python-versions] + if: github.event_name == 'push' || needs.check_for_membership.outputs.check-result == 'true' || github.event_name == 'workflow_dispatch' name: Run tests with Python ${{ matrix.python-version }} on ${{ matrix.os }} strategy: matrix: From 891c7616c559c7cbf5dbca126bd6632970dde16b Mon Sep 17 00:00:00 2001 From: Jack Green Date: Wed, 12 Feb 2025 07:00:58 +0000 Subject: [PATCH 10/11] Update get-python-versions.yml --- .github/workflows/get-python-versions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/get-python-versions.yml b/.github/workflows/get-python-versions.yml index 85a89810f1..f8f26d2cd3 100644 --- a/.github/workflows/get-python-versions.yml +++ b/.github/workflows/get-python-versions.yml @@ -20,7 +20,7 @@ jobs: steps: - id: extract-versions run: | - python_versions='[ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12" ]' + python_versions='[ "3.8", "3.9", "3.10", "3.11", "3.12" ]' echo "python-versions=${python_versions}" >> $GITHUB_OUTPUT echo "earliest-python-version=$(echo "${python_versions}" | jq --raw-output '.[0]')" >> $GITHUB_OUTPUT From 7d2d32c4d9dae6a7aa8205620e19ce1345e80c48 Mon Sep 17 00:00:00 2001 From: Jack Green Date: Wed, 12 Feb 2025 07:21:02 +0000 Subject: [PATCH 11/11] Formatting --- .github/workflows/coverage_runner.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index c4482f94dc..34b9d90616 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -29,7 +29,7 @@ jobs: organization-name: 'hazelcast' member-name: ${{ github.event.pull_request.head.repo.owner.login }} token: ${{ secrets.PAT }} - + python-versions: uses: ./.github/workflows/get-python-versions.yml