Newer
Older
.template:only:default: &only-default
- branches
- tags
.template:only:merge-and-master: &only-merge-and-master
only:
- merge_requests
- master
- tags
.template:only:master: &only-master
only:
refs:
- master
.template:only:tag: &only-tag
only:
- /^v.*$/
except:
- branches
#######################################################################################################################
# build + test
- mkdir -p build && cd build
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -GNinja ..
- ninja
- DESTDIR="." ninja install
script:
- cd build
- ctest . --output-on-failure -j $(grep -c processor /proc/cpuinfo)
image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/infrastructure/ci-docker-images/alt-builder:latest
.build:builder:
<<: *distro_builder
extends: .template:build
.test:builder:
<<: *distro_builder
extends: .template:test
build:builder:clang-sanitizers:
CXXFLAGS: "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all" # -stdlib=libc++
test:builder:gcc:
extends: .test:builder
dependencies:
- build:builder:gcc
test:builder:clang-sanitizers:
- build:builder:clang-sanitizers
#######################################################################################################################
# doc
image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/infrastructure/ci-docker-images/alt-builder:latest
- apt-get update && apt-get install -y doxygen graphviz
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_DOCS=1 -GNinja ..
#######################################################################################################################
# package
.template:package:
- apkg build
artifacts:
paths:
- pkg/pkgs
package:arch:rolling:
extends: .template:package
image: archlinux:latest
before_script:
- pacman -Sy --noconfirm python-pip git sudo binutils fakeroot
- pacman -Sy --noconfirm cmake gcc make # https://gitlab.nic.cz/packaging/apkg/-/issues/64
- echo "MAKEFLAGS=\"\$MAKEFLAGS -j$(nproc)\"" >> /etc/makepkg.conf
- pip install apkg
script: # A little dance with apkg because build step must be done as non-root (makepkg) and we need everything to be writable by nobody
- apkg build-dep
- chown -R nobody:nobody .
- sudo -u nobody apkg build
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
166
167
168
169
170
171
172
173
174
175
.package:deb:
extends: .template:package
before_script:
- apt-get update && apt-get install -y python3-pip git
- ${PIP_EXECUTABLE} install apkg
variables:
PIP_EXECUTABLE: pip
DEBIAN_FRONTEND: noninteractive
package:debian:bullseye: # deb-11
extends: .package:deb
image: amd64/debian:bullseye
package:debian:bookworm: # deb-testing
extends: .package:deb
image: amd64/debian:bookworm
script:
- apkg build-dep --distro debian-98 # otherwise identifies as "debian"
- apkg build --distro debian-98
package:debian:sid: # deb-unstable
extends: .package:deb
image: amd64/debian:bookworm
script:
- apkg build-dep --distro debian-99 # otherwise identifies as "debian"
- apkg build --distro debian-99
package:ubuntu:20.04:
extends: .package:deb
image: ubuntu:20.04
variables:
CXX: g++-10
package:ubuntu:21.04:
extends: .package:deb
image: ubuntu:21.04
package:ubuntu:21.10:
extends: .package:deb
image: ubuntu:21.10
.package:opensuse:
extends: .template:package
before_script:
- zypper install --no-confirm python3-pip git rpm-build
- pip3 install apkg
package:opensuse:tumbleweed:
extends: .package:opensuse
image: opensuse/tumbleweed
variables:
CXX: g++-11
package:opensuse:leap:15.3:
extends: .package:opensuse
image: opensuse/leap:15.3
variables:
CXX: g++-11
package:opensuse:leap:15.4:
extends: .package:opensuse
image: opensuse/leap:15.4
variables:
CXX: g++-11
.package:fedora:
extends: .template:package
before_script:
- dnf install -y python3-pip git rpm-build
- pip3 install apkg
package:fedora:34:
extends: .package:fedora
image: fedora:34
package:fedora:35:
extends: .package:fedora
image: fedora:35
packages:
stage: packaging
dependencies:
- package:arch:rolling
- package:ubuntu:20.04
- package:ubuntu:21.04
- package:ubuntu:21.10
- package:debian:bullseye
- package:debian:bookworm
- package:debian:sid
- package:opensuse:tumbleweed
- package:opensuse:leap:15.3
- package:opensuse:leap:15.4
- package:fedora:34
- package:fedora:35
script:
- echo "Hi, I can't be empty"
artifacts:
paths:
- pkg/pkgs
expire_in: 3 weeks
#######################################################################################################################
# static analysis
image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/infrastructure/ci-docker-images/alt-builder:latest
- cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. -GNinja
- popd
allow_failure: true # TODO: Remove
dependencies: []
# -----------------------------------------------------------------------------
static-analysis:cppcheck:
extends: .template:static-analysis
- cppcheck -q --enable=all --project=build/compile_commands.json --suppress="*:*/lib/*" --error-exitcode=1
static-analysis:clang-tidy:
extends: .template:static-analysis
variables:
CXX: clang++
- jq ".[].file" build/compile_commands.json | tr -d "\"" | grep -v "test-src" | xargs -n1 -P$(grep -c processor /proc/cpuinfo) clang-tidy -quiet -p build/ 2>&1 | grep -v "warnings generated"
static-analysis:sources-check:
extends: .template:static-analysis
script:
- python3 extra/scripts/sources-check.py .
#######################################################################################################################
# notify
script:
- curl -X POST -F token="$TOKEN" -F ref=master $PARAMS https://gitlab.fit.cvut.cz/api/v4/projects/$PROJECT_ID/trigger/pipeline
# -----------------------------------------------------------------------------
variables:
TOKEN: "$TOKEN_TRIGGER_PYALIB"
PROJECT_ID: "11497"
notify:release:stable:
<<: *only-tag
extends: .template:notify
variables:
TOKEN: "$TOKEN_TRIGGER_RELEASE"
PROJECT_ID: "17683"
PARAMS: "-F variables[RELEASE_REF]=$CI_COMMIT_TAG -F variables[RELEASE_MODE]=stable"
notify:release:snapshot:
<<: *only-master
extends: .template:notify
variables:
TOKEN: "$TOKEN_TRIGGER_RELEASE"
PROJECT_ID: "17683"
PARAMS: "-F variables[RELEASE_REF]=$CI_COMMIT_SHA -F variables[RELEASE_MODE]=snapshot"