diff --git a/.gitignore b/.gitignore index 804b56b..9b85b8d 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ /cockpit-composer-27.tar.gz /cockpit-composer-28.tar.gz /cockpit-composer-30.tar.gz +/cockpit-composer-31.tar.gz diff --git a/cockpit-composer.spec b/cockpit-composer.spec index e634d75..b79e470 100644 --- a/cockpit-composer.spec +++ b/cockpit-composer.spec @@ -1,6 +1,6 @@ # This spec file has been automatically updated -Version: 30 -Release: 3%{?dist} +Version: 31 +Release: 1%{?dist} Name: cockpit-composer Summary: Composer GUI for use with Cockpit @@ -43,6 +43,14 @@ cp -a io.weldr.cockpit-composer.metainfo.xml %{buildroot}/%{_datadir}/metainfo/ %{_datadir}/metainfo/* %changelog +* Thu Aug 26 2021 Jacob Kozol - 31-1 +- Add new ostree image types +- Improve loading state when waiting for api responses +- Improve notification system +- Improve test stability +- Update NPM dependencies +- Update translations + * Mon Aug 09 2021 Mohan Boddu - 30-3 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688 diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..648918d --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} diff --git a/sources b/sources index 29bfcce..025ef92 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cockpit-composer-30.tar.gz) = 85396fbec4e8666ae2677b4d461e63973b1297b691dc3646168ef991792fa773ea42f2df3427285070c21eebdb9faea3fe05c44e39649f0f3bcb926f0ec57934 +SHA512 (cockpit-composer-31.tar.gz) = 990cbf12a3f95ad3e9858eba69f000ade510ad9d08cfcf808f1d77b3c68c5a9ae22ad80ba2787f94d4834b03bef65e68b86e458d584263e4853ddfb5d06e89f9 diff --git a/tests/.fmf/version b/tests/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/tests/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/tests/provision.fmf b/tests/provision.fmf new file mode 100644 index 0000000..266a8f1 --- /dev/null +++ b/tests/provision.fmf @@ -0,0 +1,4 @@ +--- +standard-inventory-qcow2: + qemu: + m: 4G diff --git a/tests/run-test.sh b/tests/run-test.sh new file mode 100755 index 0000000..8513116 --- /dev/null +++ b/tests/run-test.sh @@ -0,0 +1,31 @@ +#!/bin/sh +set -eux + +cd $SOURCE +git init +make bots test/common machine + +# only install a subset to save time/space +mv package.json .package.json +npm install chrome-remote-interface sizzle +mv .package.json package.json + +. /etc/os-release +export TEST_OS="${ID}-${VERSION_ID/./-}" + +RC=0 + +for t in test/verify/check-{blueprint,custom,dependence,package,service,source} +do + $t \ + --enable-network \ + --machine 127.0.0.1:22 \ + --browser 127.0.0.1:9090 \ + --verbose --trace \ + || RC=$? +done + +echo $RC > "$LOGS/exitcode" +cp --verbose Test* "$LOGS" || true +# deliver test result via exitcode file +exit 0 diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..b3a2814 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,33 @@ +--- +- hosts: localhost + roles: + - role: standard-test-source + tags: + - always + + - role: standard-test-basic + tags: + - atomic + - classic + required_packages: + - cockpit-composer + - composer-cli + - nodejs + - git + - curl + - createrepo_c + - dnf-automatic + - firewalld + - git + - libvirt-daemon-config-network + - libvirt-python3 + - make + - npm + - python3 + - targetcli + - tlog + tests: + - verify: + dir: . + run: ./verify.sh + save-files: ["logs/*"] diff --git a/tests/verify.sh b/tests/verify.sh new file mode 100755 index 0000000..3510117 --- /dev/null +++ b/tests/verify.sh @@ -0,0 +1,65 @@ +#!/bin/sh +set -eux + +source /etc/os-release +ARCH=$(uname -m) +# from standard-test-source +SOURCE="$(pwd)/source" +LOGS="$(pwd)/logs" +TESTS="$(pwd)/tests" +mkdir -p "$LOGS" +chmod a+w "$LOGS" + +# This section is taken from https://github.com/osbuild/osbuild-composer/blob/main/schutzbot/mockbuild.sh +# chromium-headless is only available in EPEL for RHEL. +if [[ $ID == rhel || $ID == centos ]] && [[ ${VERSION_ID%.*} == 8 ]] && ! rpm -q epel-release; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + dnf config-manager --enable epel +elif [[ $ID == rhel || $ID == centos ]] && [[ ${VERSION_ID%.*} == 9 ]]; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + # replace the releasever 9 with 8 so that the epel repos can be found. + # taken from https://github.com/cockpit-project/cockpit + sed -i 's/$releasever/8/' /etc/yum.repos.d/epel*.repo + dnf config-manager --enable epel +fi +# HACK: chromium-headless ought to be enough, but greater than version 88 has a crash: https://bugs.chromium.org/p/chromium/issues/detail?id=1170634 +dnf install -y chromium + +# Taken from https://github.com/cockpit-project/cockpit-machines/commit/6206acd32cb125d54cb17be74afb60d45504e99f#diff-8bc7fea4b1a7acd44c6a752365847e961fa72cbb68efa39ed77ca406e9a5cac4 +#HACK: unbreak rhel-9-0's default choice of 999999999 rounds, see https://bugzilla.redhat.com/show_bug.cgi?id=1993919 +sed -ie 's/#SHA_CRYPT_MAX_ROUNDS 5000/SHA_CRYPT_MAX_ROUNDS 5000/' /etc/login.defs + +# overriding osbuild-composer repo with nightly +mkdir -p /etc/osbuild-composer/repositories +cp $SOURCE/test/files/rhel-90.json /etc/osbuild-composer/repositories/rhel-90.json + +# Make cockpit.socket and lorax-composer start +systemctl start cockpit.socket +systemctl start osbuild-composer.socket + +# create user account for logging in +if ! id admin 2>/dev/null; then + useradd -c Administrator -G wheel admin + echo admin:foobar | chpasswd +fi + +# create user account for running the test +if ! id runtest 2>/dev/null; then + useradd -c 'Test runner' runtest + # allow test to set up things on the machine + mkdir -p /root/.ssh + curl https://raw.githubusercontent.com/cockpit-project/bots/master/machine/identity.pub >> /root/.ssh/authorized_keys + chmod 600 /root/.ssh/authorized_keys +fi +chown -R runtest "$SOURCE" + +# disable core dumps, we rather investigate them upstream where test VMs are accessible +echo core > /proc/sys/kernel/core_pattern + +cp -r $SOURCE/test/files /home/admin + +# Run tests as unprivileged user +su - -c "env SOURCE=$SOURCE LOGS=$LOGS $TESTS/run-test.sh" runtest + +RC=$(cat $LOGS/exitcode) +exit ${RC:-1}