Skip to content

Commit

Permalink
test(e2e): build extension once before test matrix
Browse files Browse the repository at this point in the history
Signed-off-by: Daniel Villanueva <[email protected]>
  • Loading branch information
danivilla9 committed Dec 11, 2024
1 parent 8d1a1f5 commit de5650b
Showing 1 changed file with 121 additions and 60 deletions.
181 changes: 121 additions & 60 deletions .github/workflows/pr-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down

0 comments on commit de5650b

Please sign in to comment.