1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2025-02-10 16:08:31 +00:00

Refactor gitlab CI.

This commit is contained in:
Brenden Matthews 2019-02-24 10:24:32 -05:00
parent f29da158cc
commit 08f7cf0605

View File

@ -3,7 +3,7 @@ stages:
- dependencies - dependencies
- build - build
- test - test
- coverage - deploy
variables: variables:
CC: clang-7 CC: clang-7
@ -11,219 +11,79 @@ variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://localhost:2375/ DOCKER_HOST: tcp://localhost:2375/
.docker_builder: &docker_builder .docker_base_builder: &docker_base_builder
retry: retry:
max: 2 max: 2
when: when:
- runner_system_failure - runner_system_failure
- stuck_or_timeout_failure - stuck_or_timeout_failure
stage: dependencies stage: base
image: docker:stable image: docker:stable
services: services:
- docker:dind - docker:dind
only:
changes:
- tests/dockerfiles/Dockerfile.$2-base
before_script: before_script:
- set -- $CI_JOB_NAME
- export DISTRO=$2
- "echo \"Distro: ${DISTRO}\nDocker base: ${DOCKER_BASE_IMAGE}\""
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker pull $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest || true - docker pull $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest || true
builder-ubuntu-base:
<<: *docker_builder
stage: base
variables:
DISTRO: ubuntu
only:
changes:
- tests/dockerfiles/Dockerfile.ubuntu-base
script: script:
- cd tests/dockerfiles - cd tests/dockerfiles
- docker pull ubuntu:bionic || true - docker pull $DOCKER_BASE_IMAGE || true
- docker build -f Dockerfile.$DISTRO-base --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest . - docker build -f Dockerfile.$DISTRO-base --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_REF_SLUG .
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA - docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest - docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_REF_SLUG
builder-fedora-base: builder ubuntu base:
<<: *docker_builder <<: *docker_base_builder
stage: base
variables: variables:
DISTRO: fedora DOCKER_BASE_IMAGE: ubuntu:bionic
only:
changes:
- tests/dockerfiles/Dockerfile.fedora-base
script:
- cd tests/dockerfiles
- docker pull fedora:latest || true
- docker build -f Dockerfile.$DISTRO-base --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest .
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest
builder-centos6-base: builder fedora base:
<<: *docker_builder <<: *docker_base_builder
stage: base
variables: variables:
DISTRO: centos6 DOCKER_BASE_IMAGE: fedora:latest
only:
changes:
- tests/dockerfiles/Dockerfile.centos6-base
script:
- cd tests/dockerfiles
- docker pull centos:6 || true
- docker build -f Dockerfile.$DISTRO-base --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest .
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest
builder-centos7-base: builder centos6 base:
<<: *docker_builder <<: *docker_base_builder
stage: base
variables: variables:
DISTRO: centos7 DOCKER_BASE_IMAGE: centos:6
only:
changes:
- tests/dockerfiles/Dockerfile.centos7-base
script:
- cd tests/dockerfiles
- docker pull centos:7 || true
- docker build -f Dockerfile.$DISTRO-base --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest .
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest
.builder_script: &builder_script builder centos7 base:
<<: *docker_base_builder
variables:
DOCKER_BASE_IMAGE: centos:7
.docker_builder: &docker_builder
<<: *docker_base_builder
stage: dependencies
script: script:
- set -- $CI_JOB_NAME
- export DISTRO=$2
- export COMPILER=$3
- "echo \"Distro: ${DISTRO}\nCompiler: ${COMPILER}\""
- cd tests/dockerfiles - cd tests/dockerfiles
- docker pull $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest || true - docker pull $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest || true
- docker build -f Dockerfile.$DISTRO-$COMPILER --build-arg IMAGE=$CI_REGISTRY_IMAGE --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest . - docker pull $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_REF_SLUG || true
- docker build -f Dockerfile.$DISTRO-$COMPILER --build-arg IMAGE=$CI_REGISTRY_IMAGE --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest --cache-from $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_REF_SLUG --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_REF_SLUG .
- docker push ${CI_REGISTRY_IMAGE}/builder/$DISTRO-$COMPILER:$CI_COMMIT_SHA - docker push ${CI_REGISTRY_IMAGE}/builder/$DISTRO-$COMPILER:$CI_COMMIT_SHA
- docker push ${CI_REGISTRY_IMAGE}/builder/$DISTRO-$COMPILER:latest - docker push ${CI_REGISTRY_IMAGE}/builder/$DISTRO-$COMPILER:$CI_COMMIT_REF_SLUG
builder-ubuntu-clang-7: builder ubuntu clang-7: *docker_builder
<<: *docker_builder builder ubuntu clang-8: *docker_builder
only: builder ubuntu gcc-5: *docker_builder
changes: builder ubuntu gcc-6: *docker_builder
- tests/dockerfiles/Dockerfile.ubuntu-base builder ubuntu gcc-7: *docker_builder
- tests/dockerfiles/Dockerfile.ubuntu-clang-7 builder ubuntu gcc-8: *docker_builder
variables: builder fedora gcc-8: *docker_builder
COMPILER: clang-7 builder fedora clang-7: *docker_builder
DISTRO: ubuntu builder centos6 gcc-7: *docker_builder
<<: *builder_script builder centos7 gcc-7: *docker_builder
builder centos7 gcc-8: *docker_builder
builder-ubuntu-clang-8: builder centos7 clang-7: *docker_builder
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.ubuntu-base
- tests/dockerfiles/Dockerfile.ubuntu-clang-8
variables:
COMPILER: clang-8
DISTRO: ubuntu
<<: *builder_script
builder-ubuntu-gcc-5:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.ubuntu-base
- tests/dockerfiles/Dockerfile.ubuntu-gcc-5
variables:
COMPILER: gcc-5
DISTRO: ubuntu
<<: *builder_script
builder-ubuntu-gcc-6:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.ubuntu-base
- tests/dockerfiles/Dockerfile.ubuntu-gcc-6
variables:
COMPILER: gcc-6
DISTRO: ubuntu
<<: *builder_script
builder-ubuntu-gcc-7:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.ubuntu-base
- tests/dockerfiles/Dockerfile.ubuntu-gcc-7
variables:
COMPILER: gcc-7
DISTRO: ubuntu
<<: *builder_script
builder-ubuntu-gcc-8:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.ubuntu-base
- tests/dockerfiles/Dockerfile.ubuntu-gcc-8
variables:
COMPILER: gcc-8
DISTRO: ubuntu
<<: *builder_script
builder-fedora-gcc-8:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.fedora-base
- tests/dockerfiles/Dockerfile.fedora-gcc-8
variables:
COMPILER: gcc-8
DISTRO: fedora
<<: *builder_script
builder-fedora-clang-7:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.fedora-base
- tests/dockerfiles/Dockerfile.fedora-clang-7
variables:
COMPILER: clang-7
DISTRO: fedora
<<: *builder_script
builder-centos6-gcc-7:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.centos6-base
- tests/dockerfiles/Dockerfile.centos6-gcc-7
variables:
COMPILER: gcc-7
DISTRO: centos6
<<: *builder_script
builder-centos7-gcc-7:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.centos7-base
- tests/dockerfiles/Dockerfile.centos7-gcc-7
variables:
COMPILER: gcc-7
DISTRO: centos7
<<: *builder_script
builder-centos7-gcc-8:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.centos7-base
- tests/dockerfiles/Dockerfile.centos7-gcc-8
variables:
COMPILER: gcc-8
DISTRO: centos7
<<: *builder_script
builder-centos7-clang-7:
<<: *docker_builder
only:
changes:
- tests/dockerfiles/Dockerfile.centos7-base
- tests/dockerfiles/Dockerfile.centos7-clang-7
variables:
COMPILER: clang-7
DISTRO: centos7
<<: *builder_script
.build_stages: &build_stages .build_stages: &build_stages
retry: retry:
@ -234,6 +94,7 @@ builder-centos7-clang-7:
image: $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest image: $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest
stage: build stage: build
script: script:
- "echo \"Distro: ${DISTRO}\nCompiler: ${COMPILER}\nCC: $CC\nCXX: $CXX\""
- mkdir build - mkdir build
- cd build - cd build
- | - |
@ -259,8 +120,6 @@ builder-centos7-clang-7:
- make -j4 - make -j4
.build_variables: &build_variables .build_variables: &build_variables
COMPILER: clang-7
DISTRO: ubuntu
CC: clang-7 CC: clang-7
CXX: clang++-7 CXX: clang++-7
LINKER_FLAGS: "" LINKER_FLAGS: ""
@ -271,80 +130,88 @@ builder-centos7-clang-7:
BUILD_LUA_CAIRO: "ON" BUILD_LUA_CAIRO: "ON"
BUILD_LUA_RSVG: "ON" BUILD_LUA_RSVG: "ON"
ubuntu-clang-7: ubuntu clang-7:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
DISTRO: ubuntu
COMPILER: clang-7
artifacts: artifacts:
expire_in: 1 day expire_in: 1 day
paths: paths:
- build/ - build/
ubuntu-clang-8: ubuntu clang-8:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
DISTRO: ubuntu
COMPILER: clang-8 COMPILER: clang-8
CC: clang-8 CC: clang-8
CXX: clang++-8 CXX: clang++-8
ubuntu-gcc-5: ubuntu gcc-5:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
DISTRO: ubuntu
COMPILER: gcc-5 COMPILER: gcc-5
CC: gcc-5 CC: gcc-5
CXX: g++-5 CXX: g++-5
ubuntu-gcc-6: ubuntu gcc-6:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
DISTRO: ubuntu
COMPILER: gcc-6 COMPILER: gcc-6
CC: gcc-6 CC: gcc-6
CXX: g++-6 CXX: g++-6
ubuntu-gcc-7: ubuntu gcc-7:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
DISTRO: ubuntu
COMPILER: gcc-7 COMPILER: gcc-7
CC: gcc-7 CC: gcc-7
CXX: g++-7 CXX: g++-7
ubuntu-gcc-8: ubuntu gcc-8:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
DISTRO: ubuntu
COMPILER: gcc-8 COMPILER: gcc-8
CC: gcc-8 CC: gcc-8
CXX: g++-8 CXX: g++-8
fedora-gcc-8: fedora gcc-8:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
COMPILER: gcc-8
DISTRO: fedora DISTRO: fedora
COMPILER: gcc-8
CC: gcc CC: gcc
CXX: g++ CXX: g++
BUILD_AUDACIOUS: "OFF" BUILD_AUDACIOUS: "OFF"
fedora-clang-7: fedora clang-7:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
DISTRO: fedora DISTRO: fedora
COMPILER: clang-7
CC: clang CC: clang
CXX: clang++ CXX: clang++
BUILD_AUDACIOUS: "OFF" BUILD_AUDACIOUS: "OFF"
centos6-gcc-7: centos6 gcc-7:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
COMPILER: gcc-7
DISTRO: centos6 DISTRO: centos6
COMPILER: gcc-7
CC: gcc CC: gcc
CXX: g++ CXX: g++
CMAKE: cmake3 CMAKE: cmake3
@ -359,12 +226,12 @@ centos6-gcc-7:
before_script: before_script:
- source /opt/rh/devtoolset-7/enable - source /opt/rh/devtoolset-7/enable
centos7-gcc-7: centos7 gcc-7:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
COMPILER: gcc-7
DISTRO: centos7 DISTRO: centos7
COMPILER: gcc-7
CC: gcc CC: gcc
CXX: g++ CXX: g++
CMAKE: cmake3 CMAKE: cmake3
@ -375,12 +242,12 @@ centos7-gcc-7:
before_script: before_script:
- source /opt/rh/devtoolset-7/enable - source /opt/rh/devtoolset-7/enable
centos7-gcc-8: centos7 gcc-8:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
COMPILER: gcc-8
DISTRO: centos7 DISTRO: centos7
COMPILER: gcc-8
CC: gcc CC: gcc
CXX: g++ CXX: g++
CMAKE: cmake3 CMAKE: cmake3
@ -391,12 +258,12 @@ centos7-gcc-8:
before_script: before_script:
- source /opt/rh/devtoolset-8/enable - source /opt/rh/devtoolset-8/enable
centos7-clang-7: centos7 clang-7:
<<: *build_stages <<: *build_stages
variables: variables:
<<: *build_variables <<: *build_variables
COMPILER: clang-7
DISTRO: centos7 DISTRO: centos7
COMPILER: clang-7
CC: clang CC: clang
CXX: clang++ CXX: clang++
BUILD_AUDACIOUS: "OFF" BUILD_AUDACIOUS: "OFF"
@ -415,16 +282,18 @@ centos7-clang-7:
variables: variables:
COMPILER: clang-7 COMPILER: clang-7
DISTRO: ubuntu DISTRO: ubuntu
image: $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest image: $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_REF_SLUG
stage: test stage: test
test: test and coverage:
<<: *test_stages <<: *test_stages
script: script:
- "echo \"Distro: ${DISTRO}\nCompiler: ${COMPILER}\nCC: $CC\nCXX: $CXX\""
- cd build - cd build
- cmake -DCMAKE_SOURCE_DIR=$(dirname `pwd`) -DCMAKE_BINARY_DIR=`pwd` -DMAINTAINER_MODE=ON -DBUILD_TESTS=ON .. - cmake -DCMAKE_SOURCE_DIR=$(dirname `pwd`) -DCMAKE_BINARY_DIR=`pwd` -DMAINTAINER_MODE=ON -DBUILD_TESTS=ON ..
- make -j4 - make -j4
- make -j4 test - make -j4 test
- make -j4 test-conky-coverage-txt
check-clang-tidy: check-clang-tidy:
<<: *test_stages <<: *test_stages
@ -440,10 +309,59 @@ check-clang-format:
- cmake -DCMAKE_SOURCE_DIR=$(dirname `pwd`) -DCMAKE_BINARY_DIR=`pwd` -DMAINTAINER_MODE=ON -DCHECK_CODE_QUALITY=ON .. - cmake -DCMAKE_SOURCE_DIR=$(dirname `pwd`) -DCMAKE_BINARY_DIR=`pwd` -DMAINTAINER_MODE=ON -DCHECK_CODE_QUALITY=ON ..
- make -j4 check-clang-format - make -j4 check-clang-format
coverage: .push_base_images: &push_base_images
<<: *test_stages retry:
stage: coverage max: 2
when:
- runner_system_failure
- stuck_or_timeout_failure
stage: deploy
image: docker:stable
services:
- docker:dind
only:
refs:
- master
- tags
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
script: script:
- cd build - set -- $CI_JOB_NAME
- cmake -DCMAKE_SOURCE_DIR=$(dirname `pwd`) -DCMAKE_BINARY_DIR=`pwd` -DMAINTAINER_MODE=ON -DBUILD_TESTS=ON .. - export DISTRO=$2
- make test-conky-coverage-txt - 'echo "Distro: ${DISTRO}"'
- docker pull $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE/builder/$DISTRO-base:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-base:latest
push ubuntu base: *push_base_images
push centos6 base: *push_base_images
push centos7 base: *push_base_images
push fedora base: *push_base_images
.push_images: &push_images
<<: *push_base_images
only:
refs:
- master
- tags
script:
- set -- $CI_JOB_NAME
- export DISTRO=$2
- export COMPILER=$3
- "echo \"Distro: ${DISTRO}\nCompiler: ${COMPILER}\""
- docker pull $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest
- docker push $CI_REGISTRY_IMAGE/builder/$DISTRO-$COMPILER:latest
push ubuntu clang-7: *push_images
push ubuntu clang-8: *push_images
push ubuntu gcc-5: *push_images
push ubuntu gcc-6: *push_images
push ubuntu gcc-7: *push_images
push ubuntu gcc-8: *push_images
push fedora gcc-8: *push_images
push fedora clang-7: *push_images
push centos6 gcc-7: *push_images
push centos7 gcc-7: *push_images
push centos7 gcc-8: *push_images
push centos7 clang-7: *push_images