[skip-ci] Packit/TMT: Run system tests

This commit enables TMT jobs triggered by Packit to run system tests.

2 set of jobs `dev` and `release` have been added. `dev` jobs are meant
to run on main PRs with additional package updates fetched from
podman-next copr while `release` jobs are meant to run on release-
branch PRs using only the dependencies present in the official distro.

Packit checks PR labels (see previous commit) to filter out
the jobs that get run.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
This commit is contained in:
Lokesh Mandvekar 2025-02-11 12:54:03 +05:30 committed by Miloslav Trmač
parent ff462b3dad
commit f88186e688
7 changed files with 140 additions and 3 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

View File

@ -9,6 +9,27 @@
downstream_package_name: skopeo downstream_package_name: skopeo
upstream_tag_template: v{version} 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: systemtest/tmt/
dest: test/tmt/
delete: true
mkpath: true
- src: .fmf/
dest: .fmf/
delete: true
- .packit.yaml
packages: packages:
skopeo-fedora: skopeo-fedora:
pkg_tool: fedpkg pkg_tool: fedpkg
@ -29,7 +50,7 @@ jobs:
notifications: &copr_build_failure_notification notifications: &copr_build_failure_notification
failure_comment: failure_comment:
message: "Ephemeral COPR build failed. @containers/packit-build please check." message: "Ephemeral COPR build failed. @containers/packit-build please check."
targets: targets: &fedora_copr_targets
- fedora-all-x86_64 - fedora-all-x86_64
- fedora-all-aarch64 - fedora-all-aarch64
enable_net: true enable_net: true
@ -51,7 +72,7 @@ jobs:
trigger: pull_request trigger: pull_request
packages: [skopeo-centos] packages: [skopeo-centos]
notifications: *copr_build_failure_notification notifications: *copr_build_failure_notification
targets: targets: &centos_copr_targets
- centos-stream-9-x86_64 - centos-stream-9-x86_64
- centos-stream-9-aarch64 - centos-stream-9-aarch64
- centos-stream-10-x86_64 - centos-stream-10-x86_64
@ -70,6 +91,59 @@ jobs:
project: podman-next project: podman-next
enable_net: true enable_net: true
# Tests on Fedora for main branch
- job: tests
trigger: pull_request
packages: [skopeo-fedora]
notifications: &test_failure_notification
failure_comment:
message: "Tests failed. @containers/packit-build please check."
targets: *fedora_copr_targets
require: &dev_branch
label:
absent:
- release
tf_extra_params:
environments:
- artifacts:
- type: repository-file
id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/fedora-$releasever/rhcontainerbot-podman-next-fedora-$releasever.repo
identifier: "dev-fedora"
# Tests on Fedora for release branches
- job: tests
trigger: pull_request
packages: [skopeo-fedora]
targets: *fedora_copr_targets
require: &release_branch
label:
present:
- release
identifier: "release-fedora"
# Tests on CentOS Stream for main branch
- job: tests
trigger: pull_request
packages: [skopeo-centos]
notifications: *test_failure_notification
targets: *centos_copr_targets
require: *dev_branch
tf_extra_params:
environments:
- artifacts:
- type: repository-file
id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/centos-stream-$releasever/rhcontainerbot-podman-next-centos-stream-$releasever.repo
identifier: "dev-centos"
# Tests on CentOS Stream for release branches
- job: tests
trigger: pull_request
packages: [skopeo-centos]
notifications: *test_failure_notification
targets: *centos_copr_targets
require: *release_branch
identifier: "release-centos"
# Sync to Fedora # Sync to Fedora
- job: propose_downstream - job: propose_downstream
trigger: release trigger: release

20
plans/main.fmf Normal file
View File

@ -0,0 +1,20 @@
discover:
how: fmf
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
- 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

16
rpm/gating.yaml Normal file
View File

@ -0,0 +1,16 @@
--- !Policy
product_versions:
- fedora-*
decision_context:
- bodhi_update_push_stable
- bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

View File

@ -22,6 +22,7 @@
# Copr builds set a separate epoch for all environments # Copr builds set a separate epoch for all environments
%if %{defined fedora} %if %{defined fedora}
%define conditional_epoch 1 %define conditional_epoch 1
%define fakeroot 1
%else %else
%define conditional_epoch 2 %define conditional_epoch 2
%endif %endif
@ -72,12 +73,14 @@ Requires: containers-common >= 4:1-21
Command line utility to inspect images and repositories directly on Docker Command line utility to inspect images and repositories directly on Docker
registries without the need to pull them registries without the need to pull them
# NOTE: The tests subpackage is only intended for testing and will not be supported
# for end-users and/or customers.
%package tests %package tests
Summary: Tests for %{name} Summary: Tests for %{name}
Requires: %{name} = %{epoch}:%{version}-%{release} Requires: %{name} = %{epoch}:%{version}-%{release}
%if %{defined fedora}
Requires: bats Requires: bats
%if %{defined fakeroot}
Requires: fakeroot Requires: fakeroot
%endif %endif
Requires: gnupg Requires: gnupg

10
systemtest/tmt/main.fmf Normal file
View File

@ -0,0 +1,10 @@
require:
- bats
- skopeo-tests
environment:
SKOPEO_BINARY: /usr/bin/skopeo
summary: System test
test: bash ./test.sh
duration: 60m

13
systemtest/tmt/test.sh Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -exo pipefail
uname -r
rpm -q \
bats \
containers-common \
skopeo \
skopeo-tests \
bats /usr/share/skopeo/test/system