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
Tomáš Pecka
committed
except:
variables:
- $SCHEDULED_NIGHTLY
.build:compatibility: &build-compatibility
<<: *build
only:
variables:
- $SCHEDULED_COMPATIBILITY
build:alpine:gcc:
<<: *build-push
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
build:alpine:clang:
<<: *build-push
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 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
- pacman -Syu --noconfirm binutils
- strip --remove-section=.note.ABI-tag /usr/lib/libQt5Core.so.5
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:
.test:push: &test-push
<<: *test
Tomáš Pecka
committed
except:
variables:
- $SCHEDULED_NIGHTLY
.test:compatibility: &test-compatibility
<<: *test
only:
variables:
- $SCHEDULED_COMPATIBILITY
test:alpine:gcc:
<<: *test-push
before_script:
- apk add --no-cache bash bc coreutils python3 cmake make libexecinfo cppunit libxml2 tclap readline qt5-qtbase qt5-qtbase-x11 graphviz jsoncpp
dependencies:
- build:alpine:gcc
test:alpine:clang:
<<: *test-push
before_script:
- apk add --no-cache bash bc coreutils python3 cmake make libexecinfo cppunit libxml2 tclap readline qt5-qtbase qt5-qtbase-x11 graphviz jsoncpp
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
- pacman -Syu --noconfirm binutils
- strip --remove-section=.note.ABI-tag /usr/lib/libQt5Core.so.5
Tomáš Pecka
committed
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
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
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"