From e2d9c92a3ce6f0c6d69ee4460f6105ca45c7c0b6 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Sat, 23 Nov 2024 11:14:50 -0800 Subject: [PATCH] Move KDE live build test to Kiwi, refactor mock bits KDE live images for Rawhide are now built with Kiwi, so let's do it that way in openQA too (including for stable releases because it's awkward to do it any other way). Kiwi build steps are almost the same whatever you're building, so convert the container build test into a generic Kiwi build test and use it for both. mock setup is shared between Kiwi and LMC, so let's factor it out. Signed-off-by: Adam Williamson --- lib/installedtest.pm | 8 +++ lib/mock.pm | 58 +++++++++++++++ templates-updates.fif.json | 40 ++++++----- tests/_container_build_kiwi.pm | 126 --------------------------------- tests/_kiwi_build.pm | 125 ++++++++++++++++++++++++++++++++ tests/_live_build.pm | 39 +--------- 6 files changed, 217 insertions(+), 179 deletions(-) create mode 100644 lib/mock.pm delete mode 100644 tests/_container_build_kiwi.pm create mode 100644 tests/_kiwi_build.pm diff --git a/lib/installedtest.pm b/lib/installedtest.pm index f4f165a3..c0dcc3d0 100644 --- a/lib/installedtest.pm +++ b/lib/installedtest.pm @@ -159,6 +159,14 @@ sub post_fail_hook { upload_logs "/var/tmp/imgbuild/program.log", failok => 1; } + if (get_var("TEST") eq "kiwi_build") { + unless (script_run "mock -r openqa --copyout /tmp/image-root.log .", 90) { + upload_logs "image-root.log"; + } + my $arch = get_var("ARCH"); + upload_logs "/var/lib/mock/fedora-openqa-${arch}/root.log"; + } + if (get_var("TEST") eq "podman") { upload_logs "/tmp/podman-bats.txt", failok => 1; } diff --git a/lib/mock.pm b/lib/mock.pm new file mode 100644 index 00000000..fc694682 --- /dev/null +++ b/lib/mock.pm @@ -0,0 +1,58 @@ +package mock; + +use strict; + +use base 'Exporter'; +use Exporter; + +use testapi; +use utils; + +our @EXPORT = qw/mock_setup/; + +sub mock_setup { + my $version = get_var("VERSION"); + my $rawrel = get_var("RAWREL"); + my $mockver = $version eq $rawrel ? "rawhide" : $version; + my $arch = get_var("ARCH"); + my $tag = get_var("TAG"); + my $copr = get_var("COPR"); + my $workarounds = get_workarounds; + + if (get_var("NUMDISKS") > 2) { + # put /var/lib/mock on the third disk, so we don't run out of + # space on the main disk. The second disk will have already + # been claimed for the update repo. + assert_script_run "echo 'type=83' | sfdisk /dev/vdc"; + assert_script_run "mkfs.ext4 /dev/vdc1"; + assert_script_run "echo '/dev/vdc1 /var/lib/mock ext4 defaults 1 2' >> /etc/fstab"; + assert_script_run "mkdir -p /var/lib/mock"; + assert_script_run "mount /var/lib/mock"; + } + + # base mock config on original + assert_script_run "echo \"include('/etc/mock/fedora-${mockver}-${arch}.cfg')\" > /etc/mock/openqa.cfg"; + # make the side and workarounds repos and the serial device available inside the mock root + assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_enable\'] = True" >> /etc/mock/openqa.cfg'; + assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/update_repo\', \'/mnt/update_repo\'))" >> /etc/mock/openqa.cfg' unless ($tag || $copr); + assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/workarounds_repo\', \'/mnt/workarounds_repo\'))" >> /etc/mock/openqa.cfg' if ($workarounds); + assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/dev/' . $serialdev . '\', \'/dev/' . $serialdev . '\'))" >> /etc/mock/openqa.cfg'; + my $repos = 'config_opts[\'dnf.conf\'] += \"\"\"\n'; + # add the update, tag or COPR repo to the config + $repos .= '[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' unless ($tag || $copr); + $repos .= '[openqa-testtag]\nname=Tag test repo\nbaseurl=' . get_var("UPDATE_OR_TAG_REPO") . '\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\npriority=1\n' if ($tag || $copr); + # and the workaround repo + $repos .= '\n[workarounds]\nname=Workarounds repo\nbaseurl=file:///mnt/workarounds_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' if ($workarounds); + # also the buildroot repo, for Rawhide + if ($version eq $rawrel) { + $repos .= '\n[koji-rawhide]\nname=Buildroot repo\nbaseurl=https://kojipkgs.fedoraproject.org/repos/f' . $version . '-build/latest/\$basearch/\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\nskip_if_unavailable=1\n'; + } + $repos .= '\"\"\"'; + assert_script_run 'printf "' . $repos . '" >> /etc/mock/openqa.cfg'; + # replace metalink with mirrorlist so we don't get slow mirrors + repos_mirrorlist "/etc/mock/templates/*.tpl"; + # upload the config so we can check it's OK + upload_logs "/etc/mock/openqa.cfg"; +} + +1; diff --git a/templates-updates.fif.json b/templates-updates.fif.json index 4f094987..143b88e5 100644 --- a/templates-updates.fif.json +++ b/templates-updates.fif.json @@ -28,6 +28,7 @@ "flavor": "updates-container", "settings": { "+HDD_1": "disk_f%VERSION%_server_5_%ARCH%.qcow2", + "KIWI_PROFILE": "Container-Base-Generic", "NUMDISKS": "2", "RETRY": "1" }, @@ -132,6 +133,7 @@ "DESKTOP": "gnome", "HDDSIZEGB": "15", "LIVE": "1", + "LIVE_BUILD_TEST": "live_build", "NUMDISKS": "2", "PACKAGE_SET": "default", "RETRY": "1", @@ -146,7 +148,9 @@ "settings": { "DESKTOP": "kde", "HDDSIZEGB": "15", + "KIWI_PROFILE": "KDE-Desktop-Live", "LIVE": "1", + "LIVE_BUILD_TEST": "kiwi_build", "NUMDISKS": "2", "PACKAGE_SET": "default", "RETRY": "1", @@ -324,21 +328,6 @@ "fedora-updates-workstation-x86_64-*-64bit": 5 } }, - "container_build_kiwi": { - "profiles": { - "fedora-updates-container-x86_64-*-64bit": 5 - }, - "settings": { - "BOOTFROM": "c", - "HDD_1": "disk_f%VERSION%_minimal_4_%ARCH%.qcow2", - "HDDSIZEGB_3": "25", - "MAX_JOB_TIME": "10800", - "+NUMDISKS": "3", - "POSTINSTALL": "_container_build_kiwi", - "ROOT_PASSWORD": "weakpassword", - "USER_LOGIN": "false" - } - }, "desktop_background": { "profiles": { "fedora-updates-kde-x86_64-*-64bit": 5, @@ -388,7 +377,7 @@ "fedora-updates-workstation-live-iso-x86_64-*-64bit": 5 }, "settings": { - "+START_AFTER_TEST": "live_build@%ARCH_BASE_MACHINE%", + "+START_AFTER_TEST": "%LIVE_BUILD_TEST%@%ARCH_BASE_MACHINE%", "INSTALL": "1", "ISO": "Fedora-%SUBVARIANT%-Live-%ARCH%-%ADVISORY_OR_TASK%.iso", "QEMURAM": "4096" @@ -448,9 +437,26 @@ "USER_LOGIN": "false" } }, + "kiwi_build": { + "profiles": { + "fedora-updates-container-x86_64-*-64bit": 5, + "fedora-updates-kde-live-iso-x86_64-*-64bit": 5 + }, + "settings": { + "+DESKTOP": "", + "+LIVE": "", + "BOOTFROM": "c", + "HDD_1": "disk_f%VERSION%_minimal_4_%ARCH%.qcow2", + "HDDSIZEGB_3": "25", + "MAX_JOB_TIME": "10800", + "+NUMDISKS": "3", + "POSTINSTALL": "_kiwi_build", + "ROOT_PASSWORD": "weakpassword", + "USER_LOGIN": "false" + } + }, "live_build": { "profiles": { - "fedora-updates-kde-live-iso-x86_64-*-64bit": 5, "fedora-updates-workstation-live-iso-x86_64-*-64bit": 5 }, "settings": { diff --git a/tests/_container_build_kiwi.pm b/tests/_container_build_kiwi.pm deleted file mode 100644 index ccf2efec..00000000 --- a/tests/_container_build_kiwi.pm +++ /dev/null @@ -1,126 +0,0 @@ -use base "installedtest"; -use strict; -use testapi; -use utils; - -sub run { - my $self = shift; - my $version = get_var("VERSION"); - my $advortask = get_var("ADVISORY_OR_TASK"); - # we didn't use kiwi before F40, and I don't really want to write - # an imgfac test for a release that will be dead in 6 months - # FIXME drop when F39 is EOL - if ($version < 40) { - record_info('notvalid', "this test cannot be run on Fedora < 40"); - return; - } - my $rawrel = get_var("RAWREL"); - my $branch; - my $repoxml; - my $releasever; - my $mockver; - if ($version eq $rawrel) { - $branch = "main"; - $repoxml = "repositories/core-rawhide.xml"; - $releasever = "Rawhide"; - $mockver = "rawhide"; - } - else { - $branch = "f${version}"; - $repoxml = "repositories/core-nonrawhide.xml"; - $releasever = $version; - $mockver = $version; - } - my $arch = get_var("ARCH"); - my $tag = get_var("TAG"); - my $copr = get_var("COPR"); - my $workarounds = get_workarounds; - if (get_var("NUMDISKS") > 2) { - # put /var/lib/mock on the third disk, so we don't run out of - # space on the main disk. The second disk will have already - # been claimed for the update repo. - assert_script_run "echo 'type=83' | sfdisk /dev/vdc"; - assert_script_run "mkfs.ext4 /dev/vdc1"; - assert_script_run "echo '/dev/vdc1 /var/lib/mock ext4 defaults 1 2' >> /etc/fstab"; - assert_script_run "mkdir -p /var/lib/mock"; - assert_script_run "mount /var/lib/mock"; - } - # install the tools we need - assert_script_run "dnf -y install mock git", 300; - # base mock config on original - assert_script_run "echo \"include('/etc/mock/fedora-${mockver}-${arch}.cfg')\" > /etc/mock/openqa.cfg"; - # make the side and workarounds repos and the serial device available inside the mock root - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_enable\'] = True" >> /etc/mock/openqa.cfg'; - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/update_repo\', \'/mnt/update_repo\'))" >> /etc/mock/openqa.cfg' unless ($tag || $copr); - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/workarounds_repo\', \'/mnt/workarounds_repo\'))" >> /etc/mock/openqa.cfg' if ($workarounds); - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/dev/' . $serialdev . '\', \'/dev/' . $serialdev . '\'))" >> /etc/mock/openqa.cfg'; - my $repos = 'config_opts[\'dnf.conf\'] += \"\"\"\n'; - # add the update, tag or COPR repo to the config - $repos .= '[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' unless ($tag || $copr); - $repos .= '[openqa-testtag]\nname=Tag test repo\nbaseurl=' . get_var("UPDATE_OR_TAG_REPO") . '\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\npriority=1\n' if ($tag || $copr); - # and the workaround repo - $repos .= '\n[workarounds]\nname=Workarounds repo\nbaseurl=file:///mnt/workarounds_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' if ($workarounds); - # also the buildroot repo, for Rawhide - if ($version eq $rawrel) { - $repos .= '\n[koji-rawhide]\nname=Buildroot repo\nbaseurl=https://kojipkgs.fedoraproject.org/repos/f' . $version . '-build/latest/\$basearch/\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\nskip_if_unavailable=1\n'; - } - $repos .= '\"\"\"'; - assert_script_run 'printf "' . $repos . '" >> /etc/mock/openqa.cfg'; - # replace metalink with mirrorlist so we don't get slow mirrors - repos_mirrorlist "/etc/mock/templates/*.tpl"; - # upload the config so we can check it's OK - upload_logs "/etc/mock/openqa.cfg"; - # now check out the fedora kiwi descriptions - assert_script_run 'git clone https://pagure.io/fedora-kiwi-descriptions.git'; - assert_script_run 'cd fedora-kiwi-descriptions'; - assert_script_run "git checkout ${branch}"; - # correct the GPG key paths in the repositories and swap metalink - # to mirrorlist - assert_script_run 'sed -i -e "s,/usr/share/distribution-gpg-keys/fedora,/etc/pki/rpm-gpg,g" ' . $repoxml; - repos_mirrorlist $repoxml; - # now add the side repo or tag repo to the appropriate repo XML - assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml unless ($tag || $copr); - assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml if ($tag || $copr); - # and the workarounds repo - assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml if ($workarounds); - # and the buildroot repo, for Rawhide - assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml if ($version eq $rawrel); - # upload the repositories XML so we can check it - # NOTE: koji kiwi plugin does much more futzing around with the XML - # it flattens includes, fiddles with the repos, and and messes with - # preferences a bit. see - # KiwiCreateImageTask.prepareDescription. but we do our own repo - # stuff above, the preference stuff is unnecessary on Fedora, and - # the flattening is unnecessary outside Koji - upload_logs "$repoxml"; - assert_script_run "cd .."; - # now install the tools into the mock - assert_script_run "mock -r openqa --install kiwi-cli kiwi-systemdeps", 900; - # now copy the descriptions in - assert_script_run "mock -r openqa --isolation=simple --copyin fedora-kiwi-descriptions /fedora-kiwi-descriptions"; - # PULL SOME LEVERS! PULL SOME LEVERS! - assert_script_run "mock -r openqa --enable-network --chroot \"kiwi-ng --profile Container-Base-Generic --kiwi-file Fedora.kiwi --debug --logfile /tmp/image-root.log system build --description /fedora-kiwi-descriptions/ --target-dir /builddir/result/image\"", 7200; - unless (script_run "mock -r openqa --isolation=simple --copyout /tmp/image-root.log .", 90) { - upload_logs "image-root.log"; - } - assert_script_run "mock -r openqa --isolation=simple --copyout /builddir/result/image/Fedora.${arch}-${releasever}.oci.tar.xz .", 180; - upload_asset "./Fedora.${arch}-${releasever}.oci.tar.xz"; - - # load and test that we can use the built container - assert_script_run "podman load -i ./Fedora.${arch}-${releasever}.oci.tar.xz"; - my $imgspec = "localhost/fedora:${mockver}"; - validate_script_output "podman run ${imgspec} echo Hello-World", sub { m/Hello-World/ }; - # do advisory_check_nonmatching_packages inside the container - advisory_check_nonmatching_packages(wrapper => "podman run --rm ${imgspec}"); - # wipe the temp file so it doesn't interfere with the same check - # on the host - assert_script_run "rm -f /tmp/installedupdatepkgs.txt"; -} - -sub test_flags { - return {fatal => 1}; -} - -1; - -# vim: set sw=4 et: diff --git a/tests/_kiwi_build.pm b/tests/_kiwi_build.pm new file mode 100644 index 00000000..f4e88faf --- /dev/null +++ b/tests/_kiwi_build.pm @@ -0,0 +1,125 @@ +use base "installedtest"; +use strict; +use mock; +use testapi; +use utils; + +sub run { + my $self = shift; + my $version = get_var("VERSION"); + my $advortask = get_var("ADVISORY_OR_TASK"); + # we didn't use kiwi before F40, and I don't really want to write + # an imgfac test for a release that will be dead in a week + # FIXME drop when F39 is EOL + if ($version < 40) { + record_info('notvalid', "this test cannot be run on Fedora < 40"); + return; + } + my $rawrel = get_var("RAWREL"); + my $branch; + my $repoxml; + my $releasever; + my $mockver; + if ($version eq $rawrel) { + $branch = "main"; + $repoxml = "repositories/core-rawhide.xml"; + $releasever = "Rawhide"; + $mockver = "rawhide"; + } + else { + $branch = "f${version}"; + $repoxml = "repositories/core-nonrawhide.xml"; + $releasever = $version; + $mockver = $version; + } + my $arch = get_var("ARCH"); + my $tag = get_var("TAG"); + my $copr = get_var("COPR"); + my $kiwiprofile = get_var("KIWI_PROFILE"); + my $workarounds = get_workarounds; + my $isolation = 'nspawn'; + # lives need simple isolation and permissive selinux, sadly + if (index($kiwiprofile, 'Live') != -1) { + assert_script_run "setenforce Permissive"; + $isolation = 'simple'; + } + # install the tools we need + assert_script_run "dnf -y install mock git", 300; + # set up the mock config + mock_setup; + # now check out the fedora kiwi descriptions + assert_script_run 'git clone https://pagure.io/fedora-kiwi-descriptions.git'; + assert_script_run 'cd fedora-kiwi-descriptions'; + assert_script_run "git checkout ${branch}"; + # correct the GPG key paths in the repositories and swap metalink + # to mirrorlist + assert_script_run 'sed -i -e "s,/usr/share/distribution-gpg-keys/fedora,/etc/pki/rpm-gpg,g" ' . $repoxml; + repos_mirrorlist $repoxml; + # now add the side repo or tag repo to the appropriate repo XML + assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml unless ($tag || $copr); + assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml if ($tag || $copr); + # and the workarounds repo + assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml if ($workarounds); + # and the buildroot repo, for Rawhide + assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n \n \n \n\n" > ' . $repoxml if ($version eq $rawrel); + # upload the repositories XML so we can check it + # NOTE: koji kiwi plugin does much more futzing around with the XML + # it flattens includes, fiddles with the repos, and and messes with + # preferences a bit. see + # KiwiCreateImageTask.prepareDescription. but we do our own repo + # stuff above, the preference stuff is unnecessary on Fedora, and + # the flattening is unnecessary outside Koji + upload_logs "$repoxml"; + assert_script_run "cd .."; + # now install the tools into the mock + assert_script_run "mock -r openqa --isolation=${isolation} --install kiwi-cli kiwi-systemdeps", 900; + # now copy the descriptions in + assert_script_run "mock -r openqa --isolation=${isolation} --copyin fedora-kiwi-descriptions /fedora-kiwi-descriptions"; + # construct a volume ID of appropriate length and application ID, + # note these don't match the official ones + my $aot27 = substr($advortask, 0, 27); + my $volid = "KIWI-${aot27}"; + my $appid = "${kiwiprofile}-${aot27}"; + # PULL SOME LEVERS! PULL SOME LEVERS! + assert_script_run "mock -r openqa --isolation=${isolation} --enable-network --chroot \"kiwi-ng --profile ${kiwiprofile} --kiwi-file Fedora.kiwi --debug --logfile /tmp/image-root.log system build --description /fedora-kiwi-descriptions/ --target-dir /builddir/result/image --set-type-attr 'volid=${volid}' --set-type-attr 'application_id=${appid}'\"", 7200; + unless (script_run "mock -r openqa --isolation=${isolation} --copyout /tmp/image-root.log .", 90) { + upload_logs "image-root.log"; + } + my %expected_formats = ( + 'KDE-Desktop-Live' => 'iso', + 'Container-Base-Generic' => 'oci.tar.xz' + ); + my $format = $expected_formats{$kiwiprofile}; + my $fname = "Fedora.${arch}-${releasever}.${format}"; + assert_script_run "mock -r openqa --isolation=${isolation} --copyout /builddir/result/image/${fname} .", 180; + if (index($kiwiprofile, 'Live') != -1) { + # rename to the format we expect from LMC, to match that test + # can drop this and change templates when all lives are on + # Kiwi + my $subv = get_var("SUBVARIANT"); + my $newfname = "Fedora-${subv}-Live-${arch}-${advortask}.iso"; + assert_script_run "mv ${fname} ${newfname}"; + $fname = $newfname; + } + upload_asset $fname; + + if (index($kiwiprofile, 'Container') != -1) { + # load and test that we can use the built container + assert_script_run "podman load -i ./${fname}"; + my $imgspec = "localhost/fedora:${mockver}"; + validate_script_output "podman run ${imgspec} echo Hello-World", sub { m/Hello-World/ }; + # do advisory_check_nonmatching_packages inside the container + advisory_check_nonmatching_packages(wrapper => "podman run --rm ${imgspec}"); + # wipe the temp file so it doesn't interfere with the same check + # on the host + assert_script_run "rm -f /tmp/installedupdatepkgs.txt"; + } +} + +sub test_flags { + return {fatal => 1}; +} + +1; + +# vim: set sw=4 et: diff --git a/tests/_live_build.pm b/tests/_live_build.pm index f94a3e92..6d0ad907 100644 --- a/tests/_live_build.pm +++ b/tests/_live_build.pm @@ -1,5 +1,6 @@ use base "installedtest"; use strict; +use mock; use testapi; use utils; @@ -10,18 +11,15 @@ sub run { my $branch; my $repoks; my $releasever; - my $mockver; if ($version eq $rawrel) { $branch = "main"; $repoks = "fedora-repo-rawhide.ks"; $releasever = "Rawhide"; - $mockver = "rawhide"; } else { $branch = "f${version}"; $repoks = "fedora-repo-not-rawhide.ks"; $releasever = $version; - $mockver = $version; } my $advortask = get_var("ADVISORY_OR_TASK"); my $arch = get_var("ARCH"); @@ -30,41 +28,10 @@ sub run { my $tag = get_var("TAG"); my $copr = get_var("COPR"); my $workarounds = get_workarounds; - if (get_var("NUMDISKS") > 2) { - # put /var/lib/mock on the third disk, so we don't run out of - # space on the main disk. The second disk will have already - # been claimed for the update repo. - assert_script_run "echo 'type=83' | sfdisk /dev/vdc"; - assert_script_run "mkfs.ext4 /dev/vdc1"; - assert_script_run "echo '/dev/vdc1 /var/lib/mock ext4 defaults 1 2' >> /etc/fstab"; - assert_script_run "mkdir -p /var/lib/mock"; - assert_script_run "mount /var/lib/mock"; - } # install the tools we need assert_script_run "dnf -y install mock git pykickstart tar", 300; - # base mock config on original - assert_script_run "echo \"include('/etc/mock/fedora-${mockver}-${arch}.cfg')\" > /etc/mock/openqa.cfg"; - # make the side and workarounds repos and the serial device available inside the mock root - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_enable\'] = True" >> /etc/mock/openqa.cfg'; - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/update_repo\', \'/mnt/update_repo\'))" >> /etc/mock/openqa.cfg' unless ($tag || $copr); - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/workarounds_repo\', \'/mnt/workarounds_repo\'))" >> /etc/mock/openqa.cfg' if ($workarounds); - assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/dev/' . $serialdev . '\', \'/dev/' . $serialdev . '\'))" >> /etc/mock/openqa.cfg'; - my $repos = 'config_opts[\'dnf.conf\'] += \"\"\"\n'; - # add the update, tag or COPR repo to the config - $repos .= '[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' unless ($tag || $copr); - $repos .= '[openqa-testtag]\nname=Tag test repo\nbaseurl=' . get_var("UPDATE_OR_TAG_REPO") . '/\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\npriority=1\n' if ($tag || $copr); - # and the workaround repo - $repos .= '\n[workarounds]\nname=Workarounds repo\nbaseurl=file:///mnt/workarounds_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' if ($workarounds); - # also the buildroot repo, for Rawhide - if ($version eq $rawrel) { - $repos .= '\n[koji-rawhide]\nname=Buildroot repo\nbaseurl=https://kojipkgs.fedoraproject.org/repos/f' . $version . '-build/latest/\$basearch/\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\nskip_if_unavailable=1\n'; - } - $repos .= '\"\"\"'; - assert_script_run 'printf "' . $repos . '" >> /etc/mock/openqa.cfg'; - # replace metalink with mirrorlist so we don't get slow mirrors - repos_mirrorlist("/etc/mock/templates/*.tpl"); - # upload the config so we can check it's OK - upload_logs "/etc/mock/openqa.cfg"; + # set up the mock config + mock_setup; # now check out the kickstarts assert_script_run 'git clone https://pagure.io/fedora-kickstarts.git'; assert_script_run 'cd fedora-kickstarts';