diff --git a/.github/workflows/coverage_runner.yml b/.github/workflows/coverage_runner.yml index 9f8baa7286..34b9d90616 100644 --- a/.github/workflows/coverage_runner.yml +++ b/.github/workflows/coverage_runner.yml @@ -30,14 +30,19 @@ jobs: 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.8', '3.12' ] + python-version: + - ${{ needs.python-versions.outputs.earliest-python-version }} + - ${{ needs.python-versions.outputs.latest-python-version }} os: [ ubuntu-latest, windows-latest ] fail-fast: false @@ -81,20 +86,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 == 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 == '3.12' && 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 == '3.12' && 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 new file mode 100644 index 0000000000..f8f26d2cd3 --- /dev/null +++ b/.github/workflows/get-python-versions.yml @@ -0,0 +1,28 @@ +name: Get Python versions + +on: + workflow_call: + 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: ${{ 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.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 + echo "latest-python-version=$(echo "${python_versions}" | jq --raw-output '.[-1]')" >> $GITHUB_OUTPUT + - run: exit 0 diff --git a/.github/workflows/linter_docs_mypy.yaml b/.github/workflows/linter_docs_mypy.yaml index a8a3abe592..b9e3faae54 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: ${{ needs.python-versions.outputs.latest-python-version }} - 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: ${{ needs.python-versions.outputs.latest-python-version }} - 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: ${{ needs.python-versions.outputs.latest-python-version }} - name: Checkout to code uses: actions/checkout@v4 diff --git a/.github/workflows/nightly_runner.yml b/.github/workflows/nightly_runner.yml index e217652c7b..2d3d08f29e 100644 --- a/.github/workflows/nightly_runner.yml +++ b/.github/workflows/nightly_runner.yml @@ -4,16 +4,17 @@ 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.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