ci: use Qt 6.8.2 #692
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI/CD | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
create: null | |
env: | |
debianRequirements: "build-essential git zlib1g-dev cmake qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools qt6-declarative-dev qt6-base-dev libqt6svg6-dev qt6-base-dev-tools qt6-translations-l10n libqt6core5compat6-dev libqt6opengl6-dev libgl1-mesa-dev wget curl devscripts" | |
jobs: | |
main_build: | |
name: ${{ matrix.package_suffix }} ${{ matrix.interface }} ${{ matrix.build_type }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
qt: | |
- 6.8.2 | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
interface: | |
- cli | |
- gui | |
build_type: | |
- Release | |
- Debug | |
include: | |
- qt_tools: tools_ninja | |
qt_modules: qt5compat | |
cmake_cli_arg: 'OFF' | |
- os: ubuntu-latest | |
package_extension: 'tar.xz' | |
package_suffix: 'linux64' | |
ff7tk_pack_suffix: "linux_x86_64.tar.gz" | |
ff7tk_install_command_extract: "tar -xf" | |
ff7tk_install_command_dest: "--one-top-level=" | |
- os: macos-latest | |
package_extension: 'dmg' | |
package_suffix: 'macos' | |
ff7tk_pack_suffix: "macos.zip" | |
ff7tk_install_command_extract: "unzip " | |
ff7tk_install_command_dest: "-d " | |
cmake_extra_args: "-DCMAKE_OSX_ARCHITECTURES=\"arm64;x86_64\"" | |
- os: windows-latest | |
package_extension: 'zip' | |
package_suffix: 'win64' | |
win_arch: "x64" | |
qt_arch: win64_msvc2022_64 | |
cmake_extra_args: '-DZLIB_ROOT=C:/zlib' | |
qt_tools: tools_ninja, tools_cmake | |
ff7tk_pack_suffix: "win64.7z" | |
ff7tk_install_command_extract: "7z x" | |
ff7tk_install_command_dest: "-o" | |
- interface: gui | |
cmake_cli_arg: 'OFF' | |
cmake_gui_arg: 'ON' | |
- interface: cli | |
cmake_cli_arg: 'ON' | |
cmake_gui_arg: 'OFF' | |
exclude: | |
- build_type: Debug | |
interface: cli | |
- build_type: Debug | |
os: macos-latest | |
- build_type: Debug | |
os: ubuntu-latest | |
env: | |
qt_installation_path: ${{ github.workspace }} | |
zlib_path: ${{ github.workspace }}/../zlib-git | |
zlib_build_path: ${{ github.workspace }}/../build-zlib-git | |
zlib_installation_path: C:/zlib | |
zlib_version: "1.3" | |
ff7tk_path: ${{ github.workspace }}/../ff7tk-git | |
ff7tk_build_path: ${{ github.workspace }}/../build-ff7tk-git | |
ff7tk_installation_path: ${{ github.workspace }}/ff7tk | |
makoureactor_build_path: ${{ github.workspace }}/../build-makoureactor | |
makoureactor_installation_path: ${{ github.workspace }}/../installation-makoureactor | |
makoureactor_appbundle_path: ${{ github.workspace }}/../appbundle-makoureactor | |
CMAKE_GENERATOR: Ninja | |
CMAKE_BUILD_TYPE: ${{ matrix.build_type }} | |
ff7tk_package: ff7tk-continuous-${{matrix.ff7tk_pack_suffix}} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Env Script (Windows) | |
uses: ilammy/msvc-dev-cmd@v1 | |
if: runner.os == 'Windows' | |
with: | |
arch: ${{ matrix.win_arch }} | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v4 | |
with: | |
dir: ${{ env.qt_installation_path }} | |
arch: ${{ matrix.qt_arch }} | |
version: ${{ matrix.qt }} | |
cache: true | |
tools: ${{ matrix.qt_tools }} | |
modules: ${{ matrix.qt_modules }} | |
- name: Configure env | |
shell: bash | |
run: | | |
QT_MAJOR_VERSION=$(echo "${{ matrix.qt }}" | sed -E 's/^([0-9]+)\..*/\1/') | |
echo "$IQTA_TOOLS/Ninja" >> $GITHUB_PATH | |
echo "$IQTA_TOOLS/CMake_64/bin" >> $GITHUB_PATH | |
echo "QT_MAJOR_VERSION=$QT_MAJOR_VERSION" >> $GITHUB_ENV | |
- name: Set prerelease string | |
if: github.event.ref_type != 'tag' | |
shell: bash | |
run: | | |
echo "PRERELEASE_STRING= unstable build" >> $GITHUB_ENV | |
- name: Cache Zlib | |
id: cache-zlib | |
if: runner.os == 'Windows' | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.zlib_installation_path }} | |
key: ${{ runner.os }}${{ matrix.win_arch }}-zlib-${{ env.zlib_version}}-${{ env.CMAKE_BUILD_TYPE }} | |
- name: Install Zlib | |
if: (runner.os == 'Windows') && (steps.cache-zlib.outputs.cache-hit != 'true') | |
run: | | |
git clone -q --depth 1 --single-branch --branch=v${{ env.zlib_version }} https://github.com/madler/zlib ${{ env.zlib_path }} | |
cmake -S${{ env.zlib_path }} -B${{ env.zlib_build_path }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DCMAKE_INSTALL_PREFIX=${{ env.zlib_installation_path }} | |
cmake --build ${{ env.zlib_build_path }} --target install -j3 | |
- name: Clone ff7tk repo (Debug) | |
if: matrix.build_type == 'Debug' | |
run: git clone -q --depth 1 --single-branch --branch continuous https://github.com/sithlord48/ff7tk.git ${{ env.ff7tk_path }} | |
- name: Remove .git ff7tk (Debug) | |
if: matrix.build_type == 'Debug' | |
shell: bash | |
run: rm -fr .git | |
working-directory: ${{ env.ff7tk_path }} | |
- name: Build ff7tk (Debug) | |
if: matrix.build_type == 'Debug' | |
run: | | |
cmake -B ${{ env.ff7tk_build_path }} -DCMAKE_CXX_FLAGS=/bigobj -DTESTS=OFF -DPACKAGE=OFF -DDEMOS=OFF -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DCMAKE_INSTALL_PREFIX=${{ env.ff7tk_installation_path }} -DQT_DEFAULT_MAJOR_VERSION=${{ env.QT_MAJOR_VERSION }} ${{ matrix.cmake_extra_args }} | |
cmake --build ${{ env.ff7tk_build_path }} --target install -j3 | |
working-directory: ${{ env.ff7tk_path }} | |
- name: Get ff7tk redist | |
if: matrix.build_type == 'Release' | |
run: curl -LJO https://github.com/sithlord48/ff7tk/releases/download/continuous/${{ env.ff7tk_package }} | |
- name: Install ff7tk | |
if: matrix.build_type == 'Release' | |
run: ${{matrix.ff7tk_install_command_extract}} ${{env.ff7tk_package}} ${{matrix.ff7tk_install_command_dest}}${{env.ff7tk_installation_path}} | |
- name: Download linuxdeployqt | |
if: runner.os == 'Linux' | |
run: | | |
wget -qc "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" | |
wget -qc "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" | |
export VERSION=continuous | |
chmod a+x linuxdeploy*.AppImage | |
mv linuxdeploy-plugin-qt-*.AppImage $QT_ROOT_DIR/bin/linuxdeploy-plugin-qt | |
mv linuxdeploy-*.AppImage $QT_ROOT_DIR/bin/linuxdeploy | |
- name: Build Makou Reactor | |
id: main_build | |
run: | | |
cmake -B ${{ env.makoureactor_build_path }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DCMAKE_INSTALL_PREFIX=${{ env.makoureactor_installation_path }} -Dff7tk_DIR=${{ env.ff7tk_installation_path }}/lib/cmake/ff7tk -DCLI:BOOL=${{ matrix.cmake_cli_arg }} -DGUI:BOOL=${{ matrix.cmake_gui_arg }} -DPRERELEASE_STRING="$PRERELEASE_STRING" ${{ matrix.cmake_extra_args }} | |
cmake --build ${{ env.makoureactor_build_path }} --target package -j3 | |
- name: Build AppImage (Linux) | |
if: runner.os == 'Linux' && matrix.interface == 'gui' | |
run: | | |
sudo add-apt-repository -y universe | |
sudo apt install -y libfuse2 libxkbcommon-x11-0 libxcb-cursor0 | |
cmake --build ${{ env.makoureactor_build_path }} --target install -j3 | |
mkdir -p ${{env.makoureactor_appbundle_path}}/usr/share/ff7tk/translations | |
cp ${{env.ff7tk_installation_path}}/share/ff7tk/translations/*.qm ${{env.makoureactor_appbundle_path}}/usr/share/ff7tk/translations | |
mkdir -p ${{env.makoureactor_appbundle_path}}/usr/share/makoureactor/translations | |
cp ${{env.makoureactor_installation_path}}/share/makoureactor/translations/*.qm ${{env.makoureactor_appbundle_path}}/usr/share/makoureactor/translations | |
mkdir -p ${{env.makoureactor_appbundle_path}}/usr/plugins/iconengines | |
cp ${{ env.qt_installation_path }}/Qt/${{ matrix.qt }}/gcc_64/plugins/iconengines/libqsvgicon.so ${{env.makoureactor_appbundle_path}}/usr/plugins/iconengines/libqsvgicon.so | |
export VERSION=continuous | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${{ env.ff7tk_installation_path }}/lib | |
export PATH=$PATH:${{ env.qt_installation_path }}/Qt/${{ matrix.qt }}/gcc_64/libexec | |
linuxdeploy --appdir="${{ env.makoureactor_appbundle_path }}" --plugin=qt --output appimage \ | |
-e "${{ env.makoureactor_installation_path }}"/bin/Makou_Reactor \ | |
-d "${{ env.makoureactor_installation_path }}"/share/applications/io.github.myst6re.makoureactor.desktop \ | |
-i "${{ env.makoureactor_installation_path }}"/share/icons/hicolor/256x256/apps/io.github.myst6re.makoureactor.png | |
mv *.AppImage makoureactor-continuous-${{ matrix.interface }}-${{ matrix.package_suffix }}.AppImage | |
- name: Prepare Upload | |
shell: bash | |
run: mv ../build-makoureactor/*.${{ matrix.package_extension }} makoureactor-continuous-${{ matrix.interface }}-${{ matrix.package_suffix }}-${{ matrix.build_type }}.${{ matrix.package_extension }} | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ matrix.package_suffix }}-${{ matrix.interface }}-${{ matrix.build_type }} | |
path: ${{ github.workspace }}/makoureactor-continuous-*.* | |
deb_builder: | |
name: debianBuilder-${{matrix.config.name}}-${{matrix.config.arch}} | |
runs-on: ${{matrix.config.os}} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: jammy , os: ubuntu-22.04 | |
, arch: x86_64 | |
} | |
- { | |
name: jammy , os: ubuntu-22.04-arm | |
, arch: aarch64 | |
} | |
- { | |
name: noble , os: ubuntu-24.04 | |
, arch: x86_64 | |
} | |
- { | |
name: noble , os: ubuntu-24.04-arm | |
, arch: aarch64 | |
} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- run: git fetch --tags --force | |
- name: Install Dependencies | |
run: | | |
sudo apt-get update -y > /dev/null | |
sudo apt-get install -qqq ${{env.debianRequirements}} > /dev/null | |
curl -s https://api.github.com/repos/sithlord48/ff7tk/releases/latest | awk -F\" '/browser_download_url.*${{matrix.config.name}}-${{matrix.config.arch}}*[.deb]/{print $(NF-1)}' | wget -i - | |
sudo apt -y -qqq install ./libff7tk*.deb | |
rm libff7tk*.deb | |
- name: Build | |
run: | | |
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DQT_DEFAULT_MAJOR_VERSION=6 -DCPACK_DEBIAN_PACKAGE_RELEASE=${{github.run_attempt}}~${{matrix.config.name}} | |
cmake --build build | |
cpack -G DEB -C Release --config build/CPackConfig.cmake | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: debian-artifacts-${{ matrix.config.name }}} | |
path: makoureactor*.deb | |
pre_release_assets: | |
name: Pre-Release | |
needs: [main_build, deb_builder] | |
if: (github.event.ref_type != 'tag') && (github.ref == 'refs/heads/master') | |
concurrency: pre-release-${{ github.ref }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Files | |
uses: actions/download-artifact@v4 | |
- name: Deploy Package | |
uses: crowbarmaster/GH-Automatic-Releases@latest | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
automatic_release_tag: "continuous" | |
prerelease: true | |
title: "Unstable Build" | |
files: | | |
artifact-*/* | |
debian-artifacts-*/* | |
release_assets: | |
name: Release | |
needs: [main_build, deb_builder] | |
if: github.event.ref_type == 'tag' | |
concurrency: release-${{ github.ref }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Files | |
uses: actions/download-artifact@v4 | |
- name: Prepare Upload | |
shell: bash | |
run: | | |
find . -type f -name 'makoureactor-continuous-*-Debug*' -delete | |
find . -type f -name 'makoureactor-continuous-*' -exec bash -c 'mv "{}" $(echo {} | sed 's/continuous-//' | sed 's/-Release//')' ';' | |
- name: Deploy Package | |
uses: crowbarmaster/GH-Automatic-Releases@latest | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
prerelease: false | |
title: ${{ github.event.ref }} | |
files: | | |
artifact-*/* | |
debian-artifacts-*/* | |