Skip to content

Commit

Permalink
WIP: ci: Add experiment with Fedora Standard Test interface
Browse files Browse the repository at this point in the history
Reusing the way `standard-test-roles` has support for booting
a qcow2 actually gets us to the "VM-in-container" flow.  Plus
Ansible over shell script is sometimes nicer.

https://fedoraproject.org/wiki/CI/Tests#Testing_an_Atomic_Host

This is just an experiment to see if this works; right now we aren't
even injecting the built ostree into the VM, or doing any interesting tests.

One thing that I'm sure we're going to hit is a need to cache the qcow2 in the
CI environment.
  • Loading branch information
cgwalters committed Mar 6, 2018
1 parent 1c9baad commit 3759fce
Show file tree
Hide file tree
Showing 17 changed files with 305 additions and 299 deletions.
217 changes: 10 additions & 207 deletions .papr.yml
Original file line number Diff line number Diff line change
@@ -1,219 +1,22 @@
branches:
- master
- auto
- try

required: true
context: f27-primary

container:
image: registry.fedoraproject.org/fedora:27

env:
# Enable all the sanitizers for this primary build.
# 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

timeout: 30m

# Keep this in sync with build-check.sh
artifacts:
- test-suite.log
- config.log
- gdtr-results
---

context: c7-primary
inherit: true
required: true

host:
distro: centos/7/atomic

env:
CFLAGS: ''
CONFIGOPTS: '--with-curl --with-openssl'

tests:
- docker run --privileged -v $PWD:$PWD --workdir $PWD
registry.centos.org/centos/centos:7 sh -c
'yum install -y git && ci/build-check.sh'

---

context: f27-rust
inherit: true
container:
image: registry.fedoraproject.org/fedora:27
env:
CONFIGOPTS: '--enable-rust'
CI_PKGS: cargo

tests:
- ci/build.sh
- make check TESTS=tests/test-rollsum

---

context: f27-gnutls
inherit: true
container:
image: registry.fedoraproject.org/fedora:27
env:
CONFIGOPTS: '--with-crypto=gnutls'
CI_PKGS: pkgconfig(gnutls)

tests:
- ci/build.sh
- make check TESTS=tests/test-basic.sh

---

inherit: true

context: f27-experimental-api
env:
CONFIGOPTS: '--enable-experimental-api'

tests:
- ci/build-check.sh

---

inherit: true

context: f27-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: f27-libsoup

env:
CONFIGOPTS: "--without-curl --without-openssl --with-libsoup"

tests:
- ci/build-check.sh

---

inherit: true
required: true

context: f27-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

---

inherit: false
branches:
- master
- auto
- try

context: f27ah-insttest
required: false

cluster:
hosts:
- name: vmcheck
distro: fedora/27/atomic
container:
image: registry.fedoraproject.org/fedora:27

# Copy the build from the container to the host; ideally down the line
# this is installing an RPM via https://github.com/jlebon/redhat-ci/issues/10
tests:
- ci/build.sh
- make install DESTDIR=$(pwd)/insttree
- yum -y install rsync
- rsync -rl -e 'ssh -o User=root' . vmcheck:ostree/
- ssh root@vmcheck './ostree/tests/installed/fah-prep.sh && ./ostree/tests/installed/run.sh'

---

# https://fedoraproject.org/wiki/CI/Tests
inherit: false
branches:
- master
- auto
- try

context: f27-flatpak
context: f27ah-str
required: false

# 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/27/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:27 /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

branches:
- master
- auto
- try

context: f27-rpmostree
required: true

cluster:
hosts:
- name: vmcheck
distro: fedora/27/atomic
container:
image: registry.fedoraproject.org/fedora:27

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'
container:
image: registry.fedoraproject.org/fedora:27

tests:
- ./ci/rpmostree.sh
- cd tests/fedora-str && ../../ci/build.sh
- ./tests/fedora-str/provision.sh
# TODO: enhance papr to have caching, a bit like https://docs.travis-ci.com/user/caching/
- curl -Lo fedora-atomic-host.qcow2 https://getfedora.org/atomic_qcow2_latest
- env "TEST_SUBJECTS=$(pwd)/fedora-atomic-host.qcow2" ./tests/fedora-str/run.sh

artifacts:
- test-suite.log
- vmcheck

timeout: 60m
- tests/fedora-str/artifacts
2 changes: 1 addition & 1 deletion ci/build-check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
set -xeuo pipefail

dn=$(dirname $0)
. ${dn}/libbuild.sh
. ${dn}/libpaprci/libbuild.sh
${dn}/build.sh
topdir=$(git rev-parse --show-toplevel)
resultsdir=$(mktemp -d)
Expand Down
39 changes: 19 additions & 20 deletions ci/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,21 @@
set -xeuo pipefail

dn=$(dirname $0)
. ${dn}/libbuild.sh
paprcidir=${dn}/libpaprci
. ${paprcidir}/libbuild.sh

pkg_upgrade
pkg_install_builddeps ostree
# Until this propagates farther
pkg_install 'pkgconfig(libcurl)' 'pkgconfig(openssl)'
pkg_install sudo which attr fuse strace \
libubsan libasan libtsan PyYAML redhat-rpm-config \
elfutils
if test -n "${CI_PKGS:-}"; then
pkg_install ${CI_PKGS}
# Auto-provision bootstrap resources if run as root (normally in CI)
if test "$(id -u)" == 0; then
pkg_install make /usr/bin/rpmbuild git
fi

# PAPR really should do this
if ! test -f libglnx/README.md || ! test -f bsdiff/README.md; then
git submodule update --init
fi
pkg_install_if_os fedora gjs gnome-desktop-testing parallel coccinelle clang \
python3-PyYAML
(. /etc/os-release;
if test "${ID}" = "centos"; then
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
pkg_install python34{,-PyYAML}
fi
)

# Default libcurl on by default in fedora unless libsoup is enabled
if sh -c '. /etc/os-release; test "${ID}" = fedora'; then
if test "${OS_ID}" = 'fedora'; then
case "${CONFIGOPTS:-}" in
*--with-soup*|*--without-curl*) ;;
*) CONFIGOPTS="${CONFIGOPTS:-} --with-curl"
Expand All @@ -44,4 +36,11 @@ esac
# NB: this disables the default set of flags from configure.ac
export CFLAGS="-Wall -Werror ${CFLAGS:-}"

build --enable-gtk-doc ${CONFIGOPTS:-}
# TODO: Use some form of rpm's --build-in-place to skip archive-then-unpack?
make -f ${paprcidir}/Makefile.dist-packaging srpm PACKAGE=libostree DISTGIT_NAME=ostree
if test "$(id -u)" == 0; then
pkg_builddep *.src.rpm
else
echo "NOTE: Running as non-root, assuming build dependencies are installed"
fi
${paprcidir}/rpmbuild-cwd --rebuild *.src.rpm
2 changes: 1 addition & 1 deletion ci/flatpak.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ set -xeuo pipefail
FLATPAK_TAG=0.10.2.1

dn=$(dirname $0)
. ${dn}/libbuild.sh
. ${dn}/libpaprci/libbuild.sh

codedir=$(pwd)

Expand Down
69 changes: 0 additions & 69 deletions ci/libbuild.sh

This file was deleted.

Loading

0 comments on commit 3759fce

Please sign in to comment.