From 40cfd8e32a88270d4537af1ef4cde9aeab82f436 Mon Sep 17 00:00:00 2001 From: Tomas Pecka <tomas.pecka@fit.cvut.cz> Date: Sun, 7 Jul 2019 15:23:11 +0200 Subject: [PATCH] CI: Redesign --- .gitlab-ci.yml | 658 +++++++++++++++++++++++++++---------------------- 1 file changed, 360 insertions(+), 298 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a86bf2b771..d0d8aad735 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,301 +1,380 @@ stages: - build - test - - deploy - - publish + - package + - release + - notify -# ################################################################################################# -# runs -.config:run:compatibility_only: &config_run_only_compatibility - only: - variables: - - $SCHEDULED_COMPATIBILITY - -.config:run:nightly_only: &config_run_only_nightly - only: - variables: - - $SCHEDULED_NIGHTLY -.config:run:nightly_except: &config_run_except_nightly - except: - variables: - - $SCHEDULED_NIGHTLY +####################################################################################################################### +####################################################################################################################### +####################################################################################################################### +# build + test -.config:run:release_tag: &config_run_only_release - only: - - /^v.*$/ - except: - - branches +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# distro.yml -# ################################################################################################# -# distro builds and tests config -.config: &config_buildbase - <<: *config_run_except_nightly +.template:build: + dependencies: [] + stage: build + script: + - mkdir -p build && cd build + - ../CMake/generate.py -wm + - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. -GNinja + - ninja -j $(grep -c processor /proc/cpuinfo) + artifacts: + paths: + - build/ + expire_in: 1 day -.config:builder: &config_builder - image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/alt-builder:latest - <<: *config_buildbase +.template:test: + dependencies: [] + stage: test + script: + - cd build + - ctest . --output-on-failure -j $(grep -c processor /proc/cpuinfo) -.config:arch: &config_arch - image: archlinux/base - <<: *config_buildbase - <<: *config_run_only_compatibility +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# distro_alpine.yml -.config:alpine: &config_alpine +.config:alpine: &distro_alpine image: alpine:3.9 - <<: *config_buildbase - <<: *config_run_only_compatibility - -.config:debian-testing: &config_debiantesting - image: amd64/debian:testing-slim - <<: *config_buildbase - <<: *config_run_only_compatibility + only: + - merge_requests -.config:debian-testing:clang: &config_debiantesting_clang - image: amd64/debian:testing-slim - <<: *config_buildbase - <<: *config_run_only_compatibility +# ----------------------------------------------------------------------------- -.config:debian-stable: &config_debianstable - image: amd64/debian:stable-slim - <<: *config_buildbase - <<: *config_run_only_compatibility +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 -.config:opensuse-leap: &config_opensuseleap - image: opensuse/leap:latest - <<: *config_buildbase - <<: *config_run_only_compatibility +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 -.config:ubuntu-lts: &config_ubuntults - image: ubuntu:latest - <<: *config_buildbase - <<: *config_run_only_compatibility +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# distro_arch.yml -.config:ubuntu-rolling: &config_ubunturolling - image: ubuntu:rolling - <<: *config_buildbase - <<: *config_run_only_compatibility +.config:archlinux: &distro_archlinux + image: archlinux/base + only: + - merge_requests -# ################################################################################################# -# stage: build +# ----------------------------------------------------------------------------- -# ----------------------------------------------- -# static tests +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 -.static: &static_template - <<: *config_run_except_nightly - stage: build - image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/alt-builder:latest +test:archlinux: + <<: *distro_archlinux + extends: .template:test + dependencies: + - build:archlinux before_script: - - mkdir -p release && pushd release - - ../CMake/generate.py -wm - - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. -GNinja - - popd - allow_failure: true + - 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 -static:cppcheck: - <<: *static_template - script: - - cppcheck -q --enable=all --project=release/compile_commands.json --suppress="*:*/contrib/*" --error-exitcode=1 +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# distro_builder.yml -static:clang-tidy: - <<: *static_template - script: - - jq ".[].file" release/compile_commands.json | tr -d "\"" | grep -v "test-src" | xargs -n1 -P$(grep -c processor /proc/cpuinfo) clang-tidy-8 -p release/ +.config:builder: &distro_builder + image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/alt-builder:latest + except: + - tags -# ----------------------------------------------- -# build +.build:builder: + <<: *distro_builder + extends: .template:build -.build: &template_build - stage: build - script: - - mkdir -p release && cd release - - ../CMake/generate.py -wm - - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. -GNinja - - ninja -j $(grep -c processor /proc/cpuinfo) - artifacts: - paths: - - release/ - expire_in: 1 day +.test:builder: + <<: *distro_builder + extends: .template:test + +# ----------------------------------------------------------------------------- build:builder:gcc: - <<: *config_builder - <<: *template_build + extends: .build:builder build:builder:clang: - <<: *config_builder - <<: *template_build + extends: .build:builder variables: CXX: clang++-8 -build:arch: - <<: *config_arch - <<: *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:builder:gcc: + extends: .test:builder + dependencies: + - build:builder:gcc -build:alpine: - <<: *config_alpine - <<: *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: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:stable: -# <<: *config_debianstable -# <<: *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 +# ----------------------------------------------------------------------------- -build:debian:testing: - <<: *config_debiantesting - <<: *template_build +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 -build:debian:testing:clang: - <<: *config_debiantesting_clang - <<: *template_build +test:debian: + <<: *distro_debian + extends: .template:test + dependencies: + - build:debian 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 ninja-build - - apt-get install -y clang-7 lld - variables: - CXX: clang++-7 + - apt-get update + - apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 + +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# distro_opensuse.yml -build:opensuse-leap: - <<: *config_opensuseleap - <<: *template_build +.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: - <<: *config_ubuntults - <<: *template_build + <<: *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 + 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: - <<: *config_ubunturolling - <<: *template_build + <<: *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 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 bash cmake libxml2 libreadline8 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 + dependencies: + - build:ubuntu:rolling -# ----------------------------------------------- -build:doc: - <<: *config_run_except_nightly +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# doc.yml + +doc:doc: image: alpine:3.9 stage: build before_script: - apk add --no-cache doxygen graphviz script: - doxygen - allow_failure: true artifacts: name: docs paths: - doc/ expire_in: 1 day -# ################################################################################################# -# stage: test +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# static-analysis.yml -# ----------------------------------------------- -# smoke tests +.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 -.test: &template_test - stage: test +# ----------------------------------------------------------------------------- + +static-analysis:cppcheck: + extends: .template:static-analysis script: - - cd release - - ctest . --output-on-failure -j $(grep -c processor /proc/cpuinfo) + - cppcheck -q --enable=all --project=build/compile_commands.json --suppress="*:*/contrib/*" --error-exitcode=1 -test:builder:gcc: - <<: *config_builder - <<: *template_test - dependencies: - - build:builder:gcc -test:builder:clang: - <<: *config_builder - <<: *template_test - dependencies: - - build:builder:clang +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/ -test:arch: - <<: *config_arch - <<: *template_test - dependencies: - - build:arch - 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 -test:alpine: - <<: *config_alpine - <<: *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 +####################################################################################################################### +####################################################################################################################### +####################################################################################################################### +# package + release -#test:debian:stable: -# <<: *config_debianstable_test -# <<: *template_test -# dependencies: -# - build:debian:stable -# before_script: -# - apt-get update && apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 - -test:debian:testing: - <<: *config_debiantesting - <<: *template_test - dependencies: - - build:debian:testing - before_script: - - apt-get update && apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# release.yml -test:debian:testing:clang: - <<: *config_debiantesting_clang - <<: *template_test - dependencies: - - build:debian:testing:clang - before_script: - - apt-get update && apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 +.template:only:nightly: &release_nightly + only: + refs: + - master + +.template:only:tag: &release_tag + only: + - tags + - /^v.*$/ + +# ----------------------------------------------------------------------------- + +.template:package: + stage: package + dependencies: [] + +.template:release: + stage: release + dependencies: [] + +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# release_archlinux.yml + +.package:arch: + extends: .template:package + image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/archlinux-makepkg + script: + - pacman -Suy --noconfirm --needed base-devel gnupg + - echo "$GPG_PRIVATE_KEY" | sudo -u builder -- gpg --no-tty --batch --import - + - KEYGRIP=$(sudo -u builder -- gpg --with-keygrip -k $GPG_KEYID | grep Keygrip | cut -d= -f2 | tr -d ' ') + - sudo -u builder -- /usr/lib/gnupg/gpg-preset-passphrase --preset --passphrase "$GPG_PASSPHRASE" "$KEYGRIP" + - sudo -u builder -- makepkg --syncdeps --noconfirm --sign --key $GPG_KEYID + artifacts: + paths: + - "*.pkg.tar.xz*" + expire_in: 1 day + variables: + PACKAGER: "Tomáš Pecka <peckato1@fit.cvut.cz>" + +.release:arch: + extends: .template:release + image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/archlinux-makepkg -test:opensuse-leap: - <<: *config_opensuseleap - <<: *template_test - dependencies: - - build:opensuse-leap before_script: - - zypper -n install bash cmake libxml2 readline libQt5Widgets5 libQt5Xml5 graphviz libjsoncpp19 + - pacman -Suy --noconfirm --needed openssh + - mkdir -p ~/.ssh && echo "$SSH_PRIV_KEY" > ~/.ssh/id_rsa && chmod 700 -R ~/.ssh + - eval $(ssh-agent -s) + - echo "$SSH_PASSPHRASE" | ssh-add ~/.ssh/id_rsa + script: + - scp -o StrictHostKeyChecking=no *.pkg.tar.xz* altrepo@pecka.me:~altrepo/tmp/ + - ssh -o StrictHostKeyChecking=no altrepo@pecka.me add-packages arch "$GPG_KEYID" "$GPG_PASSPHRASE" *.pkg.tar.xz -test:ubuntu:lts: - <<: *config_ubuntults - <<: *template_test - dependencies: - - build:ubuntu:lts +# ----------------------------------------------------------------------------- + +package:nightly:arch: + <<: *release_nightly + extends: .package:arch before_script: - - apt-get update && apt-get install -y build-essential bash cmake libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 + - cd extra/distro/arch/nightly/ -test:ubuntu:rolling: - <<: *config_ubunturolling - <<: *template_test +package:tag:arch: + <<: *release_tag + extends: .package:arch before_script: - - apt-get update && apt-get install -y build-essential bash cmake libxml2 libreadline8 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 + - cd extra/distro/arch/release/ + +# ----------------------------------------------------------------------------- + +release:nightly:arch: + <<: *release_nightly + extends: .release:arch + environment: + name: arch-nightly + url: https://altrepo.pecka.me/archlinux/algorithms-library/x86_64/ dependencies: - - build:ubuntu:rolling + - package:nightly:arch -# ################################################################################################# -# stage: deploy +release:tag:arch: + <<: *release_tag + extends: .release:arch + environment: + name: arch-release + url: https://altrepo.pecka.me/archlinux/algorithms-library/x86_64/ + dependencies: + - package:tag:arch -# ----------------------------------------------- -# docker images -.docker: &docker_template - stage: deploy +# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# release_docker.yml +.package:docker: + extends: .template:package image: alpine:3.9 cache: {} # disable + services: + - docker:dind variables: DOCKER_DRIVER: overlay2 DOCKER_HOST: docker @@ -306,21 +385,17 @@ test:ubuntu:rolling: TAG_NIGHTLY: nightly TAG_RELEASE: $CI_COMMIT_REF_NAME TAG_LATEST: latest - services: - - docker:dind before_script: - - apk add --no-cache docker curl + - apk add --no-cache docker - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker info - after_script: - - curl -X POST -F token="$PY_ALIB_TOKEN" -F ref=master https://gitlab.fit.cvut.cz/api/v4/projects/11497/trigger/pipeline dependencies: [] -deploy:docker:nightly: &docker_nightly_template - <<: *docker_template - <<: *config_run_only_nightly - environment: - name: docker-nightly +# ----------------------------------------------------------------------------- + +package:nightly:docker: + <<: *release_nightly + extends: .package:docker script: - docker build --target=deploy-cli -f extra/docker/Dockerfile.master -t "$IMAGE_CLI:$TAG_NIGHTLY" . - docker build --target=deploy-all -f extra/docker/Dockerfile.master -t "$IMAGE_ALL:$TAG_NIGHTLY" . @@ -328,93 +403,80 @@ deploy:docker:nightly: &docker_nightly_template - docker run "$IMAGE_CLI:$TAG_NIGHTLY" /usr/bin/aql2 --help - docker run "$IMAGE_GUI:$TAG_NIGHTLY" /usr/bin/aql2 --help - docker run "$IMAGE_ALL:$TAG_NIGHTLY" /usr/bin/aql2 --help - - docker push "$IMAGE_CLI:$TAG_NIGHTLY" - - docker push "$IMAGE_GUI:$TAG_NIGHTLY" - - docker push "$IMAGE_ALL:$TAG_NIGHTLY" + - docker save -o images.tar "$IMAGE_CLI:$TAG_NIGHTLY" "$IMAGE_GUI:$TAG_NIGHTLY" "$IMAGE_ALL:$TAG_NIGHTLY" + artifacts: + paths: + - images.tar + expire_in: 1 day -deploy:docker:release: - <<: *docker_template - <<: *config_run_only_release - environment: - name: docker-production +package:tag:docker: + <<: *release_tag + extends: .package:docker 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 build --target=deploy-cli -f extra/docker/Dockerfile.master -t "$IMAGE_CLI:$TAG_NIGHTLY" . + - docker build --target=deploy-all -f extra/docker/Dockerfile.master -t "$IMAGE_ALL:$TAG_NIGHTLY" . - 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" + - docker save -o images.tar "$IMAGE_CLI:$TAG_RELEASE" "$IMAGE_GUI:$TAG_RELEASE" "$IMAGE_ALL:$TAG_RELEASE" + artifacts: + paths: + - images.tar + expire_in: 1 day -# ----------------------------------------------- -# create distro packages -# GPG_PRIVATE_KEY and GPG_PASSPHRASE are secret variables in the ALT group. Secret vars can be used only in protected branches -# GPG_PUBLIC_KEY and GPG_KEYID (fingerprint) are public variables in the ALT group +# ----------------------------------------------------------------------------- -.deploy:package:arch: &packaging_arch - image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/archlinux-makepkg - stage: deploy +release:nightly:docker: + <<: *release_nightly + extends: .template:release + environment: + name: docker-nightly + url: https://gitlab.fit.cvut.cz/algorithms-library-toolkit/automata-library/container_registry script: - - pacman -Suy --noconfirm --needed base-devel gnupg - - echo "$GPG_PRIVATE_KEY" | sudo -u builder -- gpg --no-tty --batch --import - - - KEYGRIP=$(sudo -u builder -- gpg --with-keygrip -k $GPG_KEYID | grep Keygrip | cut -d= -f2 | tr -d ' ') - - sudo -u builder -- /usr/lib/gnupg/gpg-preset-passphrase --preset --passphrase "$GPG_PASSPHRASE" "$KEYGRIP" - - sudo -u builder -- makepkg --syncdeps --noconfirm --sign --key $GPG_KEYID - artifacts: - paths: - - "*.pkg.tar.xz*" - expire_in: 2 days - variables: - PACKAGER: "Tomáš Pecka <peckato1@fit.cvut.cz>" + - docker load -i images.tar + - docker push "$IMAGE_CLI:$TAG_NIGHTLY" + - docker push "$IMAGE_GUI:$TAG_NIGHTLY" + - docker push "$IMAGE_ALL:$TAG_NIGHTLY" + dependencies: + - package:nightly:docker -deploy:package:nightly:arch: - <<: *packaging_arch - <<: *config_run_only_nightly - before_script: - - cp extra/distro/arch/nightly/PKGBUILD . +release:tag:docker: + <<: *release_tag + extends: .template:release + environment: + name: docker-release + url: https://gitlab.fit.cvut.cz/algorithms-library-toolkit/automata-library/container_registry + script: + - docker load -i images.tar + - docker push "$IMAGE_CLI:$TAG_RELEASE" + - docker push "$IMAGE_GUI:$TAG_RELEASE" + - docker push "$IMAGE_ALL:$TAG_RELEASE" + dependencies: + - package:tag:docker -deploy:package:release:arch: - <<: *packaging_arch - <<: *config_run_only_release - before_script: - - cp extra/distro/arch/release/PKGBUILD . -# ----------------------------------------------- -.publish: &publish - stage: publish - when: always -.publish:arch: &publish_arch - <<: *publish - image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/archlinux-makepkg - environment: - name: package-arch-nightly - url: https://altrepo.pecka.me/archlinux/algorithms-library/x86_64/ +####################################################################################################################### +####################################################################################################################### +####################################################################################################################### +# notify +.template:notify: + stage: notify + image: alpine:3.9 before_script: - - pacman -Suy --noconfirm --needed openssh - - mkdir -p ~/.ssh && echo "$SSH_PRIV_KEY" > ~/.ssh/id_rsa && chmod 700 -R ~/.ssh - - eval $(ssh-agent -s) - - echo "$SSH_PASSPHRASE" | ssh-add ~/.ssh/id_rsa - script: - - scp -o StrictHostKeyChecking=no *.pkg.tar.xz* altrepo@pecka.me:~altrepo/tmp/ - - ssh -o StrictHostKeyChecking=no altrepo@pecka.me add-packages arch "$GPG_KEYID" "$GPG_PASSPHRASE" *.pkg.tar.xz + - apk add --no-cache curl + dependencies: [] -publish:nightly:arch: - <<: *publish_arch - <<: *config_run_only_nightly - dependencies: - - deploy:package:nightly:arch +# ----------------------------------------------------------------------------- -publish:release:arch: - <<: *publish_arch - <<: *config_run_only_release - dependencies: - - deploy:package:release:arch +notify:pyalib: + extends: .template:notify + script: + - curl -X POST -F token="$PY_ALIB_TOKEN" -F ref=master https://gitlab.fit.cvut.cz/api/v4/projects/11497/trigger/pipeline + only: + refs: + - master -- GitLab