Skip to content
Snippets Groups Projects
.gitlab-ci.yml 6.48 KiB
Newer Older
Nicolas Werner's avatar
Nicolas Werner committed
variables:
  CCACHE_COMPILERCHECK: content
  CCACHE_DIR: "${CI_PROJECT_DIR}/.ccache"
  # prevent configure tzdata hanging apt install commands
  DEBIAN_FRONTEND: noninteractive

build-gcc7:
  stage: build
Nicolas Werner's avatar
Nicolas Werner committed
  image: ubuntu:20.04
Nicolas Werner's avatar
Nicolas Werner committed
  tags: [docker]
  variables:
Nicolas Werner's avatar
Nicolas Werner committed
    QT_PKG: 515
Nicolas Werner's avatar
Nicolas Werner committed
    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
Nicolas Werner's avatar
Nicolas Werner committed
    - add-apt-repository ppa:beineri/opt-qt-5.15.2-focal -y
    - apt-get update && apt-get -y install --no-install-recommends build-essential ninja-build qt${QT_PKG}{base,declarative,tools,multimedia,script,quickcontrols2,svg} liblmdb-dev libgl1-mesa-dev libssl-dev git ccache pkg-config libsecret-1-dev cmake
Nicolas Werner's avatar
Nicolas Werner committed
    # need recommended deps for wget
    - apt-get -y install wget
    - /usr/sbin/update-ccache-symlinks
Nicolas Werner's avatar
Nicolas Werner committed
    - rm -rf ../.hunter &&  mv .hunter ../.hunter || true
Nicolas Werner's avatar
Nicolas Werner committed
  script:
    - export PATH="/usr/lib/ccache:${PATH}"
    - export CMAKE_BUILD_PARALLEL_LEVEL=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)
    - . "/opt/qt${QT_PKG}/bin/qt${QT_PKG}-env.sh" || true
    - cmake -GNinja -H. -Bbuild
        -DCMAKE_INSTALL_PREFIX=.deps/usr
Nicolas Werner's avatar
Nicolas Werner committed
        -DHUNTER_ROOT="../.hunter"
        -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_LMDB=OFF
Nicolas Werner's avatar
Nicolas Werner committed
        -DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
        -DCI_BUILD=ON
    - cmake --build build
Nicolas Werner's avatar
Nicolas Werner committed
  after_script:
    - mv ../.hunter .hunter
Nicolas Werner's avatar
Nicolas Werner committed
  cache:
    key: "$CI_JOB_NAME"
    paths:
      - .hunter/
      - .ccache

build-macos:
  stage: build
  tags: [macos]
  before_script:
Joe Donofry's avatar
Joe Donofry committed
    #- brew update
    #- brew reinstall --force python3
    #- brew bundle --file=./.ci/macos/Brewfile --force --cleanup
Nicolas Werner's avatar
Nicolas Werner committed
    - rm -rf ../.hunter &&  mv .hunter ../.hunter || true
Nicolas Werner's avatar
Nicolas Werner committed
  script:
    - export PATH=/usr/local/opt/qt@5/bin/:${PATH}
    - export CMAKE_PREFIX_PATH=/usr/local/opt/qt@5
Nicolas Werner's avatar
Nicolas Werner committed
    - cmake -GNinja -H. -Bbuild
        -DCMAKE_BUILD_TYPE=RelWithDebInfo
        -DCMAKE_INSTALL_PREFIX=.deps/usr
Nicolas Werner's avatar
Nicolas Werner committed
        -DHUNTER_ROOT="../.hunter"
Nicolas Werner's avatar
Nicolas Werner committed
        -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
    - (cd build && git clone https://github.com/Nheko-Reborn/qt-jdenticon.git && cd qt-jdenticon && qmake && make -j 4 && cp libqtjdenticon.dylib ../nheko.app/Contents/MacOS)
Joe Donofry's avatar
Joe Donofry committed
  after_script:
Nicolas Werner's avatar
Nicolas Werner committed
    - mv ../.hunter .hunter
Joe Donofry's avatar
Joe Donofry committed
  artifacts:
    paths:
Joe Donofry's avatar
Joe Donofry committed
      - build/nheko.app
    name: nheko-${CI_COMMIT_SHORT_SHA}-macos-app
    expose_as: 'macos-app'
    public: false
Nicolas Werner's avatar
Nicolas Werner committed
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .hunter/
      - "${CCACHE_DIR}"

Joe Donofry's avatar
Joe Donofry committed
codesign-macos:
  stage: deploy
  tags: [macos]
  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}.dmg
  needs:
    - build-macos
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if : $CI_COMMIT_TAG
  artifacts:
    paths:
      - artifacts/nheko-${CI_COMMIT_SHORT_SHA}.dmg
    name: nheko-${CI_COMMIT_SHORT_SHA}-macos
    expose_as: 'macos-dmg'


Nicolas Werner's avatar
Nicolas Werner committed
build-flatpak-amd64:
  stage: build
  image: ubuntu:latest
  #image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
  tags: [docker]
  before_script:
    # need flatpak 1.11.1 at least
    - apt-get update && apt-get install -y software-properties-common
    - add-apt-repository ppa:alexlarsson/flatpak && apt-get update && apt-get -y install flatpak-builder git python curl python3-aiohttp python3-tenacity gir1.2-ostree-1.0
Nicolas Werner's avatar
Nicolas Werner committed
    - flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Nicolas Werner's avatar
Nicolas Werner committed
    - flatpak --noninteractive install --user flathub org.kde.Platform//5.15
    - flatpak --noninteractive install --user flathub org.kde.Sdk//5.15
Nicolas Werner's avatar
Nicolas Werner committed
  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.yaml
Nicolas Werner's avatar
Nicolas Werner committed
    - flatpak build-bundle repo nheko-amd64.flatpak io.github.NhekoReborn.Nheko ${CI_COMMIT_REF_NAME//\//_}
Nicolas Werner's avatar
Nicolas Werner committed
  after_script:
    - (cd ./scripts && ./upload-to-flatpak-repo.sh ../build-flatpak/repo) || true
Nicolas Werner's avatar
Nicolas Werner committed
    - 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:
    # need flatpak 1.11.1 at least
    - apt-get update && apt-get install -y software-properties-common
    - add-apt-repository ppa:alexlarsson/flatpak && apt-get update && apt-get -y install flatpak-builder git python curl python3-aiohttp python3-tenacity gir1.2-ostree-1.0
Nicolas Werner's avatar
Nicolas Werner committed
    - flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Nicolas Werner's avatar
Nicolas Werner committed
    - flatpak --noninteractive install --user flathub org.kde.Platform//5.15
    - flatpak --noninteractive install --user flathub org.kde.Sdk//5.15
Nicolas Werner's avatar
Nicolas Werner committed
  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.yaml
Nicolas Werner's avatar
Nicolas Werner committed
    - flatpak build-bundle repo nheko-arm64.flatpak io.github.NhekoReborn.Nheko ${CI_COMMIT_REF_NAME//\//_}
Nicolas Werner's avatar
Nicolas Werner committed
  after_script:
    - (cd ./scripts && ./upload-to-flatpak-repo.sh ../build-flatpak/repo) || true
Nicolas Werner's avatar
Nicolas Werner committed
    - 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-extra-tools make git python3 py3-pip
Nicolas Werner's avatar
Nicolas Werner committed
    - export PATH="$PATH:/root/.local/bin"
    - pip3 install --user reuse
Nicolas Werner's avatar
Nicolas Werner committed
  script:
    - make lint
Nicolas Werner's avatar
Nicolas Werner committed
    - make license