86
86
# for bin/buildinputs in scripts/sandbox.py
87
87
- uses : actions/setup-go@v5
88
88
with :
89
- cache-dependency-path : " **/* .sum"
89
+ cache-dependency-path : " scripts/buildinputs/go .sum"
90
90
91
91
- run : sudo apt-get update
92
92
@@ -335,7 +335,7 @@ jobs:
335
335
- name : Run Testcontainers container tests (in PyTest)
336
336
run : |
337
337
set -Eeuxo pipefail
338
- uv run pytest --capture=fd tests/containers -m 'not openshift' --image="${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}"
338
+ uv run pytest --capture=fd tests/containers -m 'not openshift and not cuda and not rocm ' --image="${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}"
339
339
env :
340
340
DOCKER_HOST : " unix:///var/run/podman/podman.sock"
341
341
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE : " /var/run/podman/podman.sock"
@@ -379,20 +379,23 @@ jobs:
379
379
sudo apt-get update
380
380
sudo apt-get install -y software-properties-common curl
381
381
382
+ # https://github.com/cri-o/packaging?tab=readme-ov-file#distributions-using-deb-packages
383
+
382
384
curl -fsSL https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/Release.key | \
383
385
sudo gpg --dearmor --batch --yes -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
384
386
385
387
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/ /" | \
386
388
sudo tee /etc/apt/sources.list.d/kubernetes.list
387
389
388
- curl -fsSL https://pkgs.k8s.io/addons :/cri-o:/stable:/$CRIO_VERSION/deb/Release.key | \
390
+ curl -fsSL https://download.opensuse.org/repositories/isv :/cri-o:/stable:/$CRIO_VERSION/deb/Release.key | \
389
391
sudo gpg --dearmor --batch --yes -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
390
392
391
- echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons :/cri-o:/stable:/$CRIO_VERSION/deb/ /" | \
393
+ echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://download.opensuse.org/repositories/isv :/cri-o:/stable:/$CRIO_VERSION/deb/ /" | \
392
394
sudo tee /etc/apt/sources.list.d/cri-o.list
393
395
394
396
sudo apt-get update
395
- sudo apt-get install -y cri-o kubelet kubeadm kubectl
397
+ # [ERROR FileExisting-conntrack]: conntrack not found in system path
398
+ sudo apt-get install -y cri-o kubelet kubeadm kubectl conntrack
396
399
397
400
# make use of /etc/cni/net.d/11-crio-ipv4-bridge.conflist so we don't
398
401
# need a pod network and just use the default bridge
@@ -406,8 +409,12 @@ jobs:
406
409
407
410
sudo systemctl start crio.service
408
411
env :
409
- CRIO_VERSION : v1.30
410
- KUBERNETES_VERSION : v1.30
412
+ CRIO_VERSION : v1.32
413
+ # This has to be kept in sync with the packages above, otherwise
414
+ # [ERROR KubeletVersion]: the kubelet version is higher than the control plane version.
415
+ # This is not a supported version skew and may lead to a malfunctional cluster.
416
+ # Kubelet version: "1.33.0" Control plane version: "1.30.12"
417
+ KUBERNETES_VERSION : v1.33
411
418
412
419
- name : Show crio debug data (on failure)
413
420
if : ${{ failure() && steps.have-tests.outputs.tests == 'true' }}
@@ -464,10 +471,6 @@ jobs:
464
471
# Once you have found the failing container, you can inspect its logs with:
465
472
# crictl --runtime-endpoint unix:///var/run/crio/crio.sock logs CONTAINERID
466
473
467
- - name : Untaint the master
468
- if : ${{ steps.have-tests.outputs.tests == 'true' }}
469
- run : kubectl taint nodes --all node-role.kubernetes.io/control-plane-
470
-
471
474
- name : Show nodes status and wait for readiness
472
475
if : ${{ steps.have-tests.outputs.tests == 'true' }}
473
476
run : |
@@ -505,7 +508,7 @@ jobs:
505
508
if : ${{ steps.have-tests.outputs.tests == 'true' }}
506
509
run : |
507
510
set -Eeuxo pipefail
508
- uv run pytest --capture=fd tests/containers -m 'openshift' --image="${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}"
511
+ uv run pytest --capture=fd tests/containers -m 'openshift and not cuda and not rocm ' --image="${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}"
509
512
env :
510
513
# TODO(jdanek): this Testcontainers stuff should not be necessary but currently it has to be there
511
514
DOCKER_HOST : " unix:///var/run/podman/podman.sock"
@@ -558,6 +561,56 @@ jobs:
558
561
559
562
# endregion
560
563
564
+ # region check-payload for FIPS compliance
565
+
566
+ - id : check-payload-vars
567
+ run : |
568
+ echo "GOPATH=${{ github.workspace }}/go-check-payload" >> "$GITHUB_OUTPUT"
569
+ working-directory : scripts/check-payload
570
+
571
+ # for https://github.com/openshift/check-payload to cache the built binary
572
+ - uses : actions/setup-go@v5
573
+ with :
574
+ cache-dependency-path : " scripts/check-payload/go.sum"
575
+ env :
576
+ GOPATH : ${{ steps.check-payload-vars.outputs.GOPATH }}
577
+
578
+ # F0512 15:43:03.219076 21568 main.go:294] Error: exec: "oc": executable file not found in $PATH
579
+ - name : Install oc client
580
+ run : |
581
+ # Install the oc client
582
+ curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/ocp/stable/openshift-client-linux.tar.gz -o /tmp/openshift-client-linux.tar.gz
583
+ tar -xzvf /tmp/openshift-client-linux.tar.gz oc
584
+ rm -f /tmp/openshift-client-linux.tar.gz
585
+ sudo mv ./oc /usr/local/bin
586
+
587
+ # perform `podman image mount` ourselves, and then follow the scenario from
588
+ # https://github.com/openshift/check-payload/pull/154, that is because
589
+ # `check-payload scan image --spec` insists on pulling the image, even if already present,
590
+ # that causes trouble when checking PRs (image not pushed) and requires `podman login` as root
591
+ # (we run podman as root in the GHA to reuse container storage in Kubernetes)
592
+ # use sudo to avoid
593
+ # podman error (args=[image mount ghcr.io/...])
594
+ # (stderr=Error: cannot use command "podman image mount" with the remote podman client
595
+ # and use --preserve-env=PATH to avoid
596
+ # F0512 16:31:58.425584 9911 main.go:294] Error: exec: "podman": executable file not found in $PATH
597
+ - name : Check image with check-payload for FIPS compliance
598
+ run : |
599
+ set -Eeuxo pipefail
600
+ # resolve podman under current user, not under sudo/root
601
+ PODMAN="$(which podman)"
602
+ # mount the image
603
+ IMAGE_MOUNT_DIR=$(sudo "${PODMAN}" image mount "${{ steps.calculated_vars.outputs.OUTPUT_IMAGE }}")
604
+ # run the check-payload scan
605
+ sudo --preserve-env=PATH go run github.com/openshift/check-payload scan local --path "${IMAGE_MOUNT_DIR}"
606
+ # unmount the image
607
+ sudo "${PODMAN}" image unmount --all
608
+ working-directory : scripts/check-payload
609
+ env :
610
+ GOPATH : ${{ steps.check-payload-vars.outputs.GOPATH }}
611
+
612
+ # endregion
613
+
561
614
# region Typescript (browser) image tests
562
615
563
616
# https://playwright.dev/docs/ci
@@ -587,7 +640,7 @@ jobs:
587
640
--volume ${PODMAN_SOCK}:/var/run/docker.sock \
588
641
--volume ${PWD}:/mnt \
589
642
--volume /mnt/node_modules \
590
- mcr.microsoft.com/playwright:v1.48.1 -noble \
643
+ mcr.microsoft.com/playwright:v1.52.0 -noble \
591
644
/bin/bash <<EOF
592
645
set -Eeuxo pipefail
593
646
cd /mnt
0 commit comments