--- stages: - base - dependencies - build - test - check variables: DOCKER_DRIVER: overlay2 DOCKER_BUILDKIT: 1 .docker_base_builder: &docker_base_builder retry: max: 2 when: - runner_system_failure - stuck_or_timeout_failure - unknown_failure - api_failure stage: base image: docker:stable only: changes: - tests/dockerfiles/* services: - docker:dind before_script: - set -- $CI_JOB_NAME - export DISTRO=$2 - "echo \"Distro: ${DISTRO}\nDocker base: ${DOCKER_BASE_IMAGE}\"" - export DOCKER_HOST="${DOCKER_HOST:-tcp://localhost:2375/}" - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY script: - cd tests/dockerfiles - > docker build . -f Dockerfile.$DISTRO-base --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest - docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest builder ubuntu base: <<: *docker_base_builder variables: DOCKER_BASE_IMAGE: ubuntu:focal builder fedora-31 base: <<: *docker_base_builder variables: DOCKER_BASE_IMAGE: fedora:31 builder fedora-32 base: <<: *docker_base_builder variables: DOCKER_BASE_IMAGE: fedora:32 builder fedora-33 base: <<: *docker_base_builder variables: DOCKER_BASE_IMAGE: fedora:33 builder archlinux base: <<: *docker_base_builder variables: DOCKER_BASE_IMAGE: archlinux:base builder alpine base: <<: *docker_base_builder variables: DOCKER_BASE_IMAGE: alpine:latest .docker_builder: &docker_builder <<: *docker_base_builder stage: dependencies script: - set -- $CI_JOB_NAME - export DISTRO=$2 - export COMPILER=$3 - "echo \"Distro: ${DISTRO}\nCompiler: ${COMPILER}\"" - cd tests/dockerfiles - > docker build . -f Dockerfile.$DISTRO-$COMPILER --build-arg IMAGE=$CI_REGISTRY_IMAGE --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest - docker push ${CI_REGISTRY_IMAGE}/builder/$DISTRO-$COMPILER:latest builder ubuntu clang-9: *docker_builder builder ubuntu clang-10: *docker_builder builder ubuntu clang-11: *docker_builder builder ubuntu gcc-7: *docker_builder builder ubuntu gcc-8: *docker_builder builder ubuntu gcc-9: *docker_builder builder ubuntu gcc-10: *docker_builder builder fedora-31 clang-8: *docker_builder builder fedora-32 clang-10: *docker_builder builder fedora-33 clang-11: *docker_builder builder archlinux clang: *docker_builder builder archlinux gcc: *docker_builder builder alpine gcc: *docker_builder # builder alpine clang: *docker_builder .build_stages: &build_stages retry: max: 2 when: - runner_system_failure - stuck_or_timeout_failure - unknown_failure - api_failure image: $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest stage: build script: - "echo \"Distro: ${DISTRO}\nCompiler: ${COMPILER}\nCC: $CC\nCXX: $CXX\"" - mkdir -p build - cd build - > cmake -DBUILD_AUDACIOUS=$BUILD_AUDACIOUS -DBUILD_HTTP=ON -DBUILD_ICAL=$BUILD_ICAL -DBUILD_ICONV=ON -DBUILD_IRC=$BUILD_IRC -DBUILD_JOURNAL=$BUILD_JOURNAL -DBUILD_LUA_CAIRO=$BUILD_LUA_CAIRO -DBUILD_LUA_IMLIB2=ON -DBUILD_LUA_RSVG=$BUILD_LUA_RSVG -DBUILD_MYSQL=$BUILD_MYSQL -DBUILD_NVIDIA=$BUILD_NVIDIA -DBUILD_PULSEAUDIO=$BUILD_PULSEAUDIO -DBUILD_RSS=$BUILD_RSS -DBUILD_XMMS2=$BUILD_XMMS2 -DCMAKE_EXE_LINKER_FLAGS=$LINKER_FLAGS -DMAINTAINER_MODE=ON .. - make -j4 .build_variables: &build_variables BUILD_AUDACIOUS: "ON" BUILD_ICAL: "ON" BUILD_IRC: "ON" BUILD_JOURNAL: "ON" BUILD_LUA_CAIRO: "ON" BUILD_LUA_RSVG: "ON" BUILD_MYSQL: "ON" BUILD_NVIDIA: "ON" BUILD_PULSEAUDIO: "ON" BUILD_RSS: "ON" BUILD_XMMS2: "ON" LINKER_FLAGS: "" ubuntu clang-9: <<: *build_stages variables: <<: *build_variables DISTRO: ubuntu COMPILER: clang-9 CC: clang-9 CXX: clang++-9 ubuntu clang-10: <<: *build_stages variables: <<: *build_variables DISTRO: ubuntu COMPILER: clang-10 CC: clang-10 CXX: clang++-10 ubuntu clang-11: <<: *build_stages variables: <<: *build_variables DISTRO: ubuntu COMPILER: clang-11 CC: clang-11 CXX: clang++-11 ubuntu gcc-7: <<: *build_stages variables: <<: *build_variables DISTRO: ubuntu COMPILER: gcc-7 CC: gcc-7 CXX: g++-7 ubuntu gcc-8: <<: *build_stages variables: <<: *build_variables DISTRO: ubuntu COMPILER: gcc-8 CC: gcc-8 CXX: g++-8 ubuntu gcc-9: <<: *build_stages variables: <<: *build_variables DISTRO: ubuntu COMPILER: gcc-9 CC: gcc-9 CXX: g++-9 ubuntu gcc-10: <<: *build_stages variables: <<: *build_variables DISTRO: ubuntu COMPILER: gcc-10 CC: gcc-10 CXX: g++-10 fedora-31 clang-8: <<: *build_stages variables: <<: *build_variables DISTRO: fedora-31 COMPILER: clang-8 CC: clang CXX: clang++ BUILD_AUDACIOUS: "OFF" fedora-32 clang-10: <<: *build_stages variables: <<: *build_variables DISTRO: fedora-32 COMPILER: clang-10 CC: clang CXX: clang++ BUILD_AUDACIOUS: "OFF" fedora-33 clang-11: <<: *build_stages variables: <<: *build_variables DISTRO: fedora-33 COMPILER: clang-11 CC: clang CXX: clang++ BUILD_AUDACIOUS: "OFF" archlinux clang: <<: *build_stages variables: <<: *build_variables DISTRO: archlinux COMPILER: clang CC: clang CXX: clang++ BUILD_AUDACIOUS: "OFF" BUILD_XMMS2: "OFF" archlinux gcc: <<: *build_stages variables: <<: *build_variables DISTRO: archlinux COMPILER: gcc CC: gcc CXX: g++ BUILD_AUDACIOUS: "OFF" BUILD_XMMS2: "OFF" alpine gcc: <<: *build_stages variables: <<: *build_variables DISTRO: alpine COMPILER: gcc CC: gcc CXX: g++ BUILD_AUDACIOUS: "OFF" BUILD_ICAL: "OFF" BUILD_IRC: "OFF" BUILD_JOURNAL: "OFF" BUILD_LUA_CAIRO: "OFF" BUILD_LUA_RSVG: "OFF" BUILD_MYSQL: "OFF" BUILD_NVIDIA: "OFF" BUILD_PULSEAUDIO: "OFF" BUILD_RSS: "OFF" BUILD_XMMS2: "OFF" # alpine clang: # <<: *build_stages # variables: # <<: *build_variables # DISTRO: alpine # COMPILER: clang # CC: clang # CXX: clang++ # BUILD_AUDACIOUS: "OFF" # BUILD_ICAL: "OFF" # BUILD_IRC: "OFF" # BUILD_JOURNAL: "OFF" # BUILD_LUA_CAIRO: "OFF" # BUILD_LUA_RSVG: "OFF" # BUILD_MYSQL: "OFF" # BUILD_NVIDIA: "OFF" # BUILD_PULSEAUDIO: "OFF" # BUILD_RSS: "OFF" # BUILD_XMMS2: "OFF" .test_stages: &test_stages retry: max: 2 when: - runner_system_failure - stuck_or_timeout_failure - unknown_failure - api_failure image: $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest stage: test .test_run: &test_run script: - "echo \"Distro: ${DISTRO}\nCompiler: ${COMPILER}\nCC: $CC\nCXX: $CXX\"" - mkdir -p build - cd build - | cmake \ -DBUILD_TESTS=ON \ -DMAINTAINER_MODE=ON \ .. - make -j4 - make -j4 test - if [ "$COMPILER" == "clang-11" ] ; then make -j4 test-conky-coverage-txt ; fi - if [ "$COMPILER" == "clang-11" ] ; then make -j4 test-conky-coverage-html ; fi - if [ "$COMPILER" == "clang-11" ] ; then lcov-summary test-conky-coverage-html.info.cleaned ; fi - make -j4 - make -j4 install - conky -v - find . -iname '*.gcda' -delete - | cmake \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DRELEASE=ON \ .. - make -j4 - make -j4 install - conky -v coverage: '/Total Coverage:\s+(\d+\.\d+)%/' artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME-coverage-report" paths: - build/test-conky-coverage-html/ test ubuntu clang-9: <<: *test_stages <<: *test_run variables: DISTRO: ubuntu COMPILER: clang-9 CC: clang-9 CXX: clang++-9 test ubuntu clang-10: <<: *test_stages <<: *test_run variables: DISTRO: ubuntu COMPILER: clang-10 CC: clang-10 CXX: clang++-10 test ubuntu clang-11: <<: *test_stages <<: *test_run variables: DISTRO: ubuntu COMPILER: clang-11 CC: clang-11 CXX: clang++-11 test ubuntu gcc-7: <<: *test_stages <<: *test_run variables: DISTRO: ubuntu COMPILER: gcc-7 CC: gcc-7 CXX: g++-7 test ubuntu gcc-8: <<: *test_stages <<: *test_run variables: DISTRO: ubuntu COMPILER: gcc-8 CC: gcc-8 CXX: g++-8 test ubuntu gcc-9: <<: *test_stages <<: *test_run variables: DISTRO: ubuntu COMPILER: gcc-9 CC: gcc-9 CXX: g++-9 test ubuntu gcc-10: <<: *test_stages <<: *test_run variables: DISTRO: ubuntu COMPILER: gcc-10 CC: gcc-10 CXX: g++-10 test fedora-31 clang-8: <<: *test_stages <<: *test_run variables: DISTRO: fedora-31 COMPILER: clang-8 CC: clang CXX: clang++ test fedora-32 clang-10: <<: *test_stages <<: *test_run variables: DISTRO: fedora-32 COMPILER: clang-10 CC: clang CXX: clang++ test fedora-33 clang-11: <<: *test_stages <<: *test_run variables: DISTRO: fedora-33 COMPILER: clang-11 CC: clang CXX: clang++ test archlinux clang: <<: *test_stages <<: *test_run variables: DISTRO: archlinux COMPILER: clang CC: clang CXX: clang++ test archlinux gcc: <<: *test_stages <<: *test_run variables: DISTRO: archlinux COMPILER: gcc CC: gcc CXX: g++ test alpine gcc: <<: *test_stages <<: *test_run variables: DISTRO: alpine COMPILER: gcc CC: gcc CXX: g++ # test alpine clang: # <<: *test_stages # <<: *test_run # variables: # DISTRO: alpine # COMPILER: clang # CC: clang # CXX: clang++ .check_stages: &check_stages retry: max: 2 when: - runner_system_failure - stuck_or_timeout_failure - unknown_failure - api_failure image: $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest stage: check check clang-tidy: <<: *check_stages variables: COMPILER: clang-11 DISTRO: ubuntu CC: clang-11 CXX: clang++-11 script: - mkdir -p build - cd build - > cmake -DMAINTAINER_MODE=ON -DCHECK_CODE_QUALITY=ON .. - make -j4 - make -j4 check-clang-tidy check clang-format: <<: *check_stages variables: COMPILER: clang-11 DISTRO: ubuntu CC: clang-11 CXX: clang++-11 script: - mkdir -p build - cd build - > cmake -DMAINTAINER_MODE=ON -DCHECK_CODE_QUALITY=ON .. - make -j4 check-clang-format