From 6d104f6257a52c0ecbadd285187c920f86f2387c Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 3 Feb 2020 20:45:07 +0000 Subject: [PATCH] ci: Replace PAPR with CoreOS CI Move the alternative builds into the Jenkinsfile. Update it to do a FCOS build + kola run. We drop the flatpak/rpm-ostree runs for now; the former will needs some work to do the automatic virt bits. The latter I think we can circle back to when we e.g. figure out how to include rpm-ostree's tests in kola runs. --- .cci.jenkinsfile | 86 ++++++++++++++++++- .papr-ex.yaml | 120 --------------------------- .papr.yml | 145 --------------------------------- tests/test-libarchive-import.c | 6 ++ 4 files changed, 90 insertions(+), 267 deletions(-) delete mode 100644 .papr-ex.yaml delete mode 100644 .papr.yml diff --git a/.cci.jenkinsfile b/.cci.jenkinsfile index 9acb34c5..96e52441 100644 --- a/.cci.jenkinsfile +++ b/.cci.jenkinsfile @@ -6,17 +6,49 @@ COSA_IMAGE = 'quay.io/coreos-assembler/coreos-assembler:latest' COSA_BUILDROOT_IMAGE = 'registry.svc.ci.openshift.org/coreos/cosa-buildroot:latest' stage("Build") { -parallel rpms: { +parallel normal: { coreos.pod(image: COSA_BUILDROOT_IMAGE, runAsUser: 0) { checkout scm + stage("Core build") { sh """ set -xeuo pipefail # fetch tags so `git describe` gives a nice NEVRA when building the RPM git fetch origin --tags git submodule update --init + env SKIP_INSTALLDEPS=1 ./ci/build.sh + """ + } + stage("Unit tests") { + try { + sh """ + make check + make syntax-check + """ + } finally { + archiveArtifacts allowEmptyArchive: true, artifacts: 'test-suite.log' + } + } + sh """ + make install DESTDIR=\$(pwd)/insttree/ + tar -c -C insttree/ -zvf insttree.tar.gz . + """ + stash includes: 'insttree.tar.gz', name: 'build' + } +}, +// A minimal build, helps test our build options +minimal: { + coreos.pod(image: COSA_BUILDROOT_IMAGE, runAsUser: 0) { + checkout scm + sh """ + set -xeuo pipefail + git submodule update --init + env NOCONFIGURE=1 ./autogen.sh - ./configure --with-openssl --with-curl --with-selinux + ./configure --without-curl --without-soup --disable-gtk-doc --disable-man \ + --disable-rust --without-libarchive --without-selinux --without-smack \ + --without-openssl --without-avahi --without-libmount --disable-rofiles-fuse \ + --disable-experimental-api make """ } @@ -34,3 +66,53 @@ codestyle: { } } } + +// Build FCOS and do a kola basic run +stage("More builds and test") { +parallel fcos: { + coreos.pod(image: COSA_IMAGE, runAsUser: 0, kvm: true, memory: "2048Mi", cpu: "2") { + stage("Build FCOS") { + checkout scm + unstash 'build' + sh """ + set -xeuo pipefail + mkdir insttree + tar -C insttree -xzvf insttree.tar.gz + rsync -rlv insttree/ / + coreos-assembler init --force https://github.com/coreos/fedora-coreos-config + mkdir -p overrides/rootfs + mv insttree/* overrides/rootfs/ + rmdir insttree + coreos-assembler build + """ + } + stage("FCOS basic") { + timeout(time: 30, unit: 'MINUTES') { + sh """ + set -xeuo pipefail + cosa kola run --basic-qemu-scenarios + """ + } + } + } +}, +buildopts: { + coreos.pod(image: COSA_BUILDROOT_IMAGE, runAsUser: 0) { + checkout scm + sh """ + set -xeuo pipefail + git submodule update --init + + git worktree add build-rust && cd build-rust + env CONFIGOPTS="--enable-rust" SKIP_INSTALLDEPS=1 ./ci/build.sh + make check TESTS=tests/test-rollsum + cd .. && rm -rf build-rust + + git worktree add build-libsoup && cd build-libsoup + env CONFIGOPTS="--without-curl --without-openssl --with-soup" SKIP_INSTALLDEPS=1 ./ci/build.sh + make check + cd .. && rm -rf build-libsoup + """ + } +} +} diff --git a/.papr-ex.yaml b/.papr-ex.yaml deleted file mode 100644 index fbbd19dd..00000000 --- a/.papr-ex.yaml +++ /dev/null @@ -1,120 +0,0 @@ -# https://fedoraproject.org/wiki/CI/Tests -branches: - - master - - auto - - try - -context: FAH29-insttests -required: false - -container: - image: registry.fedoraproject.org/fedora:29 - kvm: true - -tests: - - ci/fah29-insttests.sh - -artifacts: - - tests/installed/artifacts/ - ---- - -# This suite skips the RPMs and does the build+unit tests in a container -inherit: false -branches: - - master - - auto - - try -required: true -container: - image: registry.fedoraproject.org/fedora:29 -context: f29-primary -env: - # We only use -Werror=maybe-uninitialized here with a "fixed" toolchain - CFLAGS: '-fsanitize=undefined -fsanitize-undefined-trap-on-error -fsanitize=address -O2 -Wp,-D_FORTIFY_SOURCE=2' - # Only for CI with a known g-ir-scanner - GI_SCANNERFLAGS: '--warn-error' - ASAN_OPTIONS: 'detect_leaks=0' # Right now we're not fully clean, but this gets us use-after-free etc - # TODO when we're doing leak checks: G_SLICE: "always-malloc" - CONFIGOPTS: '--with-curl --with-openssl' - -tests: - - ci/ci-commitmessage-submodules.sh - - ci/build-check.sh - - ci/ci-release-build.sh - -artifacts: - - test-suite.log - - config.log - - gdtr-results - ---- -# And now the contexts below here are variant container builds - -context: f29-rust -inherit: true -container: - image: registry.fedoraproject.org/fedora:29 -env: - CONFIGOPTS: '--enable-rust' - CI_PKGS: cargo - -tests: - - ci/build.sh - - make check TESTS=tests/test-rollsum - ---- - -context: f29-gnutls -inherit: true -container: - image: registry.fedoraproject.org/fedora:29 -env: - CONFIGOPTS: '--with-crypto=gnutls' - CI_PKGS: pkgconfig(gnutls) - -tests: - - ci/build.sh - - make check TESTS=tests/test-basic.sh - ---- - -inherit: true - -context: f29-minimal -env: - CONFIGOPTS: '--without-curl --without-soup --disable-gtk-doc --disable-man - --disable-rust --without-libarchive --without-selinux --without-smack - --without-openssl --without-avahi --without-libmount --disable-rofiles-fuse - --disable-experimental-api' - -tests: - - ci/build.sh - ---- - -inherit: true -required: true - -context: f29-libsoup - -env: - CONFIGOPTS: "--without-curl --without-openssl --with-soup" - -tests: - - ci/build-check.sh - ---- - -inherit: true -required: true - -context: f29-introspection-tests - -env: - # ASAN conflicts with introspection testing; - # See https://github.com/ostreedev/ostree/issues/1014 - INSTALLED_TESTS_PATTERN: "libostree/test-sizes.js libostree/test-sysroot.js libostree/test-core.js" - -tests: - - ci/build-check.sh diff --git a/.papr.yml b/.papr.yml deleted file mode 100644 index f74985e4..00000000 --- a/.papr.yml +++ /dev/null @@ -1,145 +0,0 @@ -# This suite skips the RPMs and does the build+unit tests in a container -inherit: false - -container: - image: registry.fedoraproject.org/fedora:29 -context: f29-primary -env: - # We only use -Werror=maybe-uninitialized here with a "fixed" toolchain - CFLAGS: '-fsanitize=undefined -fsanitize-undefined-trap-on-error -fsanitize=address -O2 -Wp,-D_FORTIFY_SOURCE=2' - # Only for CI with a known g-ir-scanner - GI_SCANNERFLAGS: '--warn-error' - ASAN_OPTIONS: 'detect_leaks=0' # Right now we're not fully clean, but this gets us use-after-free etc - # TODO when we're doing leak checks: G_SLICE: "always-malloc" - CONFIGOPTS: '--with-curl --with-openssl' - -tests: - - ci/ci-commitmessage-submodules.sh - - ci/build-check.sh - - ci/ci-release-build.sh - - make dist-then-build - -artifacts: - - test-suite.log - - config.log - - gdtr-results - ---- -# And now the contexts below here are variant container builds - -context: f29-rust -inherit: true -container: - image: registry.fedoraproject.org/fedora:29 -env: - CONFIGOPTS: '--enable-rust' - CI_PKGS: cargo - -tests: - - ci/build.sh - - make check TESTS=tests/test-rollsum - ---- - -context: f29-gnutls -inherit: true -container: - image: registry.fedoraproject.org/fedora:29 -env: - CONFIGOPTS: '--with-crypto=gnutls' - CI_PKGS: pkgconfig(gnutls) - -tests: - - ci/build.sh - - make check TESTS=tests/test-basic.sh - ---- - -inherit: true - -context: f29-minimal -env: - CONFIGOPTS: '--without-curl --without-soup --disable-gtk-doc --disable-man - --disable-rust --without-libarchive --without-selinux --without-smack - --without-openssl --without-avahi --without-libmount --disable-rofiles-fuse - --disable-experimental-api' - -tests: - - ci/build.sh - ---- - -inherit: true - -context: f29-libsoup - -env: - CONFIGOPTS: "--without-curl --without-openssl --with-soup" - -tests: - - ci/build-check.sh - ---- - -inherit: true - -context: f29-introspection-tests - -env: - # ASAN conflicts with introspection testing; - # See https://github.com/ostreedev/ostree/issues/1014 - INSTALLED_TESTS_PATTERN: "libostree/test-sizes.js libostree/test-sysroot.js libostree/test-core.js" - -tests: - - ci/build-check.sh - ---- - -# Reset inheritance for non-variant builds -inherit: false - -context: f29-flatpak - -# This test case wants an "unprivileged container with bubblewrap", -# which we don't have right now; so just provision a VM and do a -# docker --privileged run. -host: - distro: fedora/29/atomic - specs: - ram: 4096 # build-bundle is a static delta, which needs RAM right now - -tests: - - docker run --rm --privileged -v $(pwd):/srv/code registry.fedoraproject.org/fedora:29 /bin/sh -c "cd /srv/code && ./ci/flatpak.sh" - -artifacts: - - test-suite.log - ---- - -# Run rpm-ostree's vmcheck. This is a temporary hack until -# we share more code. https://github.com/projectatomic/rpm-ostree/issues/662 -inherit: false - -context: f29-rpmostree - -cluster: - hosts: - - name: vmcheck - distro: fedora/29/atomic - container: - image: registry.fedoraproject.org/fedora:29 - -env: - HOSTS: vmcheck - # This should roughly match the Fedora spec file, although right now we don't - # explicitly enable gtk-doc because we don't really need it - CONFIGOPTS: '--with-selinux --with-dracut=yesbutnoconf --with-curl --with-openssl' - -tests: - - ./ci/rpmostree.sh - -artifacts: - - test-suite.log - - vmcheck - -timeout: 60m diff --git a/tests/test-libarchive-import.c b/tests/test-libarchive-import.c index 70e221d1..d3429cd6 100644 --- a/tests/test-libarchive-import.c +++ b/tests/test-libarchive-import.c @@ -544,6 +544,12 @@ test_libarchive_selinux (gconstpointer data) if (skip_if_no_xattr (td)) goto out; + if (getenv ("container")) + { + // FIXME dedup this with libtest.sh have_selinux_relabel + g_test_skip ("skip in containers for now"); + goto out; + } if (td->skip_all != NULL) {