255 lines
5.4 KiB
YAML
255 lines
5.4 KiB
YAML
stages:
|
|
- build # Build in various conf, keeps the artifacts
|
|
- test # Use the build artifacts to run the tests
|
|
- packaging # Publish some packages (rpm, deb…)
|
|
- deploy # Deploy things like the web doc
|
|
- external # Interact with some external service (coverity…)
|
|
|
|
before_script:
|
|
- uname -a
|
|
- whoami
|
|
|
|
variables:
|
|
COMPILER: "g++"
|
|
BUILD_TYPE: "Debug"
|
|
BOTAN: "-DWITH_BOTAN=1"
|
|
UDNS: "-DWITH_UDNS=1"
|
|
SYSTEMD: "-DWITH_SYSTEMD=1"
|
|
LIBIDN: "-DWITH_LIBIDN=1"
|
|
SQLITE3: "-DWITH_SQLITE3=1"
|
|
POSTGRESQL: "-WITH_POSTGRESQL=1"
|
|
|
|
#
|
|
## Build jobs
|
|
#
|
|
|
|
.template:basic_build: &basic_build
|
|
stage: build
|
|
tags:
|
|
- docker
|
|
script:
|
|
- "echo Running cmake with the following parameters: -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${SQLITE3} ${POSTGRESQL}"
|
|
- mkdir build/
|
|
- cd build/
|
|
- cmake .. -DCMAKE_CXX_FLAGS="-Werror -Wno-psabi" -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${SQLITE3} ${POSTGRESQL}
|
|
- make everything -j$(nproc || echo 1)
|
|
artifacts:
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- build/
|
|
|
|
.template:fedora_build: &fedora_build
|
|
<<: *basic_build
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
|
|
build:fedora:
|
|
<<: *fedora_build
|
|
|
|
build:debian:
|
|
<<: *basic_build
|
|
image: docker.louiz.org/louiz/biboumi/test-debian:latest
|
|
|
|
build:alpine:
|
|
variables:
|
|
SYSTEMD: "-DWITHOUT_SYSTEMD=1"
|
|
<<: *basic_build
|
|
image: docker.louiz.org/louiz/biboumi/test-alpine:latest
|
|
|
|
build:archlinux:
|
|
<<: *basic_build
|
|
only:
|
|
- branches@louiz/biboumi
|
|
when: manual
|
|
tags:
|
|
- armv7l
|
|
artifacts:
|
|
paths: []
|
|
|
|
build:no_botan:
|
|
variables:
|
|
BOTAN: "-DWITHOUT_BOTAN=1"
|
|
<<: *fedora_build
|
|
|
|
build:no_udns:
|
|
variables:
|
|
UDNS: "-DWITHOUT_UDNS=1"
|
|
<<: *fedora_build
|
|
|
|
build:no_libidn:
|
|
variables:
|
|
UDNS: "-DWITHOUT_UDNS=1"
|
|
<<: *fedora_build
|
|
|
|
build:no_sqlite3:
|
|
variables:
|
|
SQLITE3: "-DWITHOUT_SQLITE3=1"
|
|
TEST_POSTGRES_URI: "postgres@postgres/postgres"
|
|
services:
|
|
- postgres:latest
|
|
<<: *fedora_build
|
|
|
|
build:no_db:
|
|
variables:
|
|
SQLITE3: "-DWITHOUT_SQLITE3=1"
|
|
POSTGRESQL: "-DWITHOUT_POSTGRESQL=1"
|
|
<<: *fedora_build
|
|
|
|
build:no_db_botan:
|
|
variables:
|
|
SQLITE3: "-DWITHOUT_SQLITE3=1"
|
|
POSTGRESQL: "-DWITHOUT_POSTGRESQL=1"
|
|
BOTAN: "-DWITHOUT_BOTAN=1"
|
|
<<: *fedora_build
|
|
|
|
#
|
|
## Test jobs
|
|
#
|
|
|
|
.template:basic_test: &basic_test
|
|
stage: test
|
|
tags:
|
|
- docker
|
|
script:
|
|
- cd build/
|
|
- make check -j$(nproc || echo 1)
|
|
- make e2e -j$(nproc || echo 1)
|
|
artifacts:
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- build/coverage_test_suite/
|
|
- build/coverage_e2e/
|
|
- build/coverage_total/
|
|
- build/coverage_e2e.info
|
|
when: always
|
|
name: $CI_PROJECT_NAME-test-$CI_JOB_ID
|
|
|
|
test:debian:
|
|
image: docker.louiz.org/louiz/biboumi/test-debian:latest
|
|
<<: *basic_test
|
|
dependencies:
|
|
- build:debian
|
|
|
|
test:fedora:
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
<<: *basic_test
|
|
script:
|
|
- cd build/
|
|
- make coverage_check -j$(nproc || echo 1)
|
|
- make coverage_e2e -j$(nproc || echo 1)
|
|
- make coverage
|
|
dependencies:
|
|
- build:fedora
|
|
|
|
test:no_udns:
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
<<: *basic_test
|
|
dependencies:
|
|
- build:no_udns
|
|
|
|
test:alpine:
|
|
image: docker.louiz.org/louiz/biboumi/test-alpine:latest
|
|
<<: *basic_test
|
|
dependencies:
|
|
- build:alpine
|
|
image: docker.louiz.org/louiz/biboumi/test-alpine:latest
|
|
|
|
test:freebsd:
|
|
tags:
|
|
- freebsd
|
|
variables:
|
|
GIT_STRATEGY: "clone"
|
|
SYSTEMD: "-DWITHOUT_SYSTEMD=1"
|
|
stage: test
|
|
script:
|
|
- mkdir build/
|
|
- cd build/
|
|
- cmake .. -DCMAKE_CXX_FLAGS="-Werror" -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${SQLITE3}
|
|
- make check
|
|
- make e2e
|
|
dependencies: []
|
|
|
|
#
|
|
## Packaging jobs
|
|
#
|
|
|
|
packaging:rpm:
|
|
stage: packaging
|
|
only:
|
|
- master@louiz/biboumi
|
|
tags:
|
|
- docker
|
|
allow_failure: true
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
script:
|
|
- cd build/
|
|
- make rpm -j$(nproc || echo 1)
|
|
artifacts:
|
|
paths:
|
|
- build/rpmbuild/RPMS
|
|
- build/rpmbuild/SRPMS
|
|
when: always
|
|
name: $CI_PROJECT_NAME-rpm-$CI_BUILD_ID
|
|
dependencies:
|
|
- build:fedora
|
|
|
|
packaging:deb:
|
|
stage: packaging
|
|
only:
|
|
- master@louiz/biboumi
|
|
- debian@louiz/biboumi
|
|
tags:
|
|
- docker
|
|
allow_failure: true
|
|
image: docker.louiz.org/louiz/biboumi/packaging-debian:latest
|
|
before_script: []
|
|
script:
|
|
- git checkout debian
|
|
- git pull
|
|
- git merge --no-commit --no-ff master
|
|
- mk-build-deps
|
|
- apt update -y
|
|
- apt install -y ./biboumi-build-deps*.deb
|
|
- debuild -b -us -uc
|
|
- mv ../*.deb .
|
|
- mv ../*.build .
|
|
- mv ../*.buildinfo .
|
|
dependencies: []
|
|
artifacts:
|
|
untracked: true
|
|
name: $CI_PROJECT_NAME-deb-$CI_BUILD_ID
|
|
|
|
packaging:archlinux:
|
|
stage: packaging
|
|
only:
|
|
- master@louiz/biboumi
|
|
tags:
|
|
- docker
|
|
allow_failure: true
|
|
image: docker.louiz.org/louiz/biboumi/packaging-archlinux:latest
|
|
before_script: []
|
|
script:
|
|
- sudo pacman -Syuu --noconfirm
|
|
- git clone https://aur.archlinux.org/biboumi-git.git
|
|
- cd biboumi-git
|
|
- makepkg -si --noconfirm
|
|
- test -e /usr/bin/biboumi
|
|
dependencies: []
|
|
|
|
#
|
|
# Deploy jobs
|
|
#
|
|
|
|
doc:
|
|
stage: deploy
|
|
only:
|
|
- branches@louiz/biboumi
|
|
tags:
|
|
- www
|
|
image: docker.louiz.org/louiz/biboumi/doc-builder
|
|
script:
|
|
- cd doc/
|
|
- make html
|
|
- rm -rf /www/latest
|
|
- mv _build/html /www/latest
|
|
dependencies: []
|