From de5650bcf10758cd327c1490189a23f1e3de9980 Mon Sep 17 00:00:00 2001 From: Daniel Villanueva Date: Wed, 11 Dec 2024 10:54:42 +0100 Subject: [PATCH] test(e2e): build extension once before test matrix Signed-off-by: Daniel Villanueva --- .github/workflows/pr-check.yaml | 181 +++++++++++++++++++++----------- 1 file changed, 121 insertions(+), 60 deletions(-) diff --git a/.github/workflows/pr-check.yaml b/.github/workflows/pr-check.yaml index 9307f2d..e423b30 100644 --- a/.github/workflows/pr-check.yaml +++ b/.github/workflows/pr-check.yaml @@ -119,8 +119,65 @@ jobs: - name: Run Tests run: yarn test + build-extension: + name: build crc extension and upload image artifact + runs-on: ubuntu-24.04 + steps: + - name: checkout extension's code + uses: actions/checkout@v4 + with: + path: crc-extension + + - uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Ensure getting current HEAD version of the test framework (ubuntu) + working-directory: ./crc-extension + run: | + # workaround for https://github.com/containers/podman-desktop-extension-bootc/issues/712 + version=$(npm view @podman-desktop/tests-playwright@next version) + echo "Version of @podman-desktop/tests-playwright to be used: $version" + jq --arg version "$version" '.devDependencies."@podman-desktop/tests-playwright" = $version' package.json > package.json_tmp && mv package.json_tmp package.json + shell: bash + + - name: Execute yarn in OpenShift Local Extension + working-directory: ./crc-extension + run: yarn + + - name: Revert unprivileged user namespace restrictions in Ubuntu 24.04 + run: | + # allow unprivileged user namespace + sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 + + - name: Build OpenShift Local extension from container file (Ubuntu, podman) + working-directory: ./crc-extension + run: | + podman build -t openshift_local_image . -f ./oci/Containerfile.multistage + podman save -o crc-extension-artifact.tar openshift_local_image + +# CONTAINER_ID_CRC=$(podman create localhost/openshift_local_image --entrypoint "") +# podman export $CONTAINER_ID_CRC > /tmp/openshift_local_extension.tar +# mkdir -p tests/playwright/output/crc-tests-pd/plugins +# podman pull ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest +# CONTAINER_ID_SSO=$(podman create ghcr.io/redhat-developer/podman-desktop-redhat-account-ext --entrypoint "") +# podman export $CONTAINER_ID_SSO > /tmp/sso_extension.tar +# tar -xf /tmp/openshift_local_extension.tar -C tests/playwright/output/crc-tests-pd/plugins/ +# mv tests/playwright/output/crc-tests-pd/plugins/extension/ tests/playwright/output/crc-tests-pd/plugins/crcextension +# # does this output match the one from the locally built version? +# ls -l tests/playwright/output/crc-tests-pd/plugins/crcextension +# tar -xf /tmp/sso_extension.tar -C tests/playwright/output/crc-tests-pd/plugins/ +# mv tests/playwright/output/crc-tests-pd/plugins/extension/ tests/playwright/output/crc-tests-pd/plugins/ssoextension + + - name: Upload extension's artifact + uses: actions/upload-artifact@v4 + with: + name: crc-extension-artifact + path: crc-extension-artifact.tar + e2e-tests: name: e2e tests for ${{ matrix.os }} + needs: build-extension strategy: fail-fast: false matrix: @@ -129,9 +186,9 @@ jobs: env: SKIP_INSTALLATION: true steps: - - uses: actions/checkout@v4 - with: - path: crc-extension + # - uses: actions/checkout@v4 + # with: + # path: crc-extension # Checkout podman desktop - uses: actions/checkout@v4 @@ -158,47 +215,49 @@ jobs: working-directory: ./podman-desktop run: pnpm test:e2e:build - - name: Ensure getting current HEAD version of the test framework (windows) - if: matrix.os == 'windows-2022' - working-directory: ./crc-extension - run: | - # workaround for https://github.com/containers/podman-desktop-extension-bootc/issues/712 - $version = npm view @podman-desktop/tests-playwright@next version - Write-Host "Version of @podman-desktop/tests-playwright to be used: $version" - $packageJson = Get-Content -Raw -Path package.json | ConvertFrom-Json - $packageJson.devDependencies."@podman-desktop/tests-playwright" = $version - $packageJson | ConvertTo-Json -Depth 100 | Set-Content -Path package.json -Encoding utf8 - shell: powershell - - - name: Ensure getting current HEAD version of the test framework (ubuntu) - if: matrix.os == 'ubuntu-24.04' - working-directory: ./crc-extension - run: | - # workaround for https://github.com/containers/podman-desktop-extension-bootc/issues/712 - version=$(npm view @podman-desktop/tests-playwright@next version) - echo "Version of @podman-desktop/tests-playwright to be used: $version" - jq --arg version "$version" '.devDependencies."@podman-desktop/tests-playwright" = $version' package.json > package.json_tmp && mv package.json_tmp package.json - shell: bash - - - name: Execute yarn in OpenShift Local Extension - working-directory: ./crc-extension - run: yarn - - - name: Revert unprivileged user namespace restrictions in Ubuntu 24.04 - if: matrix.os == 'ubuntu-24.04' - run: | - # allow unprivileged user namespace - sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 +# - name: Ensure getting current HEAD version of the test framework (windows) +# if: matrix.os == 'windows-2022' +# working-directory: ./crc-extension +# run: | +# # workaround for https://github.com/containers/podman-desktop-extension-bootc/issues/712 +# $version = npm view @podman-desktop/tests-playwright@next version +# Write-Host "Version of @podman-desktop/tests-playwright to be used: $version" +# $packageJson = Get-Content -Raw -Path package.json | ConvertFrom-Json +# $packageJson.devDependencies."@podman-desktop/tests-playwright" = $version +# $packageJson | ConvertTo-Json -Depth 100 | Set-Content -Path package.json -Encoding utf8 +# shell: powershell + +# - name: Ensure getting current HEAD version of the test framework (ubuntu) +# if: matrix.os == 'ubuntu-24.04' +# working-directory: ./crc-extension +# run: | +# # workaround for https://github.com/containers/podman-desktop-extension-bootc/issues/712 +# version=$(npm view @podman-desktop/tests-playwright@next version) +# echo "Version of @podman-desktop/tests-playwright to be used: $version" +# jq --arg version "$version" '.devDependencies."@podman-desktop/tests-playwright" = $version' package.json > package.json_tmp && mv package.json_tmp package.json +# shell: bash + +# - name: Execute yarn in OpenShift Local Extension +# working-directory: ./crc-extension +# run: yarn +# +# - name: Revert unprivileged user namespace restrictions in Ubuntu 24.04 +# if: matrix.os == 'ubuntu-24.04' +# run: | +# # allow unprivileged user namespace +# sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 - name: Build OpenShift Local extension from container file (Ubuntu, podman) if: matrix.os == 'ubuntu-24.04' working-directory: ./crc-extension run: | - podman build -t openshift_local_image . -f ./oci/Containerfile.multistage + # podman build -t openshift_local_image . -f ./oci/Containerfile.multistage + podman load -i crc-extension-artifact.tar CONTAINER_ID_CRC=$(podman create localhost/openshift_local_image --entrypoint "") podman export $CONTAINER_ID_CRC > /tmp/openshift_local_extension.tar mkdir -p tests/playwright/output/crc-tests-pd/plugins + podman pull ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest CONTAINER_ID_SSO=$(podman create ghcr.io/redhat-developer/podman-desktop-redhat-account-ext --entrypoint "") podman export $CONTAINER_ID_SSO > /tmp/sso_extension.tar @@ -209,31 +268,33 @@ jobs: tar -xf /tmp/sso_extension.tar -C tests/playwright/output/crc-tests-pd/plugins/ mv tests/playwright/output/crc-tests-pd/plugins/extension/ tests/playwright/output/crc-tests-pd/plugins/ssoextension - - name: Build OpenShift Local extension locally (Windows, docker) #from container file is not available yet - if: matrix.os == 'windows-2022' - working-directory: ./crc-extension - shell: pwsh - run: | - # generate 'openshift-local.cdix': - pnpm build - # put the contents into its expected folder: - New-Item -ItemType Directory -Path tests\playwright\output\crc-tests-pd\plugins -Force - Expand-Archive -Path "$(pwd)\openshift-local.cdix" -DestinationPath ".\tests\playwright\output\crc-tests-pd\plugins\crcextension" - # does this output match the one from the containerfile built version? - Get-ChildItem -Path "$(pwd)\tests\playwright\output\crc-tests-pd\plugins\crcextension" - - # build sso dependency from containerfile: - #docker build -t openshift_local_image . -f ./oci/Containerfile.multistage - #$CONTAINER_ID_CRC = docker create openshift_local_image --entrypoint "" - #docker export $CONTAINER_ID_CRC > C:\temp\openshift_local_extension.tar - #New-Item -ItemType Directory -Path tests\playwright\output\crc-tests-pd\plugins -Force - docker pull ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest - $CONTAINER_ID_SSO = docker create ghcr.io/redhat-developer/podman-desktop-redhat-account-ext --entrypoint "" - docker export $CONTAINER_ID_SSO > C:\temp\sso_extension.tar - #tar -xf C:\temp\openshift_local_extension.tar -C tests\playwright\output\crc-tests-pd\plugins\ - #Move-Item tests\playwright\output\crc-tests-pd\plugins\extension\ tests\playwright\output\crc-tests-pd\plugins\crcextension - tar -xf C:\temp\sso_extension.tar -C tests\playwright\output\crc-tests-pd\plugins\ - Move-Item tests\playwright\output\crc-tests-pd\plugins\extension\ tests\playwright\output\crc-tests-pd\plugins\ssoextension +# - name: Build OpenShift Local extension locally (Windows, docker) #from container file is not available yet +# if: matrix.os == 'windows-2022' +# working-directory: ./crc-extension +# shell: pwsh +# run: | +# # generate 'openshift-local.cdix': +# pnpm build +# # put the contents into its expected folder: +# New-Item -ItemType Directory -Path tests\playwright\output\crc-tests-pd\plugins -Force +# Get-ChildItem -Path "$(pwd)" +# Get-ChildItem -Path "$(pwd)\tests\playwright\output\crc-tests-pd\plugins\crcextension" +# Expand-Archive -Path "$(pwd)\openshift-local.cdix" -DestinationPath "$(pwd)\tests\playwright\output\crc-tests-pd\plugins\crcextension" +# # does this output match the one from the containerfile built version? +# Get-ChildItem -Path "$(pwd)\tests\playwright\output\crc-tests-pd\plugins\crcextension" +# +# # build sso dependency from containerfile: +# #docker build -t openshift_local_image . -f ./oci/Containerfile.multistage +# #$CONTAINER_ID_CRC = docker create openshift_local_image --entrypoint "" +# #docker export $CONTAINER_ID_CRC > C:\temp\openshift_local_extension.tar +# #New-Item -ItemType Directory -Path tests\playwright\output\crc-tests-pd\plugins -Force +# docker pull ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest +# $CONTAINER_ID_SSO = docker create ghcr.io/redhat-developer/podman-desktop-redhat-account-ext --entrypoint "" +# docker export $CONTAINER_ID_SSO > C:\temp\sso_extension.tar +# #tar -xf C:\temp\openshift_local_extension.tar -C tests\playwright\output\crc-tests-pd\plugins\ +# #Move-Item tests\playwright\output\crc-tests-pd\plugins\extension\ tests\playwright\output\crc-tests-pd\plugins\crcextension +# tar -xf C:\temp\sso_extension.tar -C tests\playwright\output\crc-tests-pd\plugins\ +# Move-Item tests\playwright\output\crc-tests-pd\plugins\extension\ tests\playwright\output\crc-tests-pd\plugins\ssoextension - name: Run All E2E tests working-directory: ./crc-extension