summary refs log tree commit diff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@gmx.net>2020-04-30 19:27:27 -0400
committerNicolas Werner <nicolas.werner@hotmail.de>2020-11-27 01:32:41 +0100
commit0cc4ab7f17d43d625fa62813669a99735a45d156 (patch)
tree4cc5bacd8845f2e996bebfa01467567d8003afee /.gitlab-ci.yml
parentBump Qt version (diff)
downloadnheko-0cc4ab7f17d43d625fa62813669a99735a45d156.tar.xz
Add gitlab ci
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml136
1 files changed, 136 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000..385bcd92
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,136 @@
+variables:
+  CCACHE_COMPILERCHECK: content
+  CCACHE_DIR: "${CI_PROJECT_DIR}/.ccache"
+  # prevent configure tzdata hanging apt install commands
+  DEBIAN_FRONTEND: noninteractive
+
+build-gcc7:
+  stage: build
+  image: ubuntu:16.04
+  tags: [docker]
+  variables:
+    CXX: g++-7
+    CC: gcc-7
+    QT_PKG: 510
+    TRAVIS_OS_NAME: linux
+  before_script:
+    - apt-get update
+    - apt-get install -y software-properties-common
+    - add-apt-repository ppa:ubuntu-toolchain-r/test -y
+    - add-apt-repository ppa:beineri/opt-qt-5.10.1-xenial -y
+    - apt-get update && apt-get -y install --no-install-recommends g++-7 build-essential ninja-build qt${QT_PKG}{base,declarative,tools,multimedia,script,quickcontrols2,svg} liblmdb-dev libgl1-mesa-dev libssl-dev git ccache
+    # need recommended deps for wget
+    - apt-get -y install wget
+    - wget https://github.com/Kitware/CMake/releases/download/v3.19.0/cmake-3.19.0-Linux-x86_64.sh && sh cmake-3.19.0-Linux-x86_64.sh  --skip-license  --prefix=/usr/local
+    - /usr/sbin/update-ccache-symlinks
+    - update-alternatives --install /usr/bin/gcc gcc "/usr/bin/${CC}" 10
+    - update-alternatives --install /usr/bin/g++ g++ "/usr/bin/${CXX}" 10
+    - update-alternatives --set gcc "/usr/bin/${CC}"
+    - update-alternatives --set g++ "/usr/bin/${CXX}"
+  script:
+    - export PATH="/usr/lib/ccache:${PATH}"
+    - export CMAKE_BUILD_PARALLEL_LEVEL=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)
+    - export PATH="/usr/local/bin/:${PATH}"
+    - . "/opt/qt${QT_PKG}/bin/qt${QT_PKG}-env.sh" || true
+    - mkdir -p .deps/usr .hunter
+    - mkdir -p build
+    - cmake -GNinja -H. -Bbuild
+        -DCMAKE_INSTALL_PREFIX=.deps/usr
+        -DHUNTER_ROOT=".hunter"
+        -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF
+        -DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
+        -DCI_BUILD=ON
+    - cmake --build build
+  cache:
+    key: "$CI_JOB_NAME"
+    paths:
+      - .hunter/
+      - .ccache
+
+build-macos:
+  stage: build
+  tags: [macos]
+  before_script:
+    - brew update
+    - brew bundle --file=./.ci/macos/Brewfile
+  script:
+    - export PATH=/usr/local/opt/qt/bin/:${PATH}
+    - export CMAKE_PREFIX_PATH=/usr/local/opt/qt5
+    - cmake -GNinja -H. -Bbuild
+        -DCMAKE_BUILD_TYPE=RelWithDebInfo
+        -DCMAKE_INSTALL_PREFIX=.deps/usr
+        -DHUNTER_ROOT=".hunter"
+        -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF
+        -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHUNTER_CONFIGURATION_TYPES=RelWithDebInfo
+        -DUSE_BUNDLED_OPENSSL=ON
+        -DUSE_BUNDLED_BOOST=ON
+        -DCI_BUILD=ON
+    - cmake --build build
+  cache:
+    key: "${CI_JOB_NAME}"
+    paths:
+      - .hunter/
+      - "${CCACHE_DIR}"
+
+build-flatpak-amd64:
+  stage: build
+  image: ubuntu:latest
+  #image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
+  tags: [docker]
+  before_script:
+    - apt-get update && apt-get -y install flatpak-builder git python curl
+    - flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+    - flatpak --noninteractive install --user flathub org.kde.Platform//5.14
+    - flatpak --noninteractive install --user flathub org.kde.Sdk//5.14
+  script:
+    - export VERSION=$(git describe)
+    - mkdir -p build-flatpak
+    - cd build-flatpak
+    - flatpak-builder --user --disable-rofiles-fuse --ccache --repo=repo --default-branch=${CI_COMMIT_REF_NAME} --subject="Build of Nheko ${VERSION} `date`" app ../io.github.NhekoReborn.Nheko.json
+    - flatpak build-bundle repo nheko-amd64.flatpak io.github.NhekoReborn.Nheko ${CI_COMMIT_REF_NAME}
+  after_script:
+    - bash ./.ci/upload-nightly-gitlab.sh build-flatpak/nheko-amd64.flatpak
+  cache:
+    key: "$CI_JOB_NAME"
+    paths:
+      - build-flatpak/.flatpak-builder/
+  artifacts:
+    expose_as: 'flatpak-amd64'
+    paths: ['build-flatpak/nheko-amd64.flatpak']
+    name: flatpak-${CI_COMMIT_REF_NAME}-${VERSION}-amd64
+
+build-flatpak-arm64:
+  stage: build
+  image: ubuntu:latest
+  #image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
+  tags: [docker-arm64]
+  before_script:
+    - apt-get update && apt-get -y install flatpak-builder git python curl
+    - flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+    - flatpak --noninteractive install --user flathub org.kde.Platform//5.14
+    - flatpak --noninteractive install --user flathub org.kde.Sdk//5.14
+  script:
+    - export VERSION=$(git describe)
+    - mkdir -p build-flatpak
+    - cd build-flatpak
+    - flatpak-builder --user --disable-rofiles-fuse --ccache --repo=repo --default-branch=${CI_COMMIT_REF_NAME} --subject="Build of Nheko ${VERSION} `date` for arm64" app ../io.github.NhekoReborn.Nheko.json
+    - flatpak build-bundle repo nheko-arm64.flatpak io.github.NhekoReborn.Nheko ${CI_COMMIT_REF_NAME}
+  after_script:
+    - bash ./.ci/upload-nightly-gitlab.sh build-flatpak/nheko-arm64.flatpak
+  cache:
+    key: "$CI_JOB_NAME"
+    paths:
+      - build-flatpak/.flatpak-builder/
+  artifacts:
+    expose_as: 'flatpak-arm64'
+    paths: ['build-flatpak/nheko-arm64.flatpak']
+    name: flatpak-${CI_COMMIT_REF_NAME}-${VERSION}-arm64
+
+linting:
+  stage: build
+  image: alpine:latest
+  tags: [docker]
+  before_script:
+    - apk update && apk add clang make git
+  script:
+    - make lint