diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8a81654f9503543e0a3771068c7bfe2ead420883..f95f90155c5ed113d1ae4e6e28efc11b55f1a6c4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,19 +3,26 @@ image: alpine:3.9 stages: - build - test - - package - - release - notify +.template:only:merge: &only-merge + only: + - merge_requests + +.template:only:master: &only-master + only: + refs: + - master + +.template:only:tag: &only-tag + only: + - /^v.*$/ + except: + - branches -####################################################################################################################### -####################################################################################################################### ####################################################################################################################### # build + test -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# distro.yml - .template:build: dependencies: [] stage: build @@ -37,13 +44,32 @@ stages: - cd build - ctest . --output-on-failure -j $(grep -c processor /proc/cpuinfo) -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# distro_alpine.yml - .config:alpine: &distro_alpine + <<: *only-merge image: alpine:3.9 - only: - - merge_requests + +.config:archlinux: &distro_archlinux + <<: *only-merge + image: archlinux/base + +.config:builder: &distro_builder + image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/alt-builder:latest + +.config:debian: &distro_debian + <<: *only-merge + image: amd64/debian:testing-slim + +.config:opensuse:leap: &distro_opensuse-leap + <<: *only-merge + image: opensuse/leap:latest + +.config:ubuntu:lts: &distro_ubuntu-lts + <<: *only-merge + image: ubuntu:latest + +.config:ubuntu:rolling: &distro_ubuntu-rolling + <<: *only-merge + image: ubuntu:rolling # ----------------------------------------------------------------------------- @@ -61,14 +87,6 @@ test: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: @@ -76,7 +94,6 @@ build: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 @@ -85,15 +102,8 @@ test:archlinux: - 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 @@ -103,8 +113,6 @@ test:archlinux: <<: *distro_builder extends: .template:test -# ----------------------------------------------------------------------------- - build:builder:gcc: extends: .build:builder @@ -123,22 +131,13 @@ test:builder:clang: 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 + - 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 @@ -146,16 +145,7 @@ test:debian: 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 + - apt-get update && apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 # ----------------------------------------------------------------------------- @@ -173,22 +163,13 @@ test: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 + - 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 @@ -196,16 +177,7 @@ test:ubuntu:lts: 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 + - apt-get update && apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 # ----------------------------------------------------------------------------- @@ -213,21 +185,19 @@ 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 + - 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 + - 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:doc: stage: build @@ -241,8 +211,8 @@ doc:doc: - doc/ expire_in: 1 day -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# static-analysis.yml +####################################################################################################################### +# static analysis .template:static-analysis: stage: build @@ -254,11 +224,6 @@ doc:doc: - popd allow_failure: true # TODO: Remove dependencies: [] - only: - - merge_requests - - branches - except: - - tags # ----------------------------------------------------------------------------- @@ -274,333 +239,6 @@ static-analysis:clang-tidy: - jq ".[].file" build/compile_commands.json | tr -d "\"" | grep -v "test-src" | xargs -n1 -P$(grep -c processor /proc/cpuinfo) clang-tidy -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:disco - 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 @@ -609,18 +247,23 @@ release:sources::stable: before_script: - apk add --no-cache curl dependencies: [] - only: - refs: - - master # ----------------------------------------------------------------------------- notify:pyalib: + <<: *only-master 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: +notify:release:stable: + <<: *only-tag + extends: .template:notify + script: + - curl -X POST -F token="$TOKEN_TRIGGER_RELEASE" -F ref=master -F "variables[RELEASE_REF]=$CI_COMMIT_TAG" -F "variables[RELEASE_MODE]=stable" https://gitlab.fit.cvut.cz/api/v4/projects/17683/trigger/pipeline + +notify:release:snapshot: + <<: *only-master 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 + - curl -X POST -F token="$TOKEN_TRIGGER_RELEASE" -F ref=master -F "variables[RELEASE_REF]=CI_COMMIT_SHA" -F "variables[RELEASE_MODE]=snapshot" https://gitlab.fit.cvut.cz/api/v4/projects/17683/trigger/pipeline