ci: Update to match current rpm-ostree

This copies the `ci/` directory from rpm-ostree, with much the same rationale;
among other things we don't want to depend on the Docker hub.

The specific reason I'm doing this is that I want to add a CentOS7 build, but
that means we can't use `projectatomic/ostree-tester`, and at that point we
might as well unwind it all.

Closes: #917
Approved by: jlebon
This commit is contained in:
Colin Walters 2017-06-08 13:47:20 -04:00 committed by Atomic Bot
parent 2a3f17c7aa
commit a98faa9113
6 changed files with 72 additions and 110 deletions

View File

@ -1,27 +0,0 @@
FROM fedora:25
RUN dnf install -y \
gcc \
git \
sudo \
which \
attr \
fuse \
gjs \
parallel \
coccinelle \
clang \
libubsan \
libasan \
libtsan \
PyYAML \
gnome-desktop-testing \
redhat-rpm-config \
elfutils \
'dnf-command(builddep)' \
&& dnf builddep -y \
ostree \
&& dnf clean all
# create an unprivileged user for testing
RUN adduser testuser

View File

@ -4,102 +4,51 @@ branches:
- try
required: true
context: f25-sanitizer
context: f25-primary
container:
image: projectatomic/ostree-tester
image: registry.fedoraproject.org/fedora:25
packages:
- libasan
- git
- coccinelle
env:
CFLAGS: '-fsanitize=undefined -fsanitize-undefined-trap-on-error -fsanitize=address -O2 -Wp,-D_FORTIFY_SOURCE=2'
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"
build:
config-opts: >
--prefix=/usr
--libdir=/usr/lib64
--enable-installed-tests=exclusive
--enable-gtk-doc
# The g-d-t-r timeout is for test-pull-many.sh; if tweaking this,
# also be sure to change the other cases below
tests:
- make syntax-check
- ./tests/ci-commitmessage-submodules.sh
- make check
- /bin/sh -c 'gnome-desktop-testing-runner -p 0 --timeout $((10 * 60)) libostree/'
- ci/ci-commitmessage-submodules.sh
- ci/build-check.sh
timeout: 30m
artifacts:
- test-suite.log
---
inherit: true
required: true
context: f25-clang
env:
CC: 'clang'
CFLAGS: '-Werror=unused-variable'
tests:
artifacts:
- test-suite.log
---
inherit: true
context: f25-rust
packages:
- cargo
build:
config-opts: >
--prefix=/usr
--libdir=/usr/lib64
--enable-gtk-doc
--enable-rust
env:
CC: 'gcc'
CONFIGOPTS: '--enable-rust'
tests:
- ci/build.sh
- make check TESTS=tests/test-rollsum
artifacts:
- test-suite.log
---
inherit: true
context: f25-experimental-api
build:
config-opts: >
--prefix=/usr
--libdir=/usr/lib64
--enable-gtk-doc
--enable-experimental-api
env:
CC: 'gcc'
CONFIGOPTS: '--enable-experimental-api'
tests:
- make check
- /bin/sh -c 'gnome-desktop-testing-runner -p 0 --timeout $((10 * 60)) libostree/'
- ci/build-check.sh
artifacts:
- test-suite.log
---
inherit: true
@ -111,21 +60,11 @@ packages:
- pkgconfig(libcurl)
- pkgconfig(openssl)
build:
config-opts: >
--prefix=/usr
--libdir=/usr/lib64
--enable-installed-tests=exclusive
--enable-gtk-doc
--with-curl
--with-openssl
env:
CONFIGOPTS: "--with-curl --with-openssl"
tests:
- make check
- /bin/sh -c 'gnome-desktop-testing-runner -p 0 --timeout $((10 * 60)) libostree/'
artifacts:
- test-suite.log
- ci/build-check.sh
---
@ -143,24 +82,16 @@ cluster:
- name: vmcheck
distro: fedora/25/atomic
container:
image: projectatomic/ostree-tester
build:
config-opts: >
--prefix=/usr
--libdir=/usr/lib64
--enable-gtk-doc
image: registry.fedoraproject.org/fedora:25
# 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
- rsync -rl -e 'ssh -o User=root' . vmcheck:ostree/
- ssh root@vmcheck './ostree/tests/installed/fah-prep.sh && ostree admin unlock && rsync -rlv ./ostree/insttree/usr/ /usr/ && ./ostree/tests/installed/run.sh'
artifacts:
- test-suite.log
---
inherit: false

20
ci/build-check.sh Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/bash
# Install build dependencies, run unit tests and installed tests.
set -xeuo pipefail
dn=$(dirname $0)
. ${dn}/libbuild.sh
${dn}/build.sh
make check
make syntax-check # TODO: do syntax-check under check
# And now run the installed tests
make install
gnome-desktop-testing-runner -p 0 ostree
git clean -dfx && git submodule foreach git clean -dfx
# And now a clang build to find unused variables; perhaps
# in the future these could parallelize
export CC=clang
export CFLAGS='-Werror=unused-variable'
build

15
ci/build.sh Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/bash
# Install build dependencies, run unit tests and installed tests.
set -xeuo pipefail
dn=$(dirname $0)
. ${dn}/libbuild.sh
install_builddeps ostree
dnf install -y sudo which attr fuse gjs parallel coccinelle clang \
libubsan libasan libtsan PyYAML gnome-desktop-testing redhat-rpm-config \
elfutils
build --enable-gtk-doc --enable-installed-tests=exclusive ${CONFIGOPTS:-}

23
ci/libbuild.sh Normal file
View File

@ -0,0 +1,23 @@
#!/usr/bin/bash
make() {
/usr/bin/make -j $(getconf _NPROCESSORS_ONLN) "$@"
}
build() {
env NOCONFIGURE=1 ./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64 "$@"
make V=1
}
install_builddeps() {
pkg=$1
dnf -y install dnf-plugins-core
dnf install -y @buildsys-build
dnf install -y 'dnf-command(builddep)'
# builddeps+runtime deps
dnf builddep -y $pkg
dnf install -y $pkg
rpm -e $pkg
}