diff options
-rw-r--r-- | .gitlab-ci.yml | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..c616f89 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,168 @@ +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 |