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 Feb 23, 2018
1 parent 779df11 commit 93ed117
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 209 deletions.
217 changes: 8 additions & 209 deletions .papr.yml
Original file line number Diff line number Diff line change
@@ -1,219 +1,18 @@
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

artifacts:
- test-suite.log
- vmcheck

timeout: 60m
- ./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
2 changes: 2 additions & 0 deletions tests/fedora-str/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
This directory holds tests that use the
[Fedora Standard Test Interface](https://fedoraproject.org/wiki/CI/Standard_Test_Interface).
8 changes: 8 additions & 0 deletions tests/fedora-str/basic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- hosts: localhost
tags:
- atomic
remote_user: root
tasks:
- shell: ostree --version
changed_when: False
10 changes: 10 additions & 0 deletions tests/fedora-str/provision.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/bash
set -xeuo pipefail

dn=$(dirname $0)
cd ${dn}

. ../../ci/libbuild.sh

pkg_upgrade
pkg_install ansible standard-test-roles
30 changes: 30 additions & 0 deletions tests/fedora-str/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/bash
set -xeuo pipefail

dn=$(dirname $0)
cd ${dn}

# https://fedoraproject.org/wiki/CI/Tests
if test -z "${TEST_SUBJECTS:-}"; then
cat <<EOF
error: TEST_SUBJECTS must be set; e.g.:
curl -Lo fedora-atomic-host.qcow2 'https://getfedora.org/atomic_qcow2_latest'
export TEST_SUBJECTS=\$(pwd)/fedora-atomic-host.qcow2
If you're doing interactive development, we recommend caching the qcow2
somewhere persistent.
EOF
exit 1
fi
ls -al ${TEST_SUBJECTS}

export ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory)
ls -al /dev/kvm
if ! ansible-playbook --tags=atomic tests.yml; then
for x in artifacts/*.log; do
cat $x || true
done
exit 1
fi
1 change: 1 addition & 0 deletions tests/fedora-str/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- include: basic.yml

0 comments on commit 93ed117

Please sign in to comment.