stages: - build - test - packaging before_script: - uname -a - locale - whoami - rm -rf build/ - mkdir build/ - cd build variables: COMPILER: "g++" BUILD_TYPE: "Debug" BOTAN: "-DWITH_BOTAN=1" UDNS: "-DWITH_UDNS=1" SYSTEMD: "-DWITH_SYSTEMD=1" LIBIDN: "-DWITH_LIBIDN=1" LITESQL: "-DWITH_LITESQL=1" .template:basic_build: &basic_build stage: build tags: - docker image: docker.louiz.org/biboumi-test-fedora:latest script: - "echo Running cmake with the following parameters: -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${LITESQL}" - cmake .. -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${LITESQL} - make biboumi -j$(nproc || echo 1) - make check -j$(nproc || echo 1) build:1: variables: BOTAN: "-DWITHOUT_BOTAN=1" <<: *basic_build build:2: variables: UDNS: "-DWITHOUT_UDNS=1" <<: *basic_build build:3: variables: LITESQL: "-DWITHOUT_LITESQL=1" <<: *basic_build build:4: variables: LITESQL: "-DWITHOUT_LITESQL=1" BOTAN: "-DWITHOUT_BOTAN=1" <<: *basic_build build:5: variables: LITESQL: "-DWITHOUT_LITESQL=1" UDNS: "-DWITHOUT_UDNS=1" <<: *basic_build build:6: variables: BOTAN: "-DWITHOUT_BOTAN=1" UDNS: "-DWITHOUT_UDNS=1" <<: *basic_build build:6: variables: LIBIDN: "-DWITHOUT_LIBIDN=1" UDNS: "-DWITHOUT_UDNS=1" <<: *basic_build .template:basic_test: &basic_test stage: test tags: - docker script: - cmake .. -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${LITESQL} - make biboumi -j$(nproc || echo 1) - make coverage_check -j$(nproc || echo 1) - make coverage_e2e -j$(nproc || echo 1) - make coverage - bash <(curl -s https://codecov.io/bash) -X gcov -X coveragepy -f ./coverage_e2e.info -F integration - bash <(curl -s https://codecov.io/bash) -X gcov -X coveragepy -f ./coverage_test_suite.info -F unittests artifacts: paths: - build/coverage_test_suite/ - build/coverage_e2e/ - build/coverage_total/ when: always name: $CI_PROJECT_NAME-test-$CI_BUILD_ID test:debian: image: docker.louiz.org/biboumi-test-debian:latest <<: *basic_test test:fedora: image: docker.louiz.org/biboumi-test-fedora:latest <<: *basic_test test:freebsd: only: - master@louiz/biboumi tags: - freebsd variables: SYSTEMD: "-DWITHOUT_SYSTEMD=1" stage: test script: - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${LITESQL} - make biboumi - make check - make e2e test:coverity: stage: test only: - master@louiz/biboumi tags: - docker image: docker.louiz.org/biboumi-test-fedora:latest allow_failure: true when: manual script: - export PATH=$PATH:~/coverity/bin - cmake .. -DWITHOUT_SYSTEMD=1 - cov-build --dir cov-int make biboumi test_suite -j$(nproc || echo 1) - tar czvf biboumi_coverity.tgz cov-int - curl --form token=$COVERITY_TOKEN --form email=louiz@louiz.org --form file=@biboumi_coverity.tgz --form version="$(git rev-parse --short HEAD)" --form description="Automatic submission by gitlab-ci" https://scan.coverity.com/builds?project=louiz%2Fbiboumi packaging:rpm: stage: packaging only: - master@louiz/biboumi tags: - docker image: docker.louiz.org/biboumi-test-fedora:latest script: - cmake .. -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${BOTAN} ${UDNS} ${SYSTEMD} ${LIBIDN} ${LITESQL} - make rpm -j$(nproc || echo 1) artifacts: paths: - build/rpmbuild/RPMS - build/rpmbuild/SRPMS when: always name: $CI_PROJECT_NAME-rpm-$CI_BUILD_ID packaging:deb: stage: packaging only: - master@louiz/biboumi - debian@louiz/biboumi tags: - docker image: docker.louiz.org/packaging-debian:latest before_script: [] script: - git checkout debian - 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 . artifacts: untracked: true name: $CI_PROJECT_NAME-deb-$CI_BUILD_ID packaging:docker: stage: packaging only: - master@louiz/biboumi tags: - docker-in-docker before_script: [] script: - docker login -p $DOCKER_PASSWORD -u louiz - ./docker/biboumi/build-docker.sh louiz/biboumi - docker push louiz/biboumi