# Copyright (C) 2021-2024 Saturneric # # This file is part of GpgFrontend. # # GpgFrontend is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # GpgFrontend is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GpgFrontend. If not, see . # # The initial version of the source code is inherited from # the gpg4usb project, which is under GPL-3.0-or-later. # # All the source code of GpgFrontend was modified and released by # Saturneric starting on May 12, 2021. # # SPDX-License-Identifier: GPL-3.0-or-later name: Develop CI Qt6 on: push: branches: ["dev/**"] paths-ignore: - "resource/lfs/locale/**" - "**.md" pull_request: branches: ["dev/**"] paths-ignore: - "resource/lfs/locale/**" - "**.md" env: BUILD_TYPE: Debug jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: lfs: "false" submodules: recursive - name: Get Short SHA of Commit id: vars run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - name: Install Dependence run: | sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list sudo apt-get update sudo apt-get -y install build-essential binutils git cmake sudo apt-get -y install autoconf automake gettext texinfo sudo apt-get -y install gcc g++ ninja-build gnupg qtchooser qt6-base-dev qt6-base-dev-tools qt6-l10n-tools qt6-tools-dev qt6-tools-dev-tools libqt6svg6 sudo apt-get -y install libarchive-dev libssl-dev libgpgme-dev libgl1-mesa-dev libfuse2 - name: Build GpgME run: | git clone --depth 1 --branch gpgme-1.24.2 git://git.gnupg.org/gpgme.git ${{github.workspace}}/third_party/gpgme cd ${{github.workspace}}/third_party/gpgme ./autogen.sh ./configure --enable-maintainer-mode --enable-languages=cpp && make -j8 sudo make install - name: Build googletest run: | git clone --depth 1 --branch v1.15.0 https://github.com/google/googletest.git ${{github.workspace}}/third_party/googletest cd ${{github.workspace}}/third_party/googletest mkdir build && cd build cmake -G Ninja -DBUILD_SHARED_LIBS=ON .. ninja sudo ninja install - name: Build & Install Full SDK run: | cmake -B ${{github.workspace}}/build-full-sdk -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_FULL_SDK=ON cmake --build ${{github.workspace}}/build-full-sdk --config {{$env.BUILD_TYPE}} -- -v sudo cmake --install ${{github.workspace}}/build-full-sdk --config {{$env.BUILD_TYPE}} - name: Build Integrated Modules run: | cmake -S ${{github.workspace}}/modules -B ${{github.workspace}}/modules/build -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/modules/build/artifacts cmake --build ${{github.workspace}}/modules/build --config {{$env.BUILD_TYPE}} -- -v cmake --install ${{github.workspace}}/modules/build --config {{$env.BUILD_TYPE}} - name: Build GpgFrontend run: | cmake -B ${{github.workspace}}/build -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_APP_IMAGE=On cmake --build ${{github.workspace}}/build --config {{$env.BUILD_TYPE}} -- -v # - name: Setup tmate session # uses: mxschmitt/action-tmate@v3 - name: Copy Modules & Package App Image run: | cmake -E copy_directory ${{github.workspace}}/modules/build/artifacts/modules ${{github.workspace}}/build/artifacts/AppDir/usr/modules mkdir ${{github.workspace}}/build/final-artifact cd ${{github.workspace}}/build/final-artifact wget -c -nv https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage chmod u+x linuxdeployqt-continuous-x86_64.AppImage export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib qtchooser -install qt6 $(which qmake6) export QT_SELECT=qt6 mkdir -p ${{github.workspace}}/build/artifacts/AppDir/usr/share/doc/libc6 touch ${{github.workspace}}/build/artifacts/AppDir/usr/share/doc/libc6/copyright ./linuxdeployqt-continuous-x86_64.AppImage ${{github.workspace}}/build/artifacts/AppDir/usr/share/applications/*.desktop -no-translations -extra-plugins=iconengines,platforms/libqoffscreen.so -appimage -executable-dir=${{github.workspace}}/build/artifacts/AppDir/usr/modules/ -unsupported-allow-new-glibc echo "BUILD_TYPE_LOWER=${BUILD_TYPE,,}" >> ${GITHUB_ENV} echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> ${GITHUB_ENV} - name: Run Unit Tests run: | cd ${{github.workspace}}/build/final-artifact export QT_QPA_PLATFORM=offscreen export GTEST_OUTPUT=json:${{github.workspace}}/build/final-artifact/unit_tests.json ./Gpg_Frontend-*-x86_64.AppImage -t || true - name: Upload Artifact uses: actions/upload-artifact@v3 with: name: gpgfrontend-${{env.BUILD_TYPE_LOWER}}-${{env.SHORT_SHA}} path: | ${{github.workspace}}/build/final-artifact/Gpg_Frontend*.AppImage* ${{github.workspace}}/build/final-artifact/unit_tests.json