From 7f4fc3e22c37d6ff65e88745f38bd3157c663f7c Mon Sep 17 00:00:00 2001
From: aparnajyothi-y <147696841+aparnajyothi-y@users.noreply.github.com>
Date: Thu, 17 Apr 2025 20:09:32 +0530
Subject: [PATCH] V4 - Add workflow file for publishing releases to immutable
 action package (#1084)

* add publish immutable action

* depricate ubuntu-20.04

* fix check failures

* fix check failures on older versions

* check failures fix for older versions

* check failure fix

* check failure fix

* compatable version update

* compatable version update for ubuntu-22.04 and windows

* fix

* update e2e tests format

* fomat update

* updated wording
---
 .github/workflows/e2e-tests.yml               | 29 ++++++++++++++++++-
 .../workflows/publish-immutable-action.yml    | 20 +++++++++++++
 .github/workflows/test-graalpy.yml            |  4 +--
 .github/workflows/test-pypy.yml               |  4 +--
 .github/workflows/test-python.yml             | 24 +++++++--------
 5 files changed, 64 insertions(+), 17 deletions(-)
 create mode 100644 .github/workflows/publish-immutable-action.yml

diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml
index db09724f..d381f859 100644
--- a/.github/workflows/e2e-tests.yml
+++ b/.github/workflows/e2e-tests.yml
@@ -16,16 +16,19 @@ jobs:
     runs-on: ${{ matrix.operating-system }}
     strategy:
       matrix:
-        operating-system: [ubuntu-20.04, windows-latest]
+        operating-system: [ubuntu-22.04, windows-latest]
+
     steps:
       - name: Checkout
         uses: actions/checkout@v4
 
       - name: Run with setup-python 3.6
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         uses: ./
         with:
           python-version: 3.6
       - name: Verify 3.6
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         run: python __tests__/verify-python.py 3.6
 
       - name: Run with setup-python 3.7
@@ -43,26 +46,50 @@ jobs:
         run: python __tests__/verify-python.py 3.8
 
       - name: Run with setup-python 3.7.5
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         uses: ./
         with:
           python-version: 3.7.5
       - name: Verify 3.7.5
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         run: python __tests__/verify-python.py 3.7.5
 
       - name: Run with setup-python 3.6.7
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         uses: ./
         with:
           python-version: 3.6.7
       - name: Verify 3.6.7
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         run: python __tests__/verify-python.py 3.6.7
 
       - name: Run with setup-python 3.8.1
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         uses: ./
         with:
           python-version: 3.8.1
       - name: Verify 3.8.1
+        if: ${{ matrix.operating-system == 'windows-latest' }}
         run: python __tests__/verify-python.py 3.8.1
 
+      - name: Run with setup-python 3.7.13
+        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
+        uses: ./
+        with:
+          python-version: 3.7.13
+      - name: Verify 3.7.13
+        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
+        run: python __tests__/verify-python.py 3.7.13
+
+      - name: Run with setup-python 3.8.12
+        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
+        uses: ./
+        with:
+          python-version: 3.8.12
+      - name: Verify 3.8.12
+        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
+        run: python __tests__/verify-python.py 3.8.12
+
       - name: Run with setup-python 3.10
         id: cp310
         uses: ./
diff --git a/.github/workflows/publish-immutable-action.yml b/.github/workflows/publish-immutable-action.yml
new file mode 100644
index 00000000..7c258347
--- /dev/null
+++ b/.github/workflows/publish-immutable-action.yml
@@ -0,0 +1,20 @@
+name: 'Publish Immutable Action Version'
+
+on:
+  release:
+    types: [published]
+
+jobs:
+  publish:
+    runs-on: ubuntu-latest
+    permissions:
+      contents: read
+      id-token: write
+      packages: write
+
+    steps:
+      - name: Checking out
+        uses: actions/checkout@v4
+      - name: Publish
+        id: publish
+        uses: actions/publish-immutable-action@v0.0.4
diff --git a/.github/workflows/test-graalpy.yml b/.github/workflows/test-graalpy.yml
index febf0b86..5236db3a 100644
--- a/.github/workflows/test-graalpy.yml
+++ b/.github/workflows/test-graalpy.yml
@@ -17,7 +17,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-latest, ubuntu-20.04, ubuntu-latest]
+        os: [macos-latest, ubuntu-22.04, ubuntu-latest]
         graalpy:
           - 'graalpy-23.0'
           - 'graalpy-22.3'
@@ -62,7 +62,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-latest, ubuntu-20.04, ubuntu-latest]
+        os: [macos-latest, ubuntu-22.04, ubuntu-latest]
         graalpy: ['graalpy23.0', 'graalpy22.3']
 
     steps:
diff --git a/.github/workflows/test-pypy.yml b/.github/workflows/test-pypy.yml
index d68f643c..68443ba6 100644
--- a/.github/workflows/test-pypy.yml
+++ b/.github/workflows/test-pypy.yml
@@ -19,7 +19,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-latest]
+        os: [macos-13, windows-latest, ubuntu-22.04, ubuntu-latest]
         pypy:
           - 'pypy-2.7'
           - 'pypy-3.7'
@@ -76,7 +76,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-latest]
+        os: [macos-13, windows-latest, ubuntu-22.04, ubuntu-latest]
         pypy: ['pypy2.7', 'pypy3.7', 'pypy3.8', 'pypy3.9-nightly']
 
     steps:
diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml
index f8459ab3..d440cd02 100644
--- a/.github/workflows/test-python.yml
+++ b/.github/workflows/test-python.yml
@@ -20,7 +20,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-22.04]
+        os: [macos-13, windows-latest, ubuntu-22.04]
         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
         exclude:
           - os: ubuntu-22.04
@@ -62,7 +62,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-22.04]
+        os: [macos-13, windows-latest, ubuntu-22.04]
         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
         exclude:
           - os: ubuntu-22.04
@@ -107,7 +107,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-22.04]
+        os: [macos-13, windows-latest, ubuntu-22.04]
         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
         exclude:
           - os: ubuntu-22.04
@@ -150,7 +150,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-22.04]
+        os: [macos-13, windows-latest, ubuntu-22.04]
         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13, '==3.10.10']
         exclude:
           - os: ubuntu-22.04
@@ -198,7 +198,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-22.04]
+        os: [macos-13, windows-latest, ubuntu-22.04]
         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
         exclude:
           - os: ubuntu-22.04
@@ -241,21 +241,21 @@ jobs:
         run: python -c 'import math; print(math.factorial(5))'
 
   setup-pre-release-version-from-manifest:
-    name: Setup 3.9.0-beta.4 ${{ matrix.os }}
+    name: Setup 3.11.0-beta.4 ${{ matrix.os }}
     runs-on: ${{ matrix.os }}
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04]
+        os: [macos-13, windows-latest, ubuntu-22.04]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
 
-      - name: setup-python 3.9.0-beta.4
+      - name: setup-python 3.11.0-beta.4
         id: setup-python
         uses: ./
         with:
-          python-version: '3.9.0-beta.4'
+          python-version: '3.11.0-beta.4'
 
       - name: Check python-path
         run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
@@ -264,8 +264,8 @@ jobs:
       - name: Validate version
         run: |
           $pythonVersion = (python --version)
-          if ("Python 3.9.0b4" -ne "$pythonVersion"){
-            Write-Host "The current version is $pythonVersion; expected version is 3.9.0b4"
+          if ("Python 3.11.0b4" -ne "$pythonVersion"){
+            Write-Host "The current version is $pythonVersion; expected version is 3.11.0b4"
             exit 1
           }
           $pythonVersion
@@ -337,7 +337,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-13, windows-latest, ubuntu-20.04, ubuntu-22.04]
+        os: [macos-13, windows-latest, ubuntu-22.04]
         python: ['3.7', '3.8', '3.9', '3.10']
     steps:
       - name: Checkout