Repository: kiali/kiali

Issue:
GH action image runner ubuntu-20.04 will be unsupported by 2025-04-01
### Which dependency needs to be upgraded, and why?

GH action image runner has to be upgraded because the current version `ubuntu-20.04` will be fully unsupported by 2025-04-01

### What is the current version of the dependency?

`ubuntu-20.04`

### Which version to upgrade to?

`ubuntu-24.04` or `ubuntu-latest`

### Changelog link

https://www.github.com/actions/runner-images/issues/11101

Discussion:
@mkralik3: @ferhoyos  This needs to be backported into the v2.4 and v1.73 branches as well, otherwise, PR gating (GH actions for tests) will not work in pull requests for those branches.

Also release gh action is affected so it will be not possible to run that gh action.@ferhoyos: @mkralik3 I have no problem to backport this change into the v2.4 and v1.73 if needed.

Just curiousity, why the release gh action is affected? I always thought that releases were always run from the master branch gh action, including patches for v1.73 and v2.4 branches.

Solution patch:
diff --git a/.github/workflows/build-backend.yml b/.github/workflows/build-backend.yml
index c48b2fc2e..91e291d93 100644
--- a/.github/workflows/build-backend.yml
+++ b/.github/workflows/build-backend.yml
@@ -9,7 +9,7 @@ on:
 jobs:
   build_backend:
     name: Build and unit test backend
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
     - name: Checkout code
       uses: actions/checkout@v4
diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml
index 3bb922f75..083bed79d 100644
--- a/.github/workflows/build-frontend.yml
+++ b/.github/workflows/build-frontend.yml
@@ -13,7 +13,7 @@ on:
 jobs:
   build_frontend:
     name: Build and unit test frontend
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
     - name: Checkout code
       uses: actions/checkout@v4
diff --git a/.github/workflows/integration-tests-backend-multicluster-external-controlplane.yml b/.github/workflows/integration-tests-backend-multicluster-external-controlplane.yml
index ac23f029c..02e731879 100644
--- a/.github/workflows/integration-tests-backend-multicluster-external-controlplane.yml
+++ b/.github/workflows/integration-tests-backend-multicluster-external-controlplane.yml
@@ -20,7 +20,7 @@ env:
 jobs:
   integration_tests_backend:
     name: Backend API integration tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
     - name: Check out code
       uses: actions/checkout@v4
diff --git a/.github/workflows/integration-tests-backend.yml b/.github/workflows/integration-tests-backend.yml
index bdc86b8c1..6e238ec9b 100644
--- a/.github/workflows/integration-tests-backend.yml
+++ b/.github/workflows/integration-tests-backend.yml
@@ -20,7 +20,7 @@ env:
 jobs:
   integration_tests_backend:
     name: Backend API integration tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
     - name: Check out code
       uses: actions/checkout@v4
diff --git a/.github/workflows/integration-tests-frontend-ambient.yml b/.github/workflows/integration-tests-frontend-ambient.yml
index 97a351dff..95881c5e0 100644
--- a/.github/workflows/integration-tests-frontend-ambient.yml
+++ b/.github/workflows/integration-tests-frontend-ambient.yml
@@ -20,7 +20,7 @@ env:
 jobs:
   integration_tests_frontend:
     name: Cypress integration tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     env:
       # Copied from: https://github.com/bahmutov/cypress-gh-action-split-install/blob/ca3916d4e7240ebdc337825d2d78eb354855464b/.github/workflows/tests.yml#L7-L11
       # prevents extra Cypress installation progress messages
diff --git a/.github/workflows/integration-tests-frontend-multicluster-multi-primary.yml b/.github/workflows/integration-tests-frontend-multicluster-multi-primary.yml
index 7017b4e90..5cebb735e 100644
--- a/.github/workflows/integration-tests-frontend-multicluster-multi-primary.yml
+++ b/.github/workflows/integration-tests-frontend-multicluster-multi-primary.yml
@@ -20,7 +20,7 @@ env:
 jobs:
   integration_tests_frontend_multicluster_multi_primary:
     name: Cypress integration tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     env:
       # Copied from: https://github.com/bahmutov/cypress-gh-action-split-install/blob/ca3916d4e7240ebdc337825d2d78eb354855464b/.github/workflows/tests.yml#L7-L11
       # prevents extra Cypress installation progress messages
diff --git a/.github/workflows/integration-tests-frontend-multicluster-primary-remote.yml b/.github/workflows/integration-tests-frontend-multicluster-primary-remote.yml
index e5788c85a..8d8037b94 100644
--- a/.github/workflows/integration-tests-frontend-multicluster-primary-remote.yml
+++ b/.github/workflows/integration-tests-frontend-multicluster-primary-remote.yml
@@ -20,7 +20,7 @@ env:
 jobs:
   integration_tests_frontend_multicluster:
     name: Cypress integration tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     env:
       # Copied from: https://github.com/bahmutov/cypress-gh-action-split-install/blob/ca3916d4e7240ebdc337825d2d78eb354855464b/.github/workflows/tests.yml#L7-L11
       # prevents extra Cypress installation progress messages
diff --git a/.github/workflows/integration-tests-frontend-tempo.yml b/.github/workflows/integration-tests-frontend-tempo.yml
index f4702aa37..2d4779025 100644
--- a/.github/workflows/integration-tests-frontend-tempo.yml
+++ b/.github/workflows/integration-tests-frontend-tempo.yml
@@ -20,7 +20,7 @@ env:
 jobs:
   integration_tests_frontend:
     name: Cypress integration tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     env:
       # Copied from: https://github.com/bahmutov/cypress-gh-action-split-install/blob/ca3916d4e7240ebdc337825d2d78eb354855464b/.github/workflows/tests.yml#L7-L11
       # prevents extra Cypress installation progress messages
diff --git a/.github/workflows/integration-tests-frontend.yml b/.github/workflows/integration-tests-frontend.yml
index d91e0ee0d..b17b3fbbd 100644
--- a/.github/workflows/integration-tests-frontend.yml
+++ b/.github/workflows/integration-tests-frontend.yml
@@ -20,7 +20,7 @@ env:
 jobs:
   integration_tests_frontend:
     name: Cypress integration tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     env:
       # Copied from: https://github.com/bahmutov/cypress-gh-action-split-install/blob/ca3916d4e7240ebdc337825d2d78eb354855464b/.github/workflows/tests.yml#L7-L11
       # prevents extra Cypress installation progress messages
diff --git a/.github/workflows/molecules.yml b/.github/workflows/molecules.yml
index 57c2c0b8a..f5a50a5e8 100644
--- a/.github/workflows/molecules.yml
+++ b/.github/workflows/molecules.yml
@@ -27,7 +27,7 @@ on:
 jobs:
   molecules:
     name: Molecule tests
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
     - name: Checkout the hack script that runs the tests
       id: checkout-source
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index add85d76e..e391d90d8 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -20,7 +20,7 @@ on:
 jobs:
   initialize:
     name: Initialize
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     outputs:
       target_branch: ${{ github.ref_name }}
       quay_tag: ${{ env.quay_tag }}
@@ -69,7 +69,7 @@ jobs:
     name: Push latest
     # Avoid schedule workflows from forks to push images
     if: ${{ (github.event_name == 'schedule' && github.repository == 'kiali/kiali') || github.event_name != 'schedule' }}
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     needs: [initialize, build_backend, build_frontend]
     env:
       QUAY_TAG: ${{ needs.initialize.outputs.quay_tag }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index e86830b0e..535f81df1 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -28,7 +28,7 @@ on:
 jobs:
   initialize:
     name: Initialize
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     outputs:
       target_branch: ${{ github.ref_name }}
       release_type: ${{ env.release_type }}
@@ -199,7 +199,7 @@ jobs:
   release:
     name: Release
     if: ${{ needs.initialize.outputs.release_type != 'skip' && ((github.event_name == 'schedule' && github.repository == 'kiali/kiali') || github.event_name != 'schedule') }}
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     needs: [initialize, build_backend, build_frontend]
     env:
       RELEASE_VERSION: ${{ needs.initialize.outputs.release_version }}
diff --git a/.github/workflows/tag-creator.yml b/.github/workflows/tag-creator.yml
index 9d9e089cb..cacbffdd7 100644
--- a/.github/workflows/tag-creator.yml
+++ b/.github/workflows/tag-creator.yml
@@ -12,7 +12,7 @@ on:
 jobs:
   initialize:
     name: Initialize
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     outputs:
       branches: ${{ env.branches }}
     steps:
@@ -37,7 +37,7 @@ jobs:
         echo "branches=$BRANCHES" >> $GITHUB_ENV
   create_tag:
     needs: [initialize]
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     strategy:
       matrix:
         branch: ${{fromJson(needs.initialize.outputs.branches)}}
diff --git a/.github/workflows/test-images-release.yml b/.github/workflows/test-images-release.yml
index 621396859..84c1a56f7 100644
--- a/.github/workflows/test-images-release.yml
+++ b/.github/workflows/test-images-release.yml
@@ -6,7 +6,7 @@ on:
 jobs:
   initialize:
     name: Initialize
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     outputs:
       quay_org: 'kiali'
       images_tag: ${{ steps.images_tag.outputs.images_tag }}
@@ -38,7 +38,7 @@ jobs:
 
   update_latest_test_images:
     name: Update images under major.minor version tag
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     needs: [initialize, push_test_images]
     steps:
     - name: Login to Quay.io
diff --git a/RELEASING.md b/RELEASING.md
index 701ff5eb0..5a9623ce9 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -73,7 +73,7 @@ on:
 jobs:
   initialize:
     name: Initialize
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     outputs:
       target_branch: ${{ github.ref_name }}
       release_type: ${{ steps.release_type.outputs.release_type }}
@@ -102,7 +102,7 @@ jobs:
   release:
     name: Release
     if: ${{ needs.initialize.outputs.release_type != 'skip' && ((github.event_name == 'schedule' && github.repository == 'kiali/kiali') || github.event_name != 'schedule') }}
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     needs: [initialize, build_backend, build_frontend, integration_tests_backend, integration_tests_frontend]
     env:  
       RELEASE_VERSION: ${{ needs.initialize.outputs.release_version }}



Test patch:
diff --git a/tests/integration/utils/exec_client.go b/tests/integration/utils/exec_client.go
index 03d459a2b..b9a6e656a 100644
--- a/tests/integration/utils/exec_client.go
+++ b/tests/integration/utils/exec_client.go
@@ -16,7 +16,7 @@ func NewExecCommand() string {
 	if command != "" {
 		return command
 	} else {
-		return "oc"
+		return "kubectl"
 	}
 }