summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml168
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