Skip to content

[v5.5] TMT backports #26179

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: v5.5
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .packit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,27 @@
downstream_package_name: podman
upstream_tag_template: v{version}

# These files get synced from upstream to downstream (Fedora / CentOS Stream) on every
# propose-downstream job. This is done so tests maintained upstream can be run
# downstream in Zuul CI and Bodhi.
# Ref: https://packit.dev/docs/configuration#files_to_sync
files_to_sync:
- src: rpm/gating.yaml
dest: gating.yaml
delete: true
- src: plans/
dest: plans/
delete: true
mkpath: true
- src: test/tmt/
dest: test/tmt/
delete: true
mkpath: true
- src: .fmf/
dest: .fmf/
delete: true
- .packit.yaml

packages:
podman-fedora:
pkg_tool: fedpkg
Expand Down Expand Up @@ -80,6 +101,17 @@ jobs:
project: podman-next
enable_net: true

# Tests on Fedora
- job: tests
trigger: pull_request
packages: [podman-fedora]
notifications: *packit_generic_failure_notification
targets:
- fedora-rawhide
- fedora-42
- fedora-41
tmt_plan: "/plans/system/*"

- job: tests
identifier: cockpit-revdeps
trigger: pull_request
Expand Down
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ repos:
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-yaml
exclude: rpm/gating.yaml
- repo: https://github.com/codespell-project/codespell
# Configuration for codespell is in .codespellrc
rev: v2.4.1
Expand Down
59 changes: 59 additions & 0 deletions plans/system.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
discover:
how: fmf

execute:
how: tmt

prepare:
- how: shell
script: modprobe null_blk nr_devices=1
order: 5
- when: distro == centos-stream or distro == rhel
how: shell
script: |
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm --eval '%{?rhel}').noarch.rpm
dnf -y config-manager --set-enabled epel
order: 10
- when: initiator == packit
how: shell
script: |
COPR_REPO_FILE="/etc/yum.repos.d/*podman-next*.repo"
if compgen -G $COPR_REPO_FILE > /dev/null; then
sed -i -n '/^priority=/!p;$apriority=1' $COPR_REPO_FILE
fi
dnf -y upgrade --allowerasing
order: 20

adjust+:
- enabled: false
when: revdeps == yes

provision:
how: artemis
hardware:
memory: ">= 16 GB"
cpu:
cores: ">= 4"
threads: ">=8"
disk:
- size: ">= 512 GB"

/local-root:
summary: Local rootful tests
discover+:
filter: 'tag:local & tag:root'

/local-rootless:
summary: Local rootless tests
discover+:
filter: 'tag:local & tag:rootless'

/remote-root:
summary: Remote rootful tests
discover+:
filter: 'tag:remote & tag:root'

/remote-rootless:
summary: Remote rootless tests
discover+:
filter: 'tag:remote & tag:rootless'
21 changes: 21 additions & 0 deletions plans/tmt.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
summary: Run tmt container provision test (downstream only)

enabled: false
adjust+:
- enabled: true
when: initiator != packit and distro != rhel

discover:
how: fmf
filter: 'tag:tmt & tag:downstream'

execute:
how: tmt

prepare:
- when: distro == centos-stream or distro == rhel
how: shell
script: |
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm --eval '%{?rhel}').noarch.rpm
dnf -y config-manager --set-enabled epel
order: 10
29 changes: 29 additions & 0 deletions plans/toolbox.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
summary: Run toolbox tests (downstream only)

enabled: false
adjust+:
- enabled: true
when: initiator != packit and distro == fedora

provision:
how: artemis
hardware:
memory: ">= 16 GB"
cpu:
cores: ">= 4"
threads: ">=8"
disk:
- size: ">= 512 GB"

prepare:
- name: packages
how: install
package: [toolbox-tests]

discover:
how: fmf
url: https://src.fedoraproject.org/rpms/toolbox
ref: "rawhide"

execute:
how: tmt
17 changes: 17 additions & 0 deletions rpm/gating.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--- !Policy
product_versions:
- fedora-*
decision_contexts:
- bodhi_update_push_stable
- bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}

# recipients: jnovy, lsm5, santiago
--- !Policy
product_versions:
- rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
7 changes: 5 additions & 2 deletions rpm/podman.spec
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
%define build_with_btrfs 1
# qemu-system* isn't packageed for CentOS Stream / RHEL
%define qemu 1
# bats is included in the default repos (No epel/copr etc.)
%define distro_bats 1
%endif

%if %{defined copr_username}
Expand Down Expand Up @@ -139,7 +141,7 @@ pages and %{name}.
Summary: Tests for %{name}

Requires: %{name} = %{epoch}:%{version}-%{release}
%if %{defined fedora}
%if %{defined distro_bats}
Requires: bats
%endif
Requires: attr
Expand All @@ -157,7 +159,8 @@ Requires: xfsprogs
%description tests
%{summary}

This package contains system tests for %{name}
This package contains system tests for %{name}. Only intended to be used for
gating tests. Not supported for end users / customers.

%package remote
Summary: (Experimental) Remote client for managing %{name} containers
Expand Down
48 changes: 48 additions & 0 deletions test/tmt/system.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
require:
- podman-tests
- psmisc

environment:
# PODMAN_TESTING envvar is set in system.sh
PODMAN: /usr/bin/podman
QUADLET: /usr/libexec/podman/quadlet
ROOTLESS_USER: "fedora"
adjust+:
- when: distro == centos-stream
environment+:
ROOTLESS_USER: "ec2-user"
- when: distro == rhel
environment+:
ROOTLESS_USER: "cloud-user"

/local-root:
tag: [ local, root ]
summary: local rootful test
test: bash ./system.sh
duration: 30m

/local-rootless:
tag: [ local, rootless ]
summary: rootless test
test: bash ./system.sh rootless
duration: 30m

/remote-root:
tag: [ remote, root ]
summary: remote rootful test
test: bash ./system.sh
duration: 30m
environment+:
PODMAN: /usr/bin/podman-remote
require+:
- podman-remote

/remote-rootless:
tag: [ remote, rootless ]
summary: remote rootless test
test: bash ./system.sh rootless
duration: 30m
environment+:
PODMAN: /usr/bin/podman-remote
require+:
- podman-remote
44 changes: 44 additions & 0 deletions test/tmt/system.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env bash

set -exo pipefail

uname -r

loginctl enable-linger "$ROOTLESS_USER"

rpm -q \
aardvark-dns \
buildah \
conmon \
container-selinux \
containers-common \
criu \
crun \
netavark \
passt \
podman \
podman-tests \
skopeo \
slirp4netns \
systemd

export system_service_cmd="/usr/bin/podman system service --timeout=0 &"
export test_cmd="whoami && cd /usr/share/podman/test/system && PODMAN_TESTING=/usr/bin/podman-testing bats ."

if [[ -z $1 ]]; then
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
eval "$system_service_cmd"
fi
eval "$test_cmd"
elif [[ $1 == "rootless" ]]; then
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
su - "$ROOTLESS_USER" -c "eval $system_service_cmd"
fi
su - "$ROOTLESS_USER" -c "eval $test_cmd"
fi

# Kill all podman processes for remote tests
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
killall -q podman
fi
exit 0
13 changes: 13 additions & 0 deletions test/tmt/tmt.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
enabled: false
adjust:
enabled: true
when: initiator != packit && distro != rhel
summary: Make sure that TMT container provision works
tag: [downstream]
require:
- tmt+provision-container
test:
tmt run --verbose --remove
provision --how container --image fedora
login --command 'cat /etc/os-release'
finish