stages: - build # Build in various conf, keeps the artifacts - test # Use the build artifacts to run the tests - packaging # Publish some packages (rpm, deb…) - 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: []