@@ -19,27 +19,22 @@ name: Podman Desktop RHEL Extension E2E Nightly
1919
2020on :
2121 schedule :
22- - cron : ' 0 4 * * *'
22+ - cron : ' 0 4 * * *' # At 04:00 every day
2323 workflow_dispatch :
2424 inputs :
25- fork :
26- default : ' podman-desktop'
27- description : ' Podman Desktop repo fork'
28- type : string
29- required : true
30- branch :
31- default : ' main'
32- description : ' Podman Desktop repo branch'
25+ podman_desktop_repo_args :
26+ default : ' REPO=podman-desktop,FORK=podman-desktop,BRANCH=main'
27+ description : ' Podman Desktop repo fork and branch'
3328 type : string
3429 required : true
3530 ext_repo_options :
3631 default : ' REPO=podman-desktop-rhel-ext,FORK=redhat-developer,BRANCH=main'
3732 description : ' Podman Desktop Extension repo, fork and branch'
3833 type : string
3934 required : true
40- ext_tests :
41- default : ' 1'
42- description : ' Run E2E tests from extension '
35+ ext_tests_options :
36+ default : ' EXT_RUN_TESTS_FROM_EXTENSION=1,EXT_RUN_TESTS_AS_ADMIN= 1'
37+ description : ' E2E tests options in format VAR1=xxx,VAR2=true,VAR3=15 etc. '
4338 type : string
4439 required : true
4540 npm_target :
@@ -48,227 +43,168 @@ on:
4843 type : string
4944 required : true
5045 podman_remote_url :
51- default : ' https://github.com/containers/podman/releases/download/v5.4.2 /podman-5.4.2 -setup.exe'
52- description : ' podman setup exe'
46+ default : ' https://github.com/containers/podman/releases/download/v5.6.1 /podman-5.6.1 -setup.exe'
47+ description : ' podman remote setup exe'
5348 type : string
5449 required : true
5550 podman_options :
5651 default : ' INIT=1,START=1,ROOTFUL=1,NETWORKING=0'
5752 description : ' Podman machine configuration options, no spaces'
58- type : ' string'
53+ type : string
5954 required : true
6055 env_vars :
61- default : ' TEST_PODMAN_MACHINE=true'
62- description : ' Env. Variables passed into target machine, ie: VAR1=xxx,VAR2=true,VAR3=15,VAR4="Pass me along"'
63- type : ' string'
56+ default : ' TEST_PODMAN_MACHINE=true,ELECTRON_ENABLE_INSPECT=true'
57+ description : ' Env. Variables passed into target machine, ie: VAR1=xxx,VAR2=true...'
58+ type : string
59+ required : true
60+ pde2e_image_version :
61+ default : ' v0.0.3'
62+ description : ' PDE2E runner, builder, podman image versions'
63+ type : string
6464 required : true
6565 podman_provider :
6666 default : ' wsl'
6767 description : ' Podman virtualization provider'
6868 type : ' string'
6969 required : true
70- images_version :
71- default : ' BUILDER="v0.0.3",PODMAN="v0.0.3",RUNNER="v0.0.3"'
72- description : ' Testing images versions, no spaces'
73- type : ' string'
70+ mapt_params :
71+ default : ' IMAGE=quay.io/redhat-developer/mapt;VERSION_TAG=v0.9.7;CPUS=8;MEMORY=32;EXCLUDED_REGIONS="westindia,centralindia,southindia,australiacentral,australiacentral2,australiaeast,australiasoutheast,southafricanorth,southafricawest"'
72+ description : ' MAPT image, version tag, cpus and memory request, and excluded regions in format IMAGE=xxx;VERSION_TAG=xxx;CPUS=xxx;MEMORY=xxx;EXCLUDED_REGIONS=xxx'
7473 required : true
74+ type : string
7575
7676jobs :
7777 windows :
78+ timeout-minutes : 120
7879 name : windows-${{ matrix.windows-version }}-${{ matrix.windows-featurepack }}
7980 runs-on : ubuntu-24.04
80- env :
81- MAPT_VERSION : v0.8.2
82- MAPT_IMAGE : quay.io/redhat-developer/mapt
8381 strategy :
8482 fail-fast : false
8583 matrix :
86- windows-version : ['10','11']
84+ windows-version : ['10', '11']
8785 windows-featurepack : ['22h2-ent', '23h2-ent']
8886 exclude :
89- - windows-version : ' 10'
90- windows-featurepack : ' 23h2-ent'
91- - windows-version : ' 11'
92- windows-featurepack : ' 22h2-ent'
93-
87+ - windows-version : ' 10'
88+ windows-featurepack : ' 23h2-ent'
89+ - windows-version : ' 11'
90+ windows-featurepack : ' 22h2-ent'
9491
9592 steps :
96- - name : Get Podman version used by Desktop
97- run : |
98- version=$(curl https://raw.githubusercontent.com/containers/podman-desktop/main/extensions/podman/packages/extension/src/podman5.json | jq -r '.version')
99- echo "Default Podman Version from Podman Desktop: ${version}"
100- echo "PD_PODMAN_VERSION=${version}" >> $GITHUB_ENV
101- - name : Set the default env. variables
102- env :
103- DEFAULT_FORK : ' podman-desktop'
104- DEFAULT_BRANCH : ' main'
105- DEFAULT_EXT_TESTS : ' 1'
106- DEFAULT_NPM_TARGET : ' test:e2e'
107- DEFAULT_ENV_VARS : ' TEST_PODMAN_MACHINE=true'
108- DEFAULT_PODMAN_OPTIONS : ' INIT=1,START=1,ROOTFUL=1,NETWORKING=0'
109- DEFAULT_PODMAN_PROVIDER : ' wsl'
110- DEFAULT_EXT_REPO_OPTIONS : ' REPO=podman-desktop-rhel-ext,FORK=redhat-developer,BRANCH=main'
111- DEFAULT_URL : " https://github.com/containers/podman/releases/download/v$DEFAULT_VERSION/podman-$DEFAULT_VERSION-setup.exe"
112- DEFAULT_VERSION : " ${{ env.PD_PODMAN_VERSION || '5.4.2' }}"
113- DEFAULT_IMAGES_VERSIONS : ' BUILDER="v0.0.3",PODMAN="v0.0.3",RUNNER="v0.0.3"'
114- run : |
115- echo "FORK=${{ github.event.inputs.fork || env.DEFAULT_FORK }}" >> $GITHUB_ENV
116- echo "BRANCH=${{ github.event.inputs.branch || env.DEFAULT_BRANCH }}" >> $GITHUB_ENV
117- echo "NPM_TARGET=${{ github.event.inputs.npm_target || env.DEFAULT_NPM_TARGET }}" >> $GITHUB_ENV
118- echo "ENV_VARS=${{ github.event.inputs.env_vars || env.DEFAULT_ENV_VARS }}" >> $GITHUB_ENV
119- echo "PODMAN_PROVIDER=${{ github.event.inputs.podman_provider || env.DEFAULT_PODMAN_PROVIDER }}" >> $GITHUB_ENV
120- echo "PODMAN_URL=${{ github.event.inputs.podman_remote_url || env.DEFAULT_URL }}" >> $GITHUB_ENV
121- echo "EXT_TESTS=${{ github.event.inputs.ext_tests || env.DEFAULT_EXT_TESTS }}" >> $GITHUB_ENV
122- echo "${{ github.event.inputs.podman_options || env.DEFAULT_PODMAN_OPTIONS }}" | awk -F ',' \
123- '{for (i=1; i<=NF; i++) {split($i, kv, "="); print "PODMAN_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
124- echo "${{ github.event.inputs.ext_repo_options || env.DEFAULT_EXT_REPO_OPTIONS }}" | awk -F ',' \
125- '{for (i=1; i<=NF; i++) {split($i, kv, "="); print "EXT_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
126- echo "${{ github.event.inputs.images_version || env.DEFAULT_IMAGES_VERSIONS }}" | awk -F ',' \
127- '{for (i=1; i<=NF; i++) {split($i, kv, "="); print "PDE2E_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
93+ - name : Get Podman version used by Desktop
94+ run : |
95+ version=$(curl https://raw.githubusercontent.com/containers/podman-desktop/main/extensions/podman/packages/extension/src/podman5.json | jq -r '.version')
96+ echo "Default Podman Version from Podman Desktop: ${version}"
97+ echo "PD_PODMAN_VERSION=${version}" >> $GITHUB_ENV
98+ - name : Set the default env. variables
99+ env :
100+ DEFAULT_PODMAN_DESKTOP_REPO_ARGS : ' REPO=podman-desktop,FORK=podman-desktop,BRANCH=main'
101+ DEFAULT_NPM_TARGET : ' test:e2e'
102+ DEFAULT_PODMAN_PROVIDER : ' wsl'
103+ DEFAULT_ENV_VARS : ' TEST_PODMAN_MACHINE=true,ELECTRON_ENABLE_INSPECT=true'
104+ DEFAULT_PODMAN_OPTIONS : ' INIT=1,START=1,ROOTFUL=1,NETWORKING=0'
105+ DEFAULT_EXT_TESTS_OPTIONS : ' EXT_RUN_TESTS_FROM_EXTENSION=1,EXT_RUN_TESTS_AS_ADMIN=0'
106+ DEFAULT_EXT_REPO_OPTIONS : ' REPO=podman-desktop-rhel-ext,FORK=redhat-developer,BRANCH=main'
107+ DEFAULT_PODMAN_VERSION : " ${{ env.PD_PODMAN_VERSION || '5.6.1' }}"
108+ DEFAULT_URL : ' https://github.com/containers/podman/releases/download/v$DEFAULT_PODMAN_VERSION/podman-$DEFAULT_PODMAN_VERSION-setup.exe'
109+ DEFAULT_PDE2E_IMAGE_VERSION : ' v0.0.3-windows'
110+ DEFAULT_MAPT_PARAMS : ' IMAGE=${{ vars.MAPT_IMAGE || '' quay.io/redhat-developer/mapt'' }};VERSION_TAG=${{ vars.MAPT_VERSION_TAG || '' v0.9.7'' }};CPUS=${{ vars.MAPT_CPUS || '' 8 '' }};MEMORY=${{ vars.MAPT_MEMORY || '' 32'' }};EXCLUDED_REGIONS="${{ vars.MAPT_EXCLUDED_REGIONS || '' westindia,centralindia,southindia,australiacentral,australiacentral2,australiaeast,australiasoutheast,southafricanorth,southafricawest'' }}"'
111+ run : |
112+ echo "NPM_TARGET=${{ github.event.inputs.npm_target || env.DEFAULT_NPM_TARGET }}" >> $GITHUB_ENV
113+ echo "ENV_VARS=${{ github.event.inputs.env_vars || env.DEFAULT_ENV_VARS }}" >> $GITHUB_ENV
114+ echo "PODMAN_PROVIDER=${{ github.event.inputs.podman_provider || env.DEFAULT_PODMAN_PROVIDER }}" >> $GITHUB_ENV
115+ echo "PODMAN_URL=${{ github.event.inputs.podman_remote_url || env.DEFAULT_URL }}" >> $GITHUB_ENV
116+ echo "PDE2E_IMAGE_VERSION=${{ github.event.inputs.pde2e_image_version || env.DEFAULT_PDE2E_IMAGE_VERSION }}" >> $GITHUB_ENV
117+ echo "${{ github.event.inputs.podman_desktop_repo_args || env.DEFAULT_PODMAN_DESKTOP_REPO_ARGS }}" | awk -F ',' \
118+ '{for (i=1; i<=NF; i++) {split($i, kv, "="); print "PD_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
119+ echo "${{ github.event.inputs.ext_tests_options || env.DEFAULT_EXT_TESTS_OPTIONS }}" | awk -F ',' \
120+ '{for (i=1; i<=NF; i++) {split($i, kv, "="); print kv[1]"="kv[2]}}' >> $GITHUB_ENV
121+ echo "${{ github.event.inputs.podman_options || env.DEFAULT_PODMAN_OPTIONS }}" | awk -F ',' \
122+ '{for (i=1; i<=NF; i++) {split($i, kv, "="); print "PODMAN_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
123+ echo "${{ github.event.inputs.ext_repo_options || env.DEFAULT_EXT_REPO_OPTIONS }}" | awk -F ',' \
124+ '{for (i=1; i<=NF; i++) {split($i, kv, "="); print "EXT_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
125+ echo "${{ github.event.inputs.mapt_params || env.DEFAULT_MAPT_PARAMS }}" | awk -F ';' \
126+ '{for (i=1; i<=NF; i++) {split($i, kv, "="); print "MAPT_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
127+
128+ - name : Create instance
129+ uses : podman-desktop/e2e/.github/actions/create-instance@36e440f2ac18193214f4ffa8f7f1c4c0cb8c9446
130+ with :
131+ mapt-image : ${{ env.MAPT_IMAGE || '' }}
132+ mapt-version : ${{ env.MAPT_VERSION_TAG || '' }}
133+ windows-version : ${{ matrix.windows-version }}
134+ windows-featurepack : ${{ matrix.windows-featurepack }}
135+ cpus : ${{ env.MAPT_CPUS || '' }}
136+ memory : ${{ env.MAPT_MEMORY || '' }}
137+ excluded-regions : ${{ env.MAPT_EXCLUDED_REGIONS || '' }}
138+ arm-tenant-id : ${{ secrets.ARM_TENANT_ID }}
139+ arm-subscription-id : ${{ secrets.ARM_SUBSCRIPTION_ID }}
140+ arm-client-id : ${{ secrets.ARM_CLIENT_ID }}
141+ arm-client-secret : ${{ secrets.ARM_CLIENT_SECRET }}
128142
129- - name : Create instance
130- run : |
131- # Create instance
132- podman run -d --name windows-create --rm \
133- -v ${PWD}:/workspace:z \
134- -e ARM_TENANT_ID=${{ secrets.ARM_TENANT_ID }} \
135- -e ARM_SUBSCRIPTION_ID=${{ secrets.ARM_SUBSCRIPTION_ID }} \
136- -e ARM_CLIENT_ID=${{ secrets.ARM_CLIENT_ID }} \
137- -e ARM_CLIENT_SECRET='${{ secrets.ARM_CLIENT_SECRET }}' \
138- ${{ env.MAPT_IMAGE }}:${{ env.MAPT_VERSION }} azure \
139- windows create \
140- --project-name 'windows-desktop' \
141- --backed-url 'file:///workspace' \
142- --conn-details-output '/workspace' \
143- --windows-version '${{ matrix.windows-version }}' \
144- --windows-featurepack '${{ matrix.windows-featurepack }}' \
145- --nested-virt \
146- --cpus 8 \
147- --memory 24 \
148- --tags project=podman-desktop \
149- --spot
150- # Check logs
151- podman logs -f windows-create
143+ - name : Check instance system info
144+ uses : podman-desktop/e2e/.github/actions/instance-system-info@3548105f45def129d5e3aaa5a3d922e09ac892d9
152145
153- - name : Check instance system info
154- run : |
155- ssh -i id_rsa \
156- -o StrictHostKeyChecking=no \
157- -o UserKnownHostsFile=/dev/null \
158- -o ServerAliveInterval=30 \
159- -o ServerAliveCountMax=1200 \
160- $(cat username)@$(cat host) "systeminfo"
146+ - name : Emulate X session
147+ uses : podman-desktop/e2e/.github/actions/emulate-x-session@3548105f45def129d5e3aaa5a3d922e09ac892d9
161148
162- - name : Emulate X session
163- run : |
164- # use fake rdp to emulate an active x session
165- podman run -d --name x-session \
166- -e RDP_HOST=$(cat host) \
167- -e RDP_USER=$(cat username) \
168- -e RDP_PASSWORD=$(cat userpassword) \
169- quay.io/rhqp/frdp:v0.0.1
170- # Wait until the x session has been created
171- podman wait --condition running x-session
172- # Check logs for the x session
173- podman logs x-session
149+ - name : Download Podman, do not initialize
150+ uses : podman-desktop/e2e/.github/actions/download-podman-nightly@952cafee20ca82b1ce48b29c848bac1c31062245
151+ with :
152+ podman-image-tag : ${{ env.PDE2E_IMAGE_VERSION }}
153+ podman-download-url : ${{ env.PODMAN_URL }}
174154
175- - name : Download Podman, do not initialize
176- run : |
177- podman run --rm -d --name pde2e-podman-run \
178- -e TARGET_HOST=$(cat host) \
179- -e TARGET_HOST_USERNAME=$(cat username) \
180- -e TARGET_HOST_KEY_PATH=/data/id_rsa \
181- -e TARGET_FOLDER=pd-e2e \
182- -e TARGET_CLEANUP=false \
183- -e TARGET_RESULTS=results \
184- -e OUTPUT_FOLDER=/data \
185- -e DEBUG=true \
186- -v $PWD:/data:z \
187- quay.io/odockal/pde2e-podman:${{ env.PDE2E_PODMAN }}-windows \
188- pd-e2e/podman.ps1 \
189- -downloadUrl ${{ env.PODMAN_URL }} \
190- -targetFolder pd-e2e \
191- -resultsFolder results \
192- -podmanProvider ${{ env.PODMAN_PROVIDER }} \
193- -initialize 0 \
194- -rootful 0 \
195- -start 0 \
196- -installWSL 0
197- # check logs
198- podman logs -f pde2e-podman-run
155+ - name : Build Podman Desktop Electron Inspect Enabled binary
156+ uses : podman-desktop/e2e/.github/actions/build-podman-desktop@0c1f0a035e0949941fd6abf959ab556ceec13f03
157+ with :
158+ fork : ${{ env.PD_FORK }}
159+ branch : ${{ env.PD_BRANCH }}
160+ env-vars : ${{ env.ENV_VARS }}
199161
200- - name : Run Podman Desktop Playwright E2E tests
201- env :
202- DVLPR_USERNAME : ${{ secrets.DVLPR_USERNAME }}
203- DVLPR_PASSWORD : ${{ secrets.DVLPR_PASSWORD }}
204- run : |
205- echo "DVLPR_USERNAME=${DVLPR_USERNAME}" >> secrets.txt
206- echo "DVLPR_PASSWORD=${DVLPR_PASSWORD}" >> secrets.txt
207- podman run -d --name pde2e-runner-run \
208- -e TARGET_HOST=$(cat host) \
209- -e TARGET_HOST_USERNAME=$(cat username) \
210- -e TARGET_HOST_KEY_PATH=/data/id_rsa \
211- -e TARGET_FOLDER=pd-e2e \
212- -e TARGET_RESULTS=results \
213- -e TARGET_CLEANUP=false \
214- -e OUTPUT_FOLDER=/data \
215- -e DEBUG=true \
216- -v $PWD:/data:z \
217- -v $PWD/secrets.txt:/opt/pde2e-runner/secrets.txt:z \
218- quay.io/odockal/pde2e-runner:${{ env.PDE2E_RUNNER }}-windows \
219- pd-e2e/runner.ps1 \
220- -targetFolder pd-e2e \
221- -resultsFolder results \
222- -podmanPath $(cat results/podman-location.log) \
223- -fork ${{ env.FORK }} \
224- -branch ${{ env.BRANCH }} \
225- -extRepo ${{ env.EXT_REPO }} \
226- -extFork ${{ env.EXT_FORK }} \
227- -extBranch ${{ env.EXT_BRANCH }} \
228- -extTests ${{ env.EXT_TESTS }} \
229- -npmTarget ${{ env.NPM_TARGET }} \
230- -initialize ${{ env.PODMAN_INIT }} \
231- -rootful ${{ env.PODMAN_ROOTFUL }} \
232- -start ${{ env.PODMAN_START }} \
233- -userNetworking ${{ env.PODMAN_NETWORKING }} \
234- -podmanProvider ${{ env.PODMAN_PROVIDER }} \
235- -secretFile secrets.txt \
236- -envVars ${{ env.ENV_VARS }}
237- # check logs
238- podman logs -f pde2e-runner-run
162+ - name : Run Podman Desktop Playwright E2E tests
163+ uses : podman-desktop/e2e/.github/actions/run-playwright-test@15b800edab941d394b32aaaa3f7961bb7db7ec3a
164+ with :
165+ pde2e-runner-tag : ${{ env.PDE2E_IMAGE_VERSION }}
166+ podman-desktop-path : true
167+ fork-repo : ${{ env.PD_FORK }}
168+ branch-name : ${{ env.PD_BRANCH }}
169+ ext-repo : ${{ env.EXT_REPO }}
170+ ext-fork : ${{ env.EXT_FORK }}
171+ ext-branch : ${{ env.EXT_BRANCH }}
172+ ext-tests : ${{ env.EXT_RUN_TESTS_FROM_EXTENSION }}
173+ npm-target : ${{ env.NPM_TARGET }}
174+ podman-init : ${{ env.PODMAN_INIT }}
175+ podman-start : ${{ env.PODMAN_START }}
176+ rootful : ${{ env.PODMAN_ROOTFUL }}
177+ user-networking : ${{ env.PODMAN_NETWORKING }}
178+ podman-provider : ${{ env.PODMAN_PROVIDER }}
179+ env-vars : ${{ env.ENV_VARS }}
180+ ci-bot-token : ${{ secrets.PODMAN_DESKTOP_BOT_TOKEN }}
239181
240- - name : Destroy instance
241- if : always()
242- run : |
243- # Destroy instance
244- podman run -d --name windows-destroy --rm \
245- -v ${PWD}:/workspace:z \
246- -e ARM_TENANT_ID=${{ secrets.ARM_TENANT_ID }} \
247- -e ARM_SUBSCRIPTION_ID=${{ secrets.ARM_SUBSCRIPTION_ID }} \
248- -e ARM_CLIENT_ID=${{ secrets.ARM_CLIENT_ID }} \
249- -e ARM_CLIENT_SECRET='${{ secrets.ARM_CLIENT_SECRET }}' \
250- ${{ env.MAPT_IMAGE }}:${{ env.MAPT_VERSION }} azure \
251- windows destroy \
252- --project-name 'windows-desktop' \
253- --backed-url 'file:///workspace'
254- # Check logs
255- podman logs -f windows-destroy
182+ - name : Destroy instance
183+ if : always()
184+ uses : podman-desktop/e2e/.github/actions/destroy-instance@36e440f2ac18193214f4ffa8f7f1c4c0cb8c9446
185+ with :
186+ mapt-image : ${{ env.MAPT_IMAGE }}
187+ mapt-version : ${{ env.MAPT_VERSION_TAG }}
188+ arm-tenant-id : ${{ secrets.ARM_TENANT_ID }}
189+ arm-subscription-id : ${{ secrets.ARM_SUBSCRIPTION_ID }}
190+ arm-client-id : ${{ secrets.ARM_CLIENT_ID }}
191+ arm-client-secret : ${{ secrets.ARM_CLIENT_SECRET }}
256192
257- - name : Publish Test Report
258- uses : mikepenz/action-junit-report@v5
259- if : always() # always run even if the previous step fails
260- with :
261- annotate_only : true
262- fail_on_failure : true
263- include_passed : true
264- detailed_summary : true
265- require_tests : true
266- report_paths : ' **/*results.xml'
193+ - name : Publish Test Report
194+ uses : mikepenz/action-junit-report@v5
195+ if : always() # always run even if the previous step fails
196+ with :
197+ annotate_only : true
198+ fail_on_failure : true
199+ include_passed : true
200+ detailed_summary : true
201+ require_tests : true
202+ report_paths : ' **/*results.xml'
267203
268- - name : Upload test artifacts
269- uses : actions/upload-artifact@v4
270- if : always()
271- with :
272- name : results-e2e-${{ matrix.windows-version }}${{ matrix.windows-featurepack }}
273- path : |
274- results/*
204+ - name : Upload test artifacts
205+ uses : actions/upload-artifact@v4
206+ if : always()
207+ with :
208+ name : results-e2e-${{ matrix.windows-version }}${{ matrix.windows-featurepack }}
209+ path : |
210+ results/*
0 commit comments