Newer
Older
# NOTE #1: Our GitLab CI runs jobs inside Alpine Linux container by default.
#
# NOTE #2: Keep in mind that each job (e.g. test-gcc) is executed in a separate
# isolated environment (it may be even on different machine). There are no
# files implicitly passed between jobs or stages, only artifacts and maybe
# cache (depends on configuration).
- mkdir release
- cd release
- cmake -DCMAKE_BUILD_TYPE=Release ..
- make -j $(grep -c processor /proc/cpuinfo)
expire_in: 1 day
.build:push: &build-push
<<: *build
image: alpine:3.8
before_script:
- apk add --no-cache bash build-base cmake python3 libexecinfo-dev cppunit-dev libxml2-dev tclap-dev readline-dev qt5-qtbase-dev graphviz-dev jsoncpp-dev ${EXTRA_PKGS}
- export CXX=${CXX}
.build:compatibility: &build-compatibility
<<: *build
only:
variables:
- $SCHEDULED_COMPATIBILITY
build:alpine:gcc:
<<: *build-push
build:alpine:clang:
<<: *build-push
CXX: clang++
build:debian:stable:
<<: *build-compatibility
image: amd64/debian:stable-slim
before_script:
- apt-get update
- apt-get install -y build-essential cmake make python3 libcppunit-dev libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev
build:debian:testing:
<<: *build-compatibility
image: amd64/debian:testing-slim
before_script:
- apt-get update
- apt-get install -y build-essential cmake make python3 libcppunit-dev libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev
build:arch:
<<: *build-compatibility
image: archlinux/base:latest
before_script:
- pacman -Syu --noconfirm base-devel cmake make python cppunit libxml2 tclap readline qt5-base graphviz jsoncpp
Tomáš Pecka
committed
build:opensuse:
<<: *build-compatibility
image: opensuse/leap:latest
before_script:
- zypper -n install python3 cmake gcc-c++ curl bash make libxml2-devel cppunit-devel tclap readline-devel libQt5Widgets-devel libQt5Xml-devel graphviz-devel jsoncpp-devel
# gcc 7.3.0 fails with StringTest.h (in variant, it thinks something is uninitialized)
- zypper -n install clang5
- export CXX=clang++-5.0
build:ubuntu:lts:
<<: *build-compatibility
image: ubuntu:latest
before_script:
- apt-get update
- apt-get install -y build-essential cmake make python3 libcppunit-dev libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev
# gcc 7.3.0 fails with StringTest.h (in variant, it thinks something is uninitialized)
- apt-get install -y clang-5.0
- export CXX=clang++-5.0
- export CXXFLAGS=-stdlib=libstdc++
build:ubuntu:rolling:
<<: *build-compatibility
image: ubuntu:rolling
before_script:
- apt-get update
- apt-get install -y build-essential cmake make python3 libcppunit-dev libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev
build:doc:
stage: build
before_script:
- apk add --no-cache doxygen graphviz
allow_failure: true
artifacts:
name: docs
paths:
- make test
# temporary until make tests manages all tests
- mkdir bin
- cd bin
- find .. -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \) -exec test -x {} \; -print | grep -v 'CMakeFiles' | while read line; do ln -s $line $(basename $line); done
- cd ../..
- for test in $(ls tests.*.sh); do ./${test} release/bin $(grep -c processor /proc/cpuinfo) || exit 1; touch release/bin/log_tests.txt; cat release/bin/log_tests.txt; done
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
.test:push: &test-push
<<: *test
image: alpine:3.8
before_script:
- apk add --no-cache bash bc coreutils python3 cmake make libexecinfo cppunit libxml2 tclap readline qt5-qtbase qt5-qtbase-x11 graphviz jsoncpp
.test:compatibility: &test-compatibility
<<: *test
only:
variables:
- $SCHEDULED_COMPATIBILITY
test:alpine:gcc:
<<: *test-push
dependencies:
- build:alpine:gcc
test:alpine:clang:
<<: *test-push
dependencies:
- build:alpine:clang
test:debian:stable:
<<: *test-compatibility
image: amd64/debian:stable-slim
before_script:
- apt-get update
- apt-get install -y build-essential bash bc coreutils cmake make python3 libcppunit-1.13-0v5 libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1
dependencies:
- build:debian:stable
test:debian:testing:
<<: *test-compatibility
image: amd64/debian:testing-slim
before_script:
- apt-get update
- apt-get install -y build-essential bash bc coreutils cmake make python3 libcppunit-1.14 libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1
test:arch:
<<: *test-compatibility
image: archlinux/base:latest
before_script:
- pacman -Syu --noconfirm base-devel bash bc coreutils cmake make python cppunit libxml2 tclap readline qt5-base graphviz jsoncpp
Tomáš Pecka
committed
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
test:opensuse:
<<: *test-compatibility
image: opensuse/leap:latest
before_script:
- zypper -n install bash bc coreutils python3 cmake make libcppunit-1_14-0 libxml2 readline libQt5Widgets5 libQt5Xml5 graphviz libjsoncpp19
dependencies:
- build:opensuse
test:ubuntu:lts:
<<: *test-compatibility
image: ubuntu:latest
before_script:
- apt-get update
- apt-get install -y build-essential bash bc coreutils cmake make python3 libcppunit-1.14-0 libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1
dependencies:
- build:ubuntu:lts
test:ubuntu:rolling:
<<: *test-compatibility
image: ubuntu:rolling
before_script:
- apt-get update
- apt-get install -y build-essential bash bc coreutils cmake make python3 libcppunit-1.14-0 libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1
dependencies:
- build:ubuntu:rolling
#========== Stage release =========
.docker: &docker_template
stage: docker
image: gitlab.fit.cvut.cz:5000/ict/alpine-docker-images/ci:3.8
cache: {} # disable
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: docker
# ---------
IMAGE_CLI: $CI_REGISTRY_IMAGE/cli
IMAGE_GUI: $CI_REGISTRY_IMAGE/gui
IMAGE_ALL: $CI_REGISTRY_IMAGE
# ---------
TAG_NIGHTLY: nightly
TAG_RELEASE: $CI_COMMIT_REF_NAME
TAG_LATEST: latest
services:
- docker:dind
before_script:
- apk add --no-cache docker
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- curl -X POST -F token="$PY_ALIB_TOKEN" -F ref=master https://gitlab.fit.cvut.cz/api/v4/projects/11497/trigger/pipeline
dependencies: []
docker:build-nightly:
<<: *docker_template
only:
- docker build -f extra/docker/Dockerfile.master -t "$IMAGE_ALL:$TAG_NIGHTLY" .
- docker build -f extra/docker/Dockerfile.master-cli -t "$IMAGE_CLI:$TAG_NIGHTLY" .
- docker tag "$IMAGE_ALL:$TAG_NIGHTLY" "$IMAGE_GUI:$TAG_NIGHTLY" # gui-version is now only a symlink to all-version
- docker run "$IMAGE_ALL:$TAG_NIGHTLY" /usr/bin/aql2 --help
- docker run "$IMAGE_CLI:$TAG_NIGHTLY" /usr/bin/aql2 --help
- docker run "$IMAGE_GUI:$TAG_NIGHTLY" /usr/bin/aql2 --help
- docker push "$IMAGE_ALL:$TAG_NIGHTLY"
- docker push "$IMAGE_CLI:$TAG_NIGHTLY"
- docker push "$IMAGE_GUI:$TAG_NIGHTLY"
docker:build-release:
<<: *docker_template
only:
- /^v.*$/
except:
- branches
script:
- docker build -f extra/docker/Dockerfile.master -t "$IMAGE_ALL:$TAG_RELEASE" -t "$IMAGE_ALL:$TAG_LATEST" .
- docker build -f extra/docker/Dockerfile.master-cli -t "$IMAGE_CLI:$TAG_RELEASE" -t "$IMAGE_CLI:$TAG_LATEST" .
- docker tag "$IMAGE_ALL:$TAG_RELEASE" "$IMAGE_GUI:$TAG_RELEASE" # gui-version is now only a symlink to all-version
- docker tag "$IMAGE_ALL:$TAG_LATEST" "$IMAGE_GUI:$TAG_LATEST" # gui-version is now only a symlink to all-version
- docker run "$IMAGE_ALL:$TAG_RELEASE" /usr/bin/aql2 --help
- docker run "$IMAGE_CLI:$TAG_RELEASE" /usr/bin/aql2 --help
- docker run "$IMAGE_GUI:$TAG_RELEASE" /usr/bin/aql2 --help
- docker push "$IMAGE_ALL:$TAG_LATEST"
- docker push "$IMAGE_CLI:$TAG_LATEST"
- docker push "$IMAGE_GUI:$TAG_LATEST"
- docker push "$IMAGE_ALL:$TAG_RELEASE"
- docker push "$IMAGE_CLI:$TAG_RELEASE"
- docker push "$IMAGE_GUI:$TAG_RELEASE"