Skip to content

Commit 7df9525

Browse files
authored
Merge pull request #248 from amisskii/nightly-hyperv
Run nightly e2e tests with hyperv virtualization provider
2 parents c117278 + 8739a8b commit 7df9525

File tree

2 files changed

+242
-6
lines changed

2 files changed

+242
-6
lines changed
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
name: Podman Desktop E2E with Podman Nightly HyperV
2+
3+
on:
4+
schedule:
5+
- cron: '0 2 * * *'
6+
workflow_dispatch:
7+
inputs:
8+
fork:
9+
default: 'containers'
10+
description: 'Podman Desktop repo fork'
11+
type: string
12+
required: true
13+
branch:
14+
default: 'main'
15+
description: 'Podman Desktop repo branch'
16+
type: string
17+
required: true
18+
npm_target:
19+
default: 'test:e2e'
20+
description: 'npm target to run tests'
21+
type: string
22+
required: true
23+
env_vars:
24+
default: 'TEST_PODMAN_MACHINE=true'
25+
description: 'Env. Variables passed into target machine, ie: VAR1=xxx,VAR2=true,VAR3=15,VAR4="Pass me along"'
26+
type: 'string'
27+
required: true
28+
podman_remote_url:
29+
default: 'https://github.com/containers/podman/releases/download/v5.2.4/podman-5.2.4-setup.exe'
30+
description: 'podman latest version exe'
31+
type: string
32+
required: true
33+
images_version:
34+
default: 'BUILDER="v0.0.2",PODMAN="v0.0.2",RUNNER="v0.0.2"'
35+
description: 'Testing images versions, no spaces'
36+
type: 'string'
37+
required: true
38+
podman_provider:
39+
default: 'hyperv'
40+
description: 'Podman virtualization provider'
41+
type: 'string'
42+
required: true
43+
44+
jobs:
45+
windows:
46+
runs-on: ubuntu-latest
47+
permissions:
48+
contents: read
49+
checks: write
50+
env:
51+
MAPT_VERSION: v0.6.8
52+
MAPT_IMAGE: quay.io/redhat-developer/mapt
53+
strategy:
54+
fail-fast: false
55+
matrix:
56+
windows-version: ['10','11']
57+
windows-featurepack: ['22h2-ent', '23h2-ent']
58+
exclude:
59+
- windows-version: '10'
60+
windows-featurepack: '23h2-ent'
61+
- windows-version: '11'
62+
windows-featurepack: '22h2-ent'
63+
64+
steps:
65+
- name: Set the default env. variables
66+
env:
67+
DEFAULT_FORK: 'containers'
68+
DEFAULT_BRANCH: 'main'
69+
DEFAULT_NPM_TARGET: 'test:e2e'
70+
DEFAULT_PODMAN_PROVIDER: 'hyperv'
71+
DEFAULT_ENV_VARS: 'TEST_PODMAN_MACHINE=true'
72+
DEFAULT_URL: 'https://github.com/containers/podman/releases/download/v5.2.4/podman-5.2.4-setup.exe'
73+
DEFAULT_IMAGES_VERSIONS: 'BUILDER="v0.0.2",PODMAN="v0.0.2",RUNNER="v0.0.2"'
74+
run: |
75+
echo "FORK=${{ github.event.inputs.fork || env.DEFAULT_FORK }}" >> $GITHUB_ENV
76+
echo "BRANCH=${{ github.event.inputs.branch || env.DEFAULT_BRANCH }}" >> $GITHUB_ENV
77+
echo "PODMAN_PROVIDER=${{ github.event.inputs.podman_provider || env.DEFAULT_PODMAN_PROVIDER }}" >> $GITHUB_ENV
78+
echo "NPM_TARGET=${{ github.event.inputs.npm_target || env.DEFAULT_NPM_TARGET }}" >> $GITHUB_ENV
79+
echo "ENV_VARS=${{ github.event.inputs.env_vars || env.DEFAULT_ENV_VARS }}" >> $GITHUB_ENV
80+
echo "PODMAN_URL=${{ github.event.inputs.podman_remote_url || env.DEFAULT_URL }}" >> $GITHUB_ENV
81+
echo "${{ github.event.inputs.images_version || env.DEFAULT_IMAGES_VERSIONS }}" | awk -F ',' \
82+
'{for (i=1; i<=NF; i++) {split($i, kv, "="); print "PDE2E_"kv[1]"="kv[2]}}' >> $GITHUB_ENV
83+
84+
- name: Create instance
85+
run: |
86+
# Create instance
87+
podman run -d --name windows-create --rm \
88+
-v ${PWD}:/workspace:z \
89+
-e ARM_TENANT_ID=${{ secrets.ARM_TENANT_ID }} \
90+
-e ARM_SUBSCRIPTION_ID=${{ secrets.ARM_SUBSCRIPTION_ID }} \
91+
-e ARM_CLIENT_ID=${{ secrets.ARM_CLIENT_ID }} \
92+
-e ARM_CLIENT_SECRET='${{ secrets.ARM_CLIENT_SECRET }}' \
93+
${{ env.MAPT_IMAGE }}:${{ env.MAPT_VERSION }} azure \
94+
windows create \
95+
--project-name 'windows-desktop' \
96+
--backed-url 'file:///workspace' \
97+
--conn-details-output '/workspace' \
98+
--windows-version '${{ matrix.windows-version }}' \
99+
--windows-featurepack '${{ matrix.windows-featurepack }}' \
100+
--vmsize 'Standard_D8s_v4' \
101+
--tags project=podman-desktop \
102+
--spot
103+
# Check logs
104+
podman logs -f windows-create
105+
106+
- name: Check instance system info
107+
run: |
108+
ssh -i id_rsa \
109+
-o StrictHostKeyChecking=no \
110+
-o UserKnownHostsFile=/dev/null \
111+
-o ServerAliveInterval=30 \
112+
-o ServerAliveCountMax=1200 \
113+
$(cat username)@$(cat host) "systeminfo"
114+
115+
- name: Emulate X session
116+
run: |
117+
# use fake rdp to emulate an active x session
118+
podman run -d --name x-session \
119+
-e RDP_HOST=$(cat host) \
120+
-e RDP_USER=$(cat username) \
121+
-e RDP_PASSWORD=$(cat userpassword) \
122+
quay.io/rhqp/frdp:v0.0.1
123+
# Wait until the x session has been created
124+
podman wait --condition running x-session
125+
# Check logs for the x session
126+
podman logs x-session
127+
128+
- name: Setup dependencies and build Podman Desktop locally
129+
run: |
130+
podman run -d --name pde2e-builder-run \
131+
-e TARGET_HOST=$(cat host) \
132+
-e TARGET_HOST_USERNAME=$(cat username) \
133+
-e TARGET_HOST_KEY_PATH=/data/id_rsa \
134+
-e TARGET_FOLDER=pd-e2e \
135+
-e TARGET_CLEANUP=false \
136+
-e TARGET_RESULTS=results \
137+
-e OUTPUT_FOLDER=/data \
138+
-e DEBUG=true \
139+
-v $PWD:/data:z \
140+
quay.io/odockal/pde2e-builder:${{ env.PDE2E_BUILDER }}-windows \
141+
pd-e2e/builder.ps1 \
142+
-targetFolder pd-e2e \
143+
-resultsFolder results \
144+
-fork ${{ env.FORK }} \
145+
-branch ${{ env.BRANCH }}
146+
# check logs
147+
podman logs -f pde2e-builder-run
148+
149+
- name: Download Podman nightly, do not initialize and start
150+
run: |
151+
podman run --rm -d --name pde2e-podman-run \
152+
-e TARGET_HOST=$(cat host) \
153+
-e TARGET_HOST_USERNAME=$(cat username) \
154+
-e TARGET_HOST_KEY_PATH=/data/id_rsa \
155+
-e TARGET_FOLDER=pd-e2e \
156+
-e TARGET_CLEANUP=false \
157+
-e TARGET_RESULTS=results \
158+
-e OUTPUT_FOLDER=/data \
159+
-e DEBUG=true \
160+
-v $PWD:/data:z \
161+
quay.io/odockal/pde2e-podman:${{ env.PDE2E_PODMAN }}-windows \
162+
pd-e2e/podman.ps1 \
163+
-downloadUrl ${{ env.PODMAN_URL }} \
164+
-targetFolder pd-e2e \
165+
-resultsFolder results \
166+
-initialize 0 \
167+
-rootful 0 \
168+
-start 0 \
169+
-podmanProvider ${{ env.PODMAN_PROVIDER }}
170+
# check logs
171+
podman logs -f pde2e-podman-run
172+
173+
- name: Run Podman Desktop Playwright E2E tests
174+
env:
175+
PODMANDESKTOP_CI_BOT_TOKEN: ${{ secrets.PODMANDESKTOP_CI_BOT_TOKEN }}
176+
run: |
177+
echo "PODMANDESKTOP_CI_BOT_TOKEN=${PODMANDESKTOP_CI_BOT_TOKEN}" > secrets.txt
178+
podman run -d --name pde2e-runner-run \
179+
-e TARGET_HOST=$(cat host) \
180+
-e TARGET_HOST_USERNAME=$(cat username) \
181+
-e TARGET_HOST_KEY_PATH=/data/id_rsa \
182+
-e TARGET_FOLDER=pd-e2e \
183+
-e TARGET_RESULTS=results \
184+
-e OUTPUT_FOLDER=/data \
185+
-e DEBUG=true \
186+
-v $PWD:/data:z \
187+
-v $PWD/secrets.txt:/opt/pde2e-runner/secrets.txt:z \
188+
quay.io/odockal/pde2e-runner:${{ env.PDE2E_RUNNER }}-windows \
189+
pd-e2e/runner.ps1 \
190+
-targetFolder pd-e2e \
191+
-resultsFolder results \
192+
-podmanPath $(cat results/podman-location.log) \
193+
-fork ${{ env.FORK }} \
194+
-branch ${{ env.BRANCH }} \
195+
-npmTarget ${{ env.NPM_TARGET }} \
196+
-initialize 1 \
197+
-start 1 \
198+
-rootful 1 \
199+
-podmanProvider ${{ env.PODMAN_PROVIDER }} \
200+
-envVars ${{ env.ENV_VARS }} \
201+
-secretFile secrets.txt
202+
# check logs
203+
podman logs -f pde2e-runner-run
204+
205+
- name: Destroy instance
206+
if: always()
207+
run: |
208+
# Destroy instance
209+
podman run -d --name windows-destroy --rm \
210+
-v ${PWD}:/workspace:z \
211+
-e ARM_TENANT_ID=${{ secrets.ARM_TENANT_ID }} \
212+
-e ARM_SUBSCRIPTION_ID=${{ secrets.ARM_SUBSCRIPTION_ID }} \
213+
-e ARM_CLIENT_ID=${{ secrets.ARM_CLIENT_ID }} \
214+
-e ARM_CLIENT_SECRET='${{ secrets.ARM_CLIENT_SECRET }}' \
215+
${{ env.MAPT_IMAGE }}:${{ env.MAPT_VERSION }} azure \
216+
windows destroy \
217+
--project-name 'windows-desktop' \
218+
--backed-url 'file:///workspace'
219+
# Check logs
220+
podman logs -f windows-destroy
221+
222+
- name: Publish Test Report
223+
uses: mikepenz/action-junit-report@v4
224+
if: always() # always run even if the previous step fails
225+
with:
226+
fail_on_failure: true
227+
include_passed: true
228+
detailed_summary: true
229+
require_tests: true
230+
report_paths: '**/*results.xml'
231+
232+
- name: Upload test artifacts
233+
uses: actions/upload-artifact@v4
234+
if: always()
235+
with:
236+
name: results-e2e-${{ matrix.windows-version }}${{ matrix.windows-featurepack }}
237+
path: |
238+
results/*

.github/workflows/podman-desktop-e2e-nightly-windows.yaml renamed to .github/workflows/podman-desktop-e2e-nightly-windows-wsl.yaml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Podman Desktop E2E with Podman Nightly
1+
name: Podman Desktop E2E with Podman Nightly WSL
22

33
on:
44
schedule:
@@ -36,11 +36,9 @@ on:
3636
type: 'string'
3737
required: true
3838
podman_provider:
39-
type: choice
40-
description: 'Podman virtualization provider, default is wsl, alternative hyperv'
41-
options:
42-
- wsl
43-
- hyperv
39+
default: 'wsl'
40+
description: 'Podman virtualization provider'
41+
type: 'string'
4442
required: true
4543

4644
jobs:

0 commit comments

Comments
 (0)