image: alpine:3.9 stages: - build - test - package - release - notify ####################################################################################################################### ####################################################################################################################### ####################################################################################################################### # build + test # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro.yml .template:build: dependencies: [] stage: build tags: - altbuilder script: - extra/scripts/build.sh -d build -m Release -n artifacts: paths: - build/ expire_in: 1 day .template:test: dependencies: [] stage: test tags: - altbuilder script: - cd build - ctest . --output-on-failure -j $(grep -c processor /proc/cpuinfo) # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro_alpine.yml .config:alpine: &distro_alpine image: alpine:3.9 only: - merge_requests # ----------------------------------------------------------------------------- build:alpine: <<: *distro_alpine extends: .template:build before_script: - apk add --no-cache bash build-base cmake ninja python3 libexecinfo-dev libxml2-dev tclap-dev readline-dev qt5-qtbase-dev graphviz-dev jsoncpp-dev test:alpine: <<: *distro_alpine extends: .template:test dependencies: - build:alpine before_script: - apk add --no-cache bash bc coreutils python3 cmake libexecinfo libxml2 tclap readline qt5-qtbase qt5-qtbase-x11 graphviz jsoncpp # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro_arch.yml .config:archlinux: &distro_archlinux image: archlinux/base only: - merge_requests # ----------------------------------------------------------------------------- build:archlinux: <<: *distro_archlinux extends: .template:build before_script: - pacman -Syu --noconfirm base-devel cmake ninja python libxml2 tclap readline qt5-base graphviz jsoncpp # - pacman -Syu --noconfirm binutils && strip --remove-section=.note.ABI-tag /usr/lib/libQt5Core.so.5 # qt hack test:archlinux: <<: *distro_archlinux extends: .template:test dependencies: - build:archlinux before_script: - pacman -Syu --noconfirm base-devel bash bc coreutils cmake ninja python libxml2 tclap readline qt5-base graphviz jsoncpp # - pacman -Syu --noconfirm binutils && strip --remove-section=.note.ABI-tag /usr/lib/libQt5Core.so.5 # qt hack # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro_builder.yml .config:builder: &distro_builder image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/alt-builder:latest except: - tags .build:builder: <<: *distro_builder extends: .template:build .test:builder: <<: *distro_builder extends: .template:test # ----------------------------------------------------------------------------- build:builder:gcc: extends: .build:builder build:builder:clang: extends: .build:builder variables: CXX: clang++-8 test:builder:gcc: extends: .test:builder dependencies: - build:builder:gcc test:builder:clang: extends: .test:builder dependencies: - build:builder:clang # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro_debian.yml .config:debian: &distro_debian image: amd64/debian:testing-slim only: - merge_requests # ----------------------------------------------------------------------------- build:debian: <<: *distro_debian extends: .template:build before_script: - apt-get update - apt-get install -y build-essential cmake ninja-build python3 libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev test:debian: <<: *distro_debian extends: .template:test dependencies: - build:debian before_script: - apt-get update - apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro_opensuse.yml .config:opensuse:leap: &distro_opensuse-leap image: opensuse/leap:latest only: - merge_requests # ----------------------------------------------------------------------------- build:opensuse:leap: <<: *distro_opensuse-leap extends: .template:build before_script: - zypper -n install python3 cmake gcc-c++ bash ninja libxml2-devel tclap readline-devel libQt5Widgets-devel libQt5Xml-devel graphviz-devel jsoncpp-devel test:opensuse:leap: <<: *distro_opensuse-leap extends: .template:test dependencies: - build:opensuse:leap before_script: - zypper -n install bash cmake libxml2 readline libQt5Widgets5 libQt5Xml5 graphviz libjsoncpp19 # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro_ubuntu-lts.yml .config:ubuntu:lts: &distro_ubuntu-lts image: ubuntu:latest only: - merge_requests # ----------------------------------------------------------------------------- build:ubuntu:lts: <<: *distro_ubuntu-lts extends: .template:build before_script: - apt-get update - apt-get install -y build-essential cmake ninja-build python3 libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev test:ubuntu:lts: <<: *distro_ubuntu-lts extends: .template:test dependencies: - build:ubuntu:lts before_script: - apt-get update - apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # distro_ubuntu-rolling.yml .config:ubuntu:rolling: &distro_ubuntu-rolling image: ubuntu:rolling only: - merge_requests # ----------------------------------------------------------------------------- build:ubuntu:rolling: <<: *distro_ubuntu-rolling extends: .template:build before_script: - apt-get update - apt-get install -y build-essential cmake ninja-build python3 libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev test:ubuntu:rolling: <<: *distro_ubuntu-rolling extends: .template:test before_script: - apt-get update - apt-get install -y build-essential bash cmake libxml2 libreadline8 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 dependencies: - build:ubuntu:rolling # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # doc.yml doc:doc: stage: build before_script: - apk add --no-cache doxygen graphviz script: - doxygen artifacts: name: docs paths: - doc/ expire_in: 1 day # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # static-analysis.yml .template:static-analysis: stage: build image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/alt-builder:latest before_script: - mkdir -p build && pushd build - ../CMake/generate.py -wm - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. -GNinja - popd allow_failure: true # TODO: Remove dependencies: [] only: - merge_requests - branches except: - tags # ----------------------------------------------------------------------------- static-analysis:cppcheck: extends: .template:static-analysis script: - cppcheck -q --enable=all --project=build/compile_commands.json --suppress="*:*/contrib/*" --error-exitcode=1 static-analysis:clang-tidy: extends: .template:static-analysis script: - jq ".[].file" build/compile_commands.json | tr -d "\"" | grep -v "test-src" | xargs -n1 -P$(grep -c processor /proc/cpuinfo) clang-tidy-8 -p build/ ####################################################################################################################### ####################################################################################################################### ####################################################################################################################### # package + release # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # release.yml .template:only:snapshot: &release_snapshot only: refs: - master .template:only:tag: &release_stable only: - tags - /^v.*$/ .template:package: stage: package tags: - altbuilder dependencies: [] script: - LINUX=$(echo "$CI_JOB_NAME" | cut -d":" -f2) - MODE=$(echo "$CI_JOB_NAME" | cut -d":" -f4) - export DISTRIBUTION=$(echo "$CI_JOB_NAME" | cut -d":" -f3) - if [[ $LINUX == "ubuntu" ]]; then LINUX="debian"; fi - ./extra/scripts/CD/packaging/package.sh $MODE $LINUX package . .docker: &docker image: docker:dind cache: {} # disable services: - docker:dind variables: DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "/certs" before_script: - apk add docker bash - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker info .package:docker: <<: *docker extends: .template:package artifacts: paths: - images.tar expire_in: 1 day package:docker::snapshot: <<: *release_snapshot extends: .package:docker package:docker::stable: <<: *release_stable extends: .package:docker .package:sources: image: alpine:latest extends: .template:package before_script: - apk add bash artifacts: paths: - "*.tar.gz*" expire_in: 1 day package:sources::snapshot: <<: *release_snapshot extends: .package:sources package:sources::stable: <<: *release_stable extends: .package:sources .package:archlinux: image: archlinux/base extends: .template:package artifacts: paths: - "*.pkg.tar.xz*" expire_in: 1 day variables: PACKAGER: "Tomáš Pecka <peckato1@fit.cvut.cz>" package:archlinux::snapshot: <<: *release_snapshot extends: .package:archlinux package:archlinux::stable: <<: *release_stable extends: .package:archlinux .package:debian: extends: .template:package artifacts: paths: - "*.deb" - "*.ddeb" - "*.changes" - "*.buildinfo" expire_in: 1 day variables: LOGNAME: "peckato1" DEBFULLNAME: "Tomáš Pecka" DEBEMAIL: "peckato1@fit.cvut.cz" # --------------------------- .package:debian:buster: image: amd64/debian:buster extends: .package:debian .package:debian:bullseye: image: amd64/debian:bullseye extends: .package:debian package:debian:buster:snapshot: <<: *release_snapshot extends: .package:debian:buster package:debian:buster:stable: <<: *release_stable extends: .package:debian:buster package:debian:bullseye:snapshot: <<: *release_snapshot extends: .package:debian:bullseye package:debian:bullseye:stable: <<: *release_stable extends: .package:debian:bullseye # --------------------------- .package:ubuntu:bionic: image: ubuntu:bionic extends: .package:debian .package:ubuntu:cosmic: image: ubuntu:bionic extends: .package:debian .package:ubuntu:disco: image: ubuntu:bionic extends: .package:debian package:ubuntu:bionic:snapshot: <<: *release_snapshot extends: .package:ubuntu:bionic package:ubuntu:bionic:stable: <<: *release_stable extends: .package:ubuntu:bionic package:ubuntu:cosmic:snapshot: <<: *release_snapshot extends: .package:ubuntu:cosmic package:ubuntu:cosmic:stable: <<: *release_stable extends: .package:ubuntu:cosmic package:ubuntu:disco:snapshot: <<: *release_snapshot extends: .package:ubuntu:disco package:ubuntu:disco:stable: <<: *release_stable extends: .package:ubuntu:disco # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # release.yml .template:release: stage: release dependencies: [] tags: - altvm script: - LINUX=$(echo "$CI_JOB_NAME" | cut -d":" -f2) - MODE=$(echo "$CI_JOB_NAME" | cut -d":" -f4) - export DISTRIBUTION=$(echo "$CI_JOB_NAME" | cut -d":" -f3) - if [[ $LINUX == "ubuntu" ]]; then LINUX="debian"; fi - extra/scripts/CD/packaging/package.sh $MODE $LINUX deploy . .release:docker: <<: *docker extends: .template:release tags: - altbuilder environment: name: docker-nightly url: https://gitlab.fit.cvut.cz/algorithms-library-toolkit/automata-library/container_registry release:docker::snapshot: <<: *release_snapshot extends: .release:docker dependencies: - package:docker::snapshot release:docker::stable: <<: *release_stable extends: .release:docker dependencies: - package:docker::stable .release:archlinux: extends: .template:release environment: name: archlinux url: https://repository.alt.pecka.me/archlinux/ release:archlinux::snapshot: <<: *release_snapshot extends: .release:archlinux dependencies: - package:archlinux::snapshot release:archlinux:release: <<: *release_stable extends: .release:archlinux dependencies: - package:archlinux::stable .release:debian: extends: .template:release environment: name: debian url: https://repository.alt.pecka.me/debian/ release:debian:buster:snapshot: <<: *release_snapshot extends: .release:debian dependencies: - package:debian:buster:snapshot release:debian:buster:stable: <<: *release_stable extends: .release:debian dependencies: - package:debian:buster:stable release:debian:bullseye:snapshot: <<: *release_snapshot extends: .release:debian dependencies: - package:debian:bullseye:snapshot release:debian:bullseye:stable: <<: *release_stable extends: .release:debian dependencies: - package:debian:bullseye:stable release:ubuntu:bionic:snapshot: <<: *release_snapshot extends: .release:debian dependencies: - package:ubuntu:bionic:snapshot release:ubuntu:bionic:stable: <<: *release_stable extends: .release:debian dependencies: - package:ubuntu:bionic:stable release:ubuntu:cosmic:snapshot: <<: *release_snapshot extends: .release:debian dependencies: - package:ubuntu:cosmic:snapshot release:ubuntu:cosmic:stable: <<: *release_stable extends: .release:debian dependencies: - package:ubuntu:cosmic:stable release:ubuntu:disco:snapshot: <<: *release_snapshot extends: .release:debian dependencies: - package:ubuntu:disco:snapshot release:ubuntu:disco:stable: <<: *release_stable extends: .release:debian dependencies: - package:ubuntu:disco:stable .release:sources: extends: .template:release environment: name: sources url: https://repository.alt.pecka.me/sources/ release:sources::snapshot: <<: *release_snapshot extends: .release:sources dependencies: - package:sources::snapshot release:sources::stable: <<: *release_stable extends: .release:sources dependencies: - package:sources::stable ####################################################################################################################### ####################################################################################################################### ####################################################################################################################### # notify .template:notify: stage: notify before_script: - apk add --no-cache curl dependencies: [] only: refs: - master # ----------------------------------------------------------------------------- notify:pyalib: extends: .template:notify script: - curl -X POST -F token="$TOKEN_TRIGGER_PYALIB" -F ref=master https://gitlab.fit.cvut.cz/api/v4/projects/11497/trigger/pipeline notify:website: extends: .template:notify script: - curl -X POST -F token="$TOKEN_TRIGGER_WEBSITE" -F ref=master https://gitlab.fit.cvut.cz/api/v4/projects/15509/trigger/pipeline