276 lines
5.7 KiB
YAML
276 lines
5.7 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"
|
|
CXX_FLAGS: "-Werror -Wno-psabi"
|
|
|
|
#
|
|
## Build jobs
|
|
#
|
|
|
|
.sources_changed:
|
|
only:
|
|
changes:
|
|
- "CMakeLists.txt"
|
|
- ".gitlab-ci.yml"
|
|
- "src/**/*"
|
|
- "tests/**/*"
|
|
|
|
.basic_build:
|
|
extends: .sources_changed
|
|
stage: build
|
|
tags:
|
|
- container
|
|
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="${CXX_FLAGS}" -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/
|
|
|
|
.fedora_build:
|
|
extends: .basic_build
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
|
|
build:fedora:
|
|
extends: .fedora_build
|
|
|
|
build:debian:
|
|
extends: .basic_build
|
|
image: docker.louiz.org/louiz/biboumi/test-debian:latest
|
|
|
|
build:alpine:
|
|
extends: .basic_build
|
|
variables:
|
|
SYSTEMD: "-DWITHOUT_SYSTEMD=1"
|
|
image: docker.louiz.org/louiz/biboumi/test-alpine:latest
|
|
|
|
build:archlinux:
|
|
extends: .basic_build
|
|
only:
|
|
- schedules
|
|
tags:
|
|
- armv7l
|
|
artifacts:
|
|
paths: []
|
|
|
|
build:freebsd:
|
|
extends: .basic_build
|
|
tags:
|
|
- freebsd
|
|
only:
|
|
- branches@louiz/biboumi
|
|
variables:
|
|
CXX_FLAGS: "-Werror"
|
|
SYSTEMD: "-DWITHOUT_SYSTEMD=1"
|
|
GIT_STRATEGY: "clone"
|
|
COMPILER: "clang++"
|
|
|
|
build:no_botan:
|
|
extends: .fedora_build
|
|
variables:
|
|
BOTAN: "-DWITHOUT_BOTAN=1"
|
|
|
|
build:no_udns:
|
|
extends: .fedora_build
|
|
variables:
|
|
UDNS: "-DWITHOUT_UDNS=1"
|
|
|
|
build:no_libidn:
|
|
extends: .fedora_build
|
|
variables:
|
|
UDNS: "-DWITHOUT_UDNS=1"
|
|
|
|
build:no_sqlite3:
|
|
extends: .fedora_build
|
|
variables:
|
|
SQLITE3: "-DWITHOUT_SQLITE3=1"
|
|
TEST_POSTGRES_URI: "postgres@postgres/postgres"
|
|
services:
|
|
- postgres:latest
|
|
|
|
build:no_db:
|
|
extends: .fedora_build
|
|
variables:
|
|
SQLITE3: "-DWITHOUT_SQLITE3=1"
|
|
POSTGRESQL: "-DWITHOUT_POSTGRESQL=1"
|
|
|
|
build:no_db_botan:
|
|
extends: .fedora_build
|
|
variables:
|
|
SQLITE3: "-DWITHOUT_SQLITE3=1"
|
|
POSTGRESQL: "-DWITHOUT_POSTGRESQL=1"
|
|
BOTAN: "-DWITHOUT_BOTAN=1"
|
|
|
|
#
|
|
## Test jobs
|
|
#
|
|
|
|
.basic_test:
|
|
extends: .sources_changed
|
|
stage: test
|
|
tags:
|
|
- docker
|
|
script:
|
|
- cd build/
|
|
- make check_junit || true; make check;
|
|
- make e2e
|
|
artifacts:
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- build/
|
|
name: $CI_PROJECT_NAME-test-$CI_JOB_ID
|
|
when: always
|
|
|
|
test:debian:
|
|
extends: .basic_test
|
|
image: docker.louiz.org/louiz/biboumi/test-debian:latest
|
|
dependencies:
|
|
- build:debian
|
|
needs: ["build:debian"]
|
|
|
|
test:fedora:
|
|
extends: .basic_test
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
script:
|
|
- cd build/
|
|
- make coverage_check
|
|
- make coverage_e2e
|
|
- make coverage
|
|
dependencies:
|
|
- build:fedora
|
|
needs: ["build:fedora"]
|
|
|
|
test:no_udns:
|
|
extends: .basic_test
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
dependencies:
|
|
- build:no_udns
|
|
needs: ["build:no_udns"]
|
|
|
|
test:alpine:
|
|
extends: .basic_test
|
|
image: docker.louiz.org/louiz/biboumi/test-alpine:latest
|
|
dependencies:
|
|
- build:alpine
|
|
needs: ["build:alpine"]
|
|
|
|
test:freebsd:
|
|
extends: .basic_test
|
|
tags:
|
|
- freebsd
|
|
only:
|
|
- branches@louiz/biboumi
|
|
dependencies:
|
|
- build:freebsd
|
|
needs: ["build:freebsd"]
|
|
|
|
#
|
|
## Packaging jobs
|
|
#
|
|
|
|
packaging:rpm:
|
|
stage: packaging
|
|
only:
|
|
- master@louiz/biboumi
|
|
tags:
|
|
- docker
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
script:
|
|
- mkdir -p build/
|
|
- 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:archlinux:
|
|
stage: packaging
|
|
only:
|
|
- master@louiz/biboumi
|
|
tags:
|
|
- docker
|
|
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_changed:
|
|
only:
|
|
changes:
|
|
- "CMakeLists.txt"
|
|
- ".gitlab-ci.yml"
|
|
- "doc/**/*"
|
|
|
|
# The jobs with the secure tag need to access directories where important
|
|
# files are stored: the latest doc, etc.
|
|
# Other jobs can not access these, otherwise anybody doing a merge request
|
|
# could delete the official doc
|
|
.deploy:doc:
|
|
extends: .doc_changed
|
|
stage: deploy
|
|
image: docker.louiz.org/louiz/biboumi/test-fedora:latest
|
|
tags:
|
|
- www
|
|
- secure
|
|
script:
|
|
- cd doc/
|
|
- make html
|
|
- rm -rf /www/$DOC_DEPLOY_DIR
|
|
- mv _build/html /www/$DOC_DEPLOY_DIR
|
|
dependencies: []
|
|
|
|
deploy:doc:latest:
|
|
extends: .deploy:doc
|
|
only:
|
|
- master@louiz/biboumi
|
|
environment:
|
|
name: doc.latest
|
|
url: https://doc.biboumi.louiz.org
|
|
variables:
|
|
DOC_DEPLOY_DIR: "latest"
|
|
|
|
deploy:doc:tag:
|
|
extends: .deploy:doc
|
|
only:
|
|
- tags
|
|
environment:
|
|
name: doc.$CI_COMMIT_TAG
|
|
url: https://doc.biboumi.louiz.org/$CI_COMMIT_TAG/
|
|
variables:
|
|
DOC_DEPLOY_DIR: $CI_COMMIT_TAG
|