matrixion/.gitlab-ci.yml

340 lines
13 KiB
YAML
Raw Normal View History

stages:
- build
- sign
- deploy
2020-05-01 02:27:27 +03:00
variables:
CCACHE_COMPILERCHECK: content
CCACHE_DIR: "${CI_PROJECT_DIR}/.ccache"
# prevent configure tzdata hanging apt install commands
DEBIAN_FRONTEND: noninteractive
2021-12-29 01:34:21 +03:00
build-clazy:
stage: build
2023-03-26 05:11:36 +03:00
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/ubuntu:22.04
2021-12-29 01:34:21 +03:00
tags: [docker]
variables:
CLAZY_CHECKS: level0,level1,no-non-pod-global-static
TRAVIS_OS_NAME: linux
before_script:
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_start:`date +%s`:install_deps[collapsed=true]\r\e[0K\e[1m\e[95mInstalling apt dependencies"
2021-12-29 01:34:21 +03:00
- apt-get update
2022-10-12 22:20:17 +03:00
- apt-get -y install --no-install-suggests --no-install-recommends ca-certificates build-essential ninja-build cmake gcc make automake liblmdb-dev libre2-dev
libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev
qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev
qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-platform
qt5keychain-dev ccache clazy libcurl4-openssl-dev libevent-dev libspdlog-dev git nlohmann-json3-dev libcmark-dev asciidoc # libolm-dev
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_end:`date +%s`:install_deps\r\e[0K"
2021-12-29 01:34:21 +03:00
script:
- export PATH="/usr/local/bin/:/usr/lib/ccache:${PATH}"
- export CMAKE_BUILD_PARALLEL_LEVEL=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)
- cmake -GNinja -H. -Bbuild
-DCMAKE_INSTALL_PREFIX=.deps/usr
2022-05-14 03:22:33 +03:00
-DHUNTER_ENABLED=OFF -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_MTXCLIENT=ON -DUSE_BUNDLED_COEURL=ON -DUSE_BUNDLED_LMDBXX=ON -DUSE_BUNDLED_OLM=ON
2021-12-29 01:34:21 +03:00
-DVOIP=OFF
-DCMAKE_BUILD_TYPE=Release
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF -DCMAKE_CXX_COMPILER=clazy
2021-12-29 01:34:21 +03:00
- cmake --build build
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
2021-12-29 01:34:21 +03:00
cache:
key: "$CI_JOB_NAME"
paths:
- .ccache
2022-09-22 19:42:11 +03:00
build-gcc11:
2020-05-01 02:27:27 +03:00
stage: build
2023-03-26 05:11:36 +03:00
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/ubuntu:22.04
2020-05-01 02:27:27 +03:00
tags: [docker]
variables:
TRAVIS_OS_NAME: linux
before_script:
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_start:`date +%s`:install_deps[collapsed=true]\r\e[0K\e[1m\e[95mInstalling apt dependencies"
2020-05-01 02:27:27 +03:00
- apt-get update
- apt-get -y install --no-install-suggests --no-install-recommends ca-certificates build-essential ninja-build cmake gcc make automake ccache liblmdb-dev
libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev
qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev
qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-platform
2023-04-11 03:33:40 +03:00
qt5keychain-dev ccache clazy libcurl4-openssl-dev libevent-dev libspdlog-dev git nlohmann-json3-dev libcmark-dev asciidoc time # libolm-dev
2020-05-01 02:27:27 +03:00
# need recommended deps for wget
- apt-get -y install wget
- /usr/sbin/update-ccache-symlinks
2021-06-30 13:45:41 +03:00
- rm -rf ../.hunter && mv .hunter ../.hunter || true
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_end:`date +%s`:install_deps\r\e[0K"
2020-05-01 02:27:27 +03:00
script:
2022-09-22 19:42:11 +03:00
- export PATH="/usr/lib/ccache:${PATH}"
- cmake -GNinja -H. -Bbuild
-DCMAKE_INSTALL_PREFIX=.deps/usr
-DHUNTER_ROOT="../.hunter"
-DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_LMDB=OFF -DUSE_BUNDLED_QTKEYCHAIN=OFF
-DVOIP=OFF
-DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
-DJSON_ImplicitConversions=OFF
2023-04-11 03:33:40 +03:00
- /usr/bin/time cmake --build build
2022-09-22 19:42:11 +03:00
after_script:
- mv ../.hunter .hunter
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
2022-09-22 19:42:11 +03:00
cache:
key: "$CI_JOB_NAME"
paths:
- .hunter/
- .ccache
2023-03-26 04:07:58 +03:00
build-tw:
stage: build
2023-03-26 05:11:36 +03:00
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/opensuse/tumbleweed
2023-03-26 04:07:58 +03:00
tags: [docker]
variables:
TRAVIS_OS_NAME: linux
before_script:
- echo -e "\e[0Ksection_start:`date +%s`:install_deps[collapsed=true]\r\e[0K\e[1m\e[95mInstalling apt dependencies"
- >
zypper --non-interactive install
"appstream-glib"
"asciidoc"
"ccache"
"cmake"
"cmark-devel"
"desktop-file-utils"
"gcc-c++"
"git"
"libappstream-glib8"
"lmdb-devel"
"memory-constraints"
"ninja"
"nlohmann_json-devel"
"olm-devel"
"openssl-devel"
"pkgconfig"
"spdlog-devel"
"zlib-devel"
"libQt5PlatformHeaders-devel"
"cmake(re2)"
"cmake(Qt5Concurrent)"
"cmake(Qt5Core)"
"cmake(Qt5DBus)"
"cmake(Qt5Keychain)"
"cmake(Qt5LinguistTools)"
"cmake(Qt5Multimedia)"
"cmake(Qt5Network)"
"cmake(Qt5QuickControls2)"
"cmake(Qt5Svg)"
"cmake(Qt5Widgets)"
"pkgconfig(libcurl)"
"pkgconfig(libevent)"
"pkgconfig(gstreamer-webrtc-1.0)"
"pkgconfig(xcb)"
"pkgconfig(xcb-ewmh)"
2023-04-11 03:33:40 +03:00
"time"
2023-03-26 04:07:58 +03:00
- echo -e "\e[0Ksection_end:`date +%s`:install_deps\r\e[0K"
script:
- export PATH="/usr/lib64/ccache:${PATH}"
- cmake -GNinja -H. -Bbuild
-DCMAKE_INSTALL_PREFIX=.deps/usr
-DUSE_BUNDLED_MTXCLIENT=ON -DUSE_BUNDLED_COEURL=ON -DUSE_BUNDLED_LMDBXX=ON
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_FLAGS="-Wno-error=array-bounds"
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
# temporarily disabled because of mtxclient failures
#-DJSON_ImplicitConversions=OFF
2023-04-11 03:33:40 +03:00
- /usr/bin/time cmake --build build
2023-03-26 04:07:58 +03:00
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
cache:
key: "$CI_JOB_NAME"
paths:
- .ccache
2020-05-01 02:27:27 +03:00
build-macos:
stage: build
tags: [macos]
before_script:
2021-06-30 13:45:41 +03:00
- rm -rf ../.hunter && mv .hunter ../.hunter || true
2020-05-01 02:27:27 +03:00
script:
- ./.ci/macos/build.sh
2020-12-08 23:34:07 +03:00
after_script:
2021-06-30 13:45:41 +03:00
- mv ../.hunter .hunter
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
2020-12-08 23:34:07 +03:00
artifacts:
paths:
- build/nheko.app # not putting this in 'artifacts' subdir because we don't want to put it on releases
2021-09-03 21:53:31 +03:00
name: nheko-${CI_COMMIT_SHORT_SHA}-macos-app
expose_as: 'macos-app'
public: false
2020-05-01 02:27:27 +03:00
cache:
key: "${CI_JOB_NAME}"
paths:
- .hunter/
- "${CCACHE_DIR}"
2021-09-03 21:53:31 +03:00
codesign-macos:
stage: sign
2021-09-03 21:53:31 +03:00
tags: [macos]
variables:
PLAT: "intel"
2021-09-03 21:53:31 +03:00
before_script:
- pip3 install dmgbuild
script:
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
- ./.ci/macos/notarize.sh
after_script:
- ./.ci/upload-nightly-gitlab.sh artifacts/nheko-${CI_COMMIT_SHORT_SHA}-${PLAT}.dmg
2021-09-03 21:53:31 +03:00
needs:
- job: build-macos
optional: true # optional since we want to be able to also trigger this job from cirrus ci for apple silicon builds.
2021-09-03 21:53:31 +03:00
rules:
2022-10-28 01:55:52 +03:00
- if : '$CI_PIPELINE_TRIGGERED && $CI_COMMIT_REF_PROTECTED == "true"'
variables:
PLAT: "apple_silicon"
2022-10-28 02:08:27 +03:00
- if : '$CI_COMMIT_BRANCH == "master"'
2021-09-03 21:53:31 +03:00
- if : $CI_COMMIT_TAG
artifacts:
paths:
- artifacts/nheko-${CI_COMMIT_SHORT_SHA}-${PLAT}.dmg
2022-09-25 00:46:49 +03:00
- /tmp/notarize*
2021-09-03 21:53:31 +03:00
name: nheko-${CI_COMMIT_SHORT_SHA}-macos
2023-03-25 15:05:00 +03:00
build-flatpak:
2020-05-01 02:27:27 +03:00
stage: build
2023-03-26 05:11:36 +03:00
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/ubuntu:latest
2020-05-01 02:27:27 +03:00
#image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
2023-03-25 15:05:00 +03:00
tags:
- docker-${ARCH}
parallel:
matrix:
- ARCH: [amd64, arm64]
2020-05-01 02:27:27 +03:00
before_script:
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_start:`date +%s`:install_deps[collapsed=true]\r\e[0K\e[1m\e[95mInstalling apt dependencies"
2022-04-23 02:08:23 +03:00
- apt-get update && apt-get -y install flatpak-builder git python3 curl python3-aiohttp python3-tenacity gir1.2-ostree-1.0
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_end:`date +%s`:install_deps\r\e[0K"
2020-05-01 02:27:27 +03:00
- flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# see https://github.com/flatpak/flatpak-builder/issues/495
- git config --global protocol.file.allow always
2020-05-01 02:27:27 +03:00
script:
- export VERSION=$(git describe)
- mkdir -p build-flatpak
- cd build-flatpak
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_start:`date +%s`:build_flatpak[collapsed=true]\r\e[0K\e[1m\e[95mBuilding flatpak"
- flatpak-builder --install-deps-from=flathub --user --disable-rofiles-fuse --ccache --repo=repo --default-branch=${CI_COMMIT_REF_NAME//\//_} --subject="Build of Nheko ${VERSION} `date` for ${ARCH}" app ../io.github.NhekoReborn.Nheko.yaml
- echo -e "\e[0Ksection_end:`date +%s`:build_flatpak\r\e[0K"
- flatpak build-bundle repo nheko-${ARCH}.flatpak io.github.NhekoReborn.Nheko ${CI_COMMIT_REF_NAME//\//_}
2020-05-01 02:27:27 +03:00
after_script:
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_start:`date +%s`:upload_flatpak[collapsed=true]\r\e[0K\e[1m\e[95mUploading flatpak"
- bash ./.ci/upload-nightly-gitlab.sh build-flatpak/nheko-${ARCH}.flatpak
2023-02-20 00:30:28 +03:00
- (cd ./scripts && ./upload-to-flatpak-repo.sh ../build-flatpak/repo) || true
2023-03-25 15:05:00 +03:00
- (mkdir -p artifacts && cp build-flatpak/nheko-${ARCH}.flatpak artifacts/) || true
- echo -e "\e[0Ksection_end:`date +%s`:upload_flatpak\r\e[0K"
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
2020-05-01 02:27:27 +03:00
cache:
key: "$CI_JOB_NAME"
paths:
- build-flatpak/.flatpak-builder/
artifacts:
2023-03-25 15:05:00 +03:00
expose_as: 'flatpak'
paths: ['artifacts/nheko-${ARCH}.flatpak']
name: flatpak-${CI_COMMIT_REF_NAME}-${VERSION}-${ARCH}
2020-05-01 02:27:27 +03:00
2022-10-20 07:02:46 +03:00
appimage-amd64:
stage: build
2023-03-26 05:11:36 +03:00
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/ubuntu:22.04
2022-10-20 07:02:46 +03:00
tags: [docker]
allow_failure: true
2022-10-20 07:02:46 +03:00
before_script:
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_start:`date +%s`:install_deps[collapsed=true]\r\e[0K\e[1m\e[95mInstalling apt dependencies"
2022-10-20 07:02:46 +03:00
# Installing the packages needed to download and install third-party tools
- apt-get update && apt-get install -y software-properties-common git wget curl python3 python3-pip python3-setuptools
2022-10-20 07:02:46 +03:00
# Installing the packages needed to compile nheko and third-party tools
- apt-get -y install --no-install-suggests --no-install-recommends ca-certificates build-essential ninja-build cmake gcc make automake ccache liblmdb-dev
libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev
qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev
qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-platform
qt5keychain-dev ccache clazy libcurl4-openssl-dev libevent-dev libspdlog-dev nlohmann-json3-dev libcmark-dev asciidoc libre2-dev libgtest-dev libgl1-mesa-dev qml-module-qtquick-particles2
2022-10-20 07:02:46 +03:00
# Installing the packages needed to build AppImage
- apt-get -yq install breeze-icon-theme desktop-file-utils elfutils fakeroot file gnupg2 gtk-update-icon-cache libgdk-pixbuf2.0-dev libgdk-pixbuf2.0-0 libglib2.0-bin librsvg2-dev libyaml-dev strace zsync squashfs-tools
- wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool && \
- chmod +x /usr/local/bin/appimagetool
2023-01-05 05:46:00 +03:00
- export HOME_DIR=$(pwd)
# Workaround for https://github.com/AppImageCrafters/appimage-builder/issues/280
- cd /tmp
- git clone https://github.com/AppImageCrafters/appimage-builder
2023-01-05 05:46:00 +03:00
- cd appimage-builder
- git checkout 9733877eed75aea0fa8e9a1cd26c22d77a10aa4a
- pip3 install .
- pip3 install cffi
2023-01-05 05:46:00 +03:00
- cd $HOME_DIR
2022-10-20 07:02:46 +03:00
- /usr/sbin/update-ccache-symlinks
- rm -rf ../.hunter && mv .hunter ../.hunter || true
2023-03-25 15:05:00 +03:00
- echo -e "\e[0Ksection_end:`date +%s`:install_deps\r\e[0K"
2022-10-20 07:02:46 +03:00
script:
- export PATH="/usr/local/bin/:/usr/lib/ccache:${PATH}"
2022-10-21 07:34:21 +03:00
- cmake -GNinja -H. -Bbuild
-DCMAKE_INSTALL_PREFIX=/usr
-DHUNTER_ROOT=".hunter"
2022-10-21 19:40:17 +03:00
-DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_LMDB=OFF -DUSE_BUNDLED_QTKEYCHAIN=OFF -DUSE_BUNDLED_LIBEVENT=OFF
2022-10-21 07:34:21 +03:00
-DVOIP=OFF -DMAN=OFF
-DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
-DJSON_ImplicitConversions=OFF
2022-10-20 07:02:46 +03:00
- DESTDIR=`pwd`/AppDir ninja -C build install/local
- DESTDIR=`pwd`/AppDir ninja -C build _deps/cmark-build/src/install
- mkdir -p AppDir/usr/lib/x86_64-linux-gnu AppDir/lib/x86_64-linux-gnu
- appimage-builder --skip-test
after_script:
- mkdir -p artifacts && cp nheko-latest-x86_64.AppImage artifacts/
2022-10-20 07:02:46 +03:00
- bash ./.ci/upload-nightly-gitlab.sh nheko-latest-x86_64.AppImage
2023-01-05 07:06:26 +03:00
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
2022-10-20 07:02:46 +03:00
artifacts:
paths:
- 'artifacts/nheko-latest-x86_64.AppImage'
2022-10-20 07:02:46 +03:00
expire_in: 1 week
expose_as: 'appimage-amd64'
cache:
key: "$CI_JOB_NAME"
paths:
- .hunter/
- .ccache
2020-05-01 02:27:27 +03:00
linting:
stage: build
2023-03-26 05:11:36 +03:00
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest
2020-05-01 02:27:27 +03:00
tags: [docker]
before_script:
2022-09-25 21:05:08 +03:00
- apk update && apk add make git python3 py3-pip
- apk add clang-extra-tools --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
2021-03-05 02:35:15 +03:00
- export PATH="$PATH:/root/.local/bin"
- pip3 install --user reuse
2020-05-01 02:27:27 +03:00
script:
- make lint
2021-03-05 02:35:15 +03:00
- make license
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
2020-12-25 21:14:32 +03:00
github-release:
stage: deploy
2023-03-26 05:11:36 +03:00
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest
tags: [docker]
rules:
2023-03-01 01:44:22 +03:00
- if: '$CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/'
dependencies:
2023-02-28 21:48:21 +03:00
- appimage-amd64
2023-03-25 15:05:00 +03:00
- build-flatpak
2023-02-28 21:48:21 +03:00
- codesign-macos
before_script:
2023-02-28 01:34:31 +03:00
- apk update && apk add jq curl perl
script:
- ./.ci/update-github-release.sh