Merge pull request #1212 from ZhymabekRoman/master

Add AppImage build
This commit is contained in:
DeepBlueV7.X 2023-01-05 16:34:09 +00:00 committed by GitHub
commit 8b6109815d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 187 additions and 0 deletions

View File

@ -223,6 +223,71 @@ build-flatpak-arm64:
paths: ['build-flatpak/nheko-arm64.flatpak']
name: flatpak-${CI_COMMIT_REF_NAME}-${VERSION}-arm64
appimage-amd64:
stage: build
image: ubuntu:22.04
tags: [docker]
allow_failure: true
before_script:
# 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
# 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
# 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
- export HOME_DIR=$(pwd)
# Workaround for https://github.com/AppImageCrafters/appimage-builder/issues/280
- cd /tmp
- git clone https://github.com/AppImageCrafters/appimage-builder
- cd appimage-builder
- git checkout 9733877eed75aea0fa8e9a1cd26c22d77a10aa4a
- pip3 install .
- pip3 install cffi
- cd $HOME_DIR
- /usr/sbin/update-ccache-symlinks
- rm -rf ../.hunter && mv .hunter ../.hunter || true
script:
- export PATH="/usr/local/bin/:/usr/lib/ccache:${PATH}"
- cmake -GNinja -H. -Bbuild
-DCMAKE_INSTALL_PREFIX=/usr
-DHUNTER_ROOT=".hunter"
-DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_LMDB=OFF -DUSE_BUNDLED_QTKEYCHAIN=OFF -DUSE_BUNDLED_LIBEVENT=OFF
-DVOIP=OFF -DMAN=OFF
-DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
-DJSON_ImplicitConversions=OFF
- 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:
- bash ./.ci/upload-nightly-gitlab.sh nheko-latest-x86_64.AppImage
rules:
- if : '$CI_PIPELINE_TRIGGERED == null'
artifacts:
paths:
- 'nheko-latest-x86_64.AppImage'
expire_in: 1 week
expose_as: 'appimage-amd64'
cache:
key: "$CI_JOB_NAME"
paths:
- .hunter/
- .ccache
linting:
stage: build
image: alpine:latest

122
AppImageBuilder.yml Normal file
View File

@ -0,0 +1,122 @@
# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
version: 1
AppDir:
path: ./AppDir
app_info:
id: nheko
name: nheko
icon: nheko
version: latest
exec: usr/bin/nheko
exec_args: $@
runtime:
env:
APPDIR_LIBRARY_PATH: $APPDIR/usr/lib/x86_64-linux-gnu:$APPDIR/usr/lib/x86_64-linux-gnu/gstreamer-1.0:$APPDIR/usr/lib/x86_64-linux-gnu/gconv:$APPDIR/lib/x86_64-linux-gnu:$APPDIR/usr/lib/x86_64-linux-gnu/pulseaudio
apt:
arch: amd64
allow_unauthenticated: true
sources:
- sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
- sourceline: deb http://archive.canonical.com/ubuntu jammy partner
key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c
include:
# idk, need there ca-certificates, but some systems may not have
- ca-certificates
- gstreamer1.0-plugins-good
- libbs2b0
- libbz2-1.0
- libcurl4
- libelf1
- libexpat1
- libevent-core-2.1-7
- libevent-pthreads-2.1-7
- libjpeg-turbo8
- libkf5archive5
- liblmdb0
- liblz4-1
- libnorm1
- libnss-mdns
- libpcre3
- qml-module-qt-labs-platform
- qml-module-qt-labs-settings
- qml-module-qtgraphicaleffects
- qml-module-qtquick-particles2
- qml-module-qtmultimedia
- qml-module-qtquick2
- qml-module-qtquick-controls2
- qml-module-qtquick-layouts
- qml-module-qtquick-window2
- libcmark0.30.2
- libfmt8
- libolm3
- libqt5core5a
- libqt5dbus5
- libqt5gui5
- libqt5keychain1
- libqt5multimedia5
- libqt5multimedia5-plugins
- libqt5network5
- libqt5quickwidgets5
- libqt5svg5
- libqt5widgets5
- libspdlog1-fmt8
- libxcb-ewmh2
- libxcb1
- librubberband2
- libsm6
- libsnappy1v5
- libxau6
- libxcb-render-util0
- libxcb-sync1
- libxcb-xinerama0
- libxcb-xkb1
- libxcursor1
- libxdmcp6
- libxext6
- libxfixes3
- libxrender1
- libxshmfence1
- libxv1
- libxxf86vm1
- libzstd1
exclude: []
files:
exclude:
- usr/share/man
- usr/share/doc
- usr/bin/cmark
- usr/bin/dbus*
- usr/bin/openssl
- usr/bin/c_rehash
- usr/bin/session-migration
- usr/include
- usr/sbin
- lib/systemd
test:
fedora:
image: appimagecrafters/tests-env:fedora-30
command: ./AppRun
use_host_x: true
debian:
image: appimagecrafters/tests-env:debian-stable
command: ./AppRun
use_host_x: true
arch:
image: appimagecrafters/tests-env:archlinux-latest
command: ./AppRun
use_host_x: true
centos:
image: appimagecrafters/tests-env:centos-7
command: ./AppRun
use_host_x: true
ubuntu:
image: appimagecrafters/tests-env:ubuntu-xenial
command: ./AppRun
use_host_x: true
AppImage:
arch: x86_64
update-information: None
sign-key: None