Update CI, Deprecate Linux/MacOS for now (#960)
This commit is contained in:
parent
51338e30e0
commit
f174a633d7
395
.github/workflows/build.yml
vendored
395
.github/workflows/build.yml
vendored
@ -1,282 +1,203 @@
|
||||
name: CI build
|
||||
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
|
||||
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
|
||||
name: CI Build
|
||||
|
||||
on: [push, pull_request]
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
|
||||
env:
|
||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
version:
|
||||
- 5.15.2
|
||||
platform:
|
||||
- gcc_64
|
||||
- android
|
||||
- msvc2019
|
||||
- mingw81_32
|
||||
- clang_64
|
||||
formatting-check:
|
||||
name: formatting-check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run clang-format style check for C++
|
||||
uses: jidicula/clang-format-action@v4.12.0
|
||||
with:
|
||||
clang-format-version: '17'
|
||||
check-path: 'src'
|
||||
fallback-style: LLVM
|
||||
|
||||
include:
|
||||
- platform: gcc_64
|
||||
os: ubuntu-latest
|
||||
target: desktop
|
||||
make: make
|
||||
|
||||
- platform: android
|
||||
os: ubuntu-20.04
|
||||
target: android
|
||||
make: make
|
||||
|
||||
- platform: msvc2019
|
||||
os: windows-2019
|
||||
target: desktop
|
||||
make: nmake
|
||||
|
||||
- platform: mingw81_32
|
||||
os: windows-latest
|
||||
target: desktop
|
||||
arch: win32_mingw81
|
||||
tools: 'tools_mingw,qt.tools.win32_mingw810'
|
||||
make: mingw32-make
|
||||
|
||||
- platform: clang_64
|
||||
os: macos-latest
|
||||
target: desktop
|
||||
make: make
|
||||
|
||||
runs-on: ${{matrix.os}}
|
||||
build-windows:
|
||||
needs: formatting-check
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: actions/setup-python@master
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
if: matrix.platform == 'msvc2019'
|
||||
uses: microsoft/setup-msbuild@main
|
||||
|
||||
- name: Downgrade Android NDK
|
||||
if: matrix.platform == 'android'
|
||||
run: |
|
||||
ANDROID_ROOT=/usr/local/lib/android
|
||||
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
||||
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
|
||||
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
|
||||
echo "y" | $SDKMANAGER "ndk;21.4.7075529"
|
||||
echo "y" | $SDKMANAGER "platforms;android-24"
|
||||
|
||||
# this is so stupid but i can't find anything else that works
|
||||
rm -rf $ANDROID_HOME/ndk/25.2.9519653
|
||||
ln -sf $ANDROID_HOME/ndk/21.4.7075529 $ANDROID_HOME/ndk/25.2.9519653
|
||||
|
||||
|
||||
- name: Install Qt
|
||||
if: matrix.os != 'ubuntu-latest'
|
||||
uses: jurplel/install-qt-action@v3
|
||||
id: qt
|
||||
with:
|
||||
version: ${{matrix.version}}
|
||||
target: ${{matrix.target}}
|
||||
arch: ${{matrix.arch}}
|
||||
tools: ${{matrix.tools}}
|
||||
version: 5.15.2
|
||||
target: desktop
|
||||
arch: win64_msvc2019_64
|
||||
cache: true
|
||||
cache-key-prefix: qt
|
||||
cache-key-prefix: qt-windows-5.15.2
|
||||
|
||||
- name: Clone QtApng
|
||||
uses: actions/checkout@master
|
||||
with:
|
||||
repository: Skycoder42/QtApng
|
||||
path: "QtApng"
|
||||
|
||||
- name: Configure MSVC (Windows)
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Build and deploy QtApng
|
||||
run: |
|
||||
cd QtApng/src/3rdparty
|
||||
chmod +x get_libs.sh
|
||||
./get_libs.sh 1.3.1 1.6.40
|
||||
cd ../..
|
||||
qmake CONFIG+=install_ok QMAKE_CXXFLAGS+="-fno-sized-deallocation"
|
||||
nmake
|
||||
cd ..
|
||||
mkdir ./bin/imageformats
|
||||
cp ./QtApng/plugins/imageformats/qapng.dll ./bin/imageformats/qapng.dll
|
||||
|
||||
- name: Install Windows Discord RPC
|
||||
shell: bash
|
||||
run: |
|
||||
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-win.zip -o discord_rpc.zip
|
||||
unzip discord_rpc.zip
|
||||
cp ./discord-rpc/win64-dynamic/lib/discord-rpc.lib ./lib/
|
||||
cp ./discord-rpc/win64-dynamic/bin/discord-rpc.dll ./bin/
|
||||
cp ./discord-rpc/win64-dynamic/include/discord*.h ./lib/
|
||||
|
||||
- name: Install Windows BASS
|
||||
shell: bash
|
||||
run: |
|
||||
curl http://www.un4seen.com/files/bass24.zip -o bass.zip
|
||||
unzip -d bass -o bass.zip
|
||||
cp ./bass/c/bass.h ./lib
|
||||
cp ./bass/c/x64/bass.lib ./lib/
|
||||
cp ./bass/x64/bass.dll ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip
|
||||
unzip -d bass -o bassmidi.zip
|
||||
cp ./bass/c/bassmidi.h ./lib
|
||||
cp ./bass/c/x64/bassmidi.lib ./lib/
|
||||
cp ./bass/x64/bassmidi.dll ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
|
||||
unzip -d bass -o bassopus.zip
|
||||
cp ./bass/c/bassopus.h ./lib
|
||||
cp ./bass/c/x64/bassopus.lib ./lib/
|
||||
cp ./bass/x64/bassopus.dll ./bin/
|
||||
|
||||
- name: Set reusable strings
|
||||
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
|
||||
id: strings
|
||||
shell: bash
|
||||
run: |
|
||||
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Configure CMake
|
||||
run: >
|
||||
cmake -B ${{ steps.strings.outputs.build-output-dir }}
|
||||
-DCMAKE_CXX_COMPILER=cl
|
||||
-DCMAKE_C_COMPILER=cl
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-S ${{ github.workspace }}
|
||||
|
||||
- name: Build
|
||||
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release
|
||||
|
||||
- name: Deploy Windows
|
||||
working-directory: ${{github.workspace}}/bin/
|
||||
shell: bash
|
||||
run: |
|
||||
windeployqt --no-quick-import --no-translations --no-virtualkeyboard --no-compiler-runtime --no-webkit2 --no-opengl-sw ./Attorney_Online.exe
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: Attorney_Online-Windows
|
||||
path: ${{github.workspace}}/bin
|
||||
|
||||
build-linux:
|
||||
needs: formatting-check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Qt (Ubuntu)
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get upgrade
|
||||
sudo apt-get install qtbase5-dev libqt5websockets5-dev qttools5-dev qt5-image-formats-plugins
|
||||
|
||||
- name: Add tools to PATH (MinGW)
|
||||
if: matrix.platform == 'mingw81_32'
|
||||
shell: bash
|
||||
run: echo "$RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin" >> $GITHUB_PATH
|
||||
- name: Clone QtApng
|
||||
uses: actions/checkout@master
|
||||
with:
|
||||
repository: Skycoder42/QtApng
|
||||
path: "QtApng"
|
||||
|
||||
- name: Configure MSVC (Windows)
|
||||
if: contains(matrix.platform, 'msvc')
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Build QtApng
|
||||
- name: Build and deploy QtApng
|
||||
run: |
|
||||
git clone https://github.com/Skycoder42/QtApng.git
|
||||
cd QtApng
|
||||
cd src/3rdparty
|
||||
cd QtApng/src/3rdparty
|
||||
chmod +x get_libs.sh
|
||||
./get_libs.sh 1.3.1 1.6.40
|
||||
cd ../..
|
||||
qmake CONFIG+=install_ok QMAKE_CXXFLAGS+="-fno-sized-deallocation" QT_PLATFORM=${{matrix.platform}}
|
||||
${{matrix.make}}
|
||||
|
||||
- name: Install QtApng
|
||||
if: matrix.os != 'ubuntu-latest'
|
||||
run: |
|
||||
cd QtApng
|
||||
${{matrix.make}} INSTALL_ROOT="${Qt5_DIR}" install
|
||||
|
||||
- name: Install QtApng (Ubuntu)
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
cd QtApng
|
||||
sudo ${{matrix.make}} install
|
||||
|
||||
- name: Install Windows Discord RPC
|
||||
if: contains(matrix.os, 'windows')
|
||||
env:
|
||||
ARCH: ${{ matrix.platform == 'msvc2019' && '64' || '32'}}
|
||||
shell: bash
|
||||
run: |
|
||||
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-win.zip -o discord_rpc.zip
|
||||
unzip discord_rpc.zip
|
||||
cp ./discord-rpc/win${ARCH}-dynamic/lib/discord-rpc.lib ./lib/
|
||||
cp ./discord-rpc/win${ARCH}-dynamic/bin/discord-rpc.dll ./bin/
|
||||
cp ./discord-rpc/win${ARCH}-dynamic/include/discord*.h ./include/
|
||||
qmake CONFIG+=install_ok QMAKE_CXXFLAGS+="-fno-sized-deallocation"
|
||||
make
|
||||
|
||||
- name: Install Linux Discord RPC
|
||||
if: matrix.platform == 'gcc_64'
|
||||
run: |
|
||||
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc.zip
|
||||
unzip discord_rpc.zip
|
||||
cp ./discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ./lib/
|
||||
cp ./discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ./bin/
|
||||
cp ./discord-rpc/linux-dynamic/include/discord*.h ./include/
|
||||
|
||||
- name: Install Mac Discord RPC
|
||||
if: matrix.os == 'macos-latest'
|
||||
run: |
|
||||
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip -o discord_rpc.zip
|
||||
unzip discord_rpc.zip
|
||||
cp ./discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ./lib/
|
||||
cp ./discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ./bin/
|
||||
cp ./discord-rpc/osx-dynamic/include/discord*.h ./include/
|
||||
|
||||
- name: Install Windows BASS
|
||||
if: contains(matrix.os, 'windows')
|
||||
env:
|
||||
ARCH: ${{ matrix.platform == 'msvc2019' && '/x64/' || ''}}
|
||||
shell: bash
|
||||
run: |
|
||||
curl http://www.un4seen.com/files/bass24.zip -o bass.zip
|
||||
unzip -d bass -o bass.zip
|
||||
cp ./bass/c/${ARCH}bass.lib ./lib/
|
||||
cp ./bass/${ARCH}bass.dll ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip
|
||||
unzip -d bass -o bassmidi.zip
|
||||
cp ./bass/c/${ARCH}bassmidi.lib ./lib/
|
||||
cp ./bass/${ARCH}bassmidi.dll ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
|
||||
unzip -d bass -o bassopus.zip
|
||||
cp ./bass/c/${ARCH}bassopus.lib ./lib/
|
||||
cp ./bass/${ARCH}bassopus.dll ./bin/
|
||||
cp ./discord-rpc/linux-dynamic/include/discord*.h ./src/
|
||||
|
||||
- name: Install Linux BASS
|
||||
if: matrix.platform == 'gcc_64'
|
||||
run: |
|
||||
curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip
|
||||
unzip -d bass -o bass.zip
|
||||
cp ./bass/bass.h ./lib
|
||||
cp ./bass/libs/x86_64/libbass.so ./lib/
|
||||
cp ./bass/libs/x86_64/libbass.so ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassmidi24-linux.zip -o bassmidi.zip
|
||||
unzip -d bass -o bassmidi.zip
|
||||
cp ./bass/bassmidi.h ./lib
|
||||
cp ./bass/libs/x86_64/libbassmidi.so ./lib/
|
||||
cp ./bass/libs/x86_64/libbassmidi.so ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip
|
||||
unzip -d bass -o bassopus.zip
|
||||
cp ./bass/bassopus.h ./lib
|
||||
cp ./bass/libs/x86_64/libbassopus.so ./lib/
|
||||
cp ./bass/libs/x86_64/libbassopus.so ./bin/
|
||||
|
||||
- name: Install Mac BASS
|
||||
if: matrix.os == 'macos-latest'
|
||||
run: |
|
||||
curl http://www.un4seen.com/files/bass24-osx.zip -o bass.zip
|
||||
unzip -d bass -o bass.zip
|
||||
cp ./bass/libbass.dylib ./lib/
|
||||
cp ./bass/libbass.dylib ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassmidi24-osx.zip -o bassmidi.zip
|
||||
unzip -d bass -o bassmidi.zip
|
||||
cp ./bass/libbassmidi.dylib ./lib/
|
||||
cp ./bass/libbassmidi.dylib ./bin/
|
||||
|
||||
curl http://www.un4seen.com/files/bassopus24-osx.zip -o bassopus.zip
|
||||
unzip -d bass -o bassopus.zip
|
||||
cp ./bass/libbassopus.dylib ./lib/
|
||||
cp ./bass/libbassopus.dylib ./bin/
|
||||
|
||||
- name: Install Android BASS
|
||||
if: matrix.platform == 'android'
|
||||
run: |
|
||||
mkdir -p ./android/libs/armeabi-v7a/
|
||||
curl http://www.un4seen.com/files/bass24-android.zip -o bass.zip
|
||||
unzip -o bass.zip -d bass
|
||||
cp ./bass/libs/armeabi-v7a/libbass.so ./lib/
|
||||
unzip -o bass.zip "libs/*" -d "./android/libs/"
|
||||
cp ./bass/libs/armeabi-v7a/libbass.so ./android/libs/armeabi-v7a/
|
||||
|
||||
curl http://www.un4seen.com/files/bassmidi24-android.zip -o bassmidi.zip
|
||||
unzip -d bass -o bassmidi.zip
|
||||
cp ./bass/libs/armeabi-v7a/libbassmidi.so ./lib/
|
||||
unzip -o bassmidi.zip "libs/*" -d "./android/libs/"
|
||||
cp ./bass/libs/armeabi-v7a/libbassmidi.so ./android/libs/armeabi-v7a/
|
||||
|
||||
curl http://www.un4seen.com/files/bassopus24-android.zip -o bassopus.zip
|
||||
unzip -d bass -o bassopus.zip
|
||||
cp ./bass/libs/armeabi-v7a/libbassopus.so ./lib/
|
||||
unzip -o bassopus.zip "libs/*" -d "./android/libs/"
|
||||
cp ./bass/libs/armeabi-v7a/libbassopus.so ./android/libs/armeabi-v7a/
|
||||
|
||||
- name: qmake
|
||||
if: matrix.platform != 'android'
|
||||
run: |
|
||||
qmake QMAKE_CXXFLAGS+="-fno-sized-deallocation" DEFINES+=DISCORD CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}}
|
||||
|
||||
- name: qmake android
|
||||
if: matrix.platform == 'android'
|
||||
run: |
|
||||
qmake CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}} ANDROID_ABIS="armeabi-v7a"
|
||||
|
||||
- name: build
|
||||
run: |
|
||||
${{matrix.make}}
|
||||
|
||||
- name: Deploy Windows
|
||||
if: contains(matrix.os, 'windows')
|
||||
working-directory: ${{github.workspace}}/bin/
|
||||
- name: Set reusable strings
|
||||
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
|
||||
id: strings
|
||||
shell: bash
|
||||
run: |
|
||||
windeployqt --no-quick-import --no-translations --no-virtualkeyboard --no-compiler-runtime --no-webkit2 --no-opengl-sw .
|
||||
cp ../QtApng/plugins/imageformats/qapng.dll ./imageformats/
|
||||
rm ./imageformats/qtiff.dll
|
||||
rm ./imageformats/qicns.dll
|
||||
rm ./imageformats/qico.dll
|
||||
rm ./imageformats/qsvg.dll
|
||||
rm ./imageformats/qtga.dll
|
||||
rm ./imageformats/qwbmp.dll
|
||||
rm ./Qt5Svg.dll
|
||||
rm -r iconengines
|
||||
rm -r bearer
|
||||
rm -r styles
|
||||
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Copy MingW DLL
|
||||
if: matrix.platform == 'mingw81_32'
|
||||
working-directory: ${{github.workspace}}/bin/
|
||||
shell: bash
|
||||
run: |
|
||||
cp $RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin/libgcc_s_dw2-1.dll .
|
||||
cp $RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin/libstdc++-6.dll .
|
||||
cp $RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin/libwinpthread-1.dll .
|
||||
- name: Configure CMake
|
||||
run: >
|
||||
cmake -B ${{ steps.strings.outputs.build-output-dir }}
|
||||
-DCMAKE_CXX_COMPILER=g++
|
||||
-DCMAKE_C_COMPILER=gcc
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-S ${{ github.workspace }}
|
||||
|
||||
- name: Build
|
||||
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release
|
||||
|
||||
- name: Deploy Linux
|
||||
if: matrix.platform == 'gcc_64'
|
||||
working-directory: ${{github.workspace}}/bin/
|
||||
shell: bash
|
||||
run: |
|
||||
@ -291,34 +212,8 @@ jobs:
|
||||
rm *.sh
|
||||
rm Attorney_Online
|
||||
|
||||
- name: Deploy Mac
|
||||
if: matrix.os == 'macos-latest'
|
||||
working-directory: ${{github.workspace}}/bin/
|
||||
shell: bash
|
||||
run: |
|
||||
macdeployqt Attorney_Online.app
|
||||
cp ../QtApng/plugins/imageformats/libqapng.dylib ./Attorney_Online.app/Contents/PlugIns/imageformats/
|
||||
mv *.dylib ./Attorney_Online.app/Contents/Frameworks
|
||||
install_name_tool -change @loader_path/libbass.dylib @rpath/libbass.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
|
||||
install_name_tool -change @loader_path/libbassopus.dylib @rpath/libbassopus.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
|
||||
install_name_tool -change @loader_path/libbassmidi.dylib @rpath/libbassmidi.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
|
||||
install_name_tool -change @loader_path/libdiscord-rpc.dylib @rpath/libdiscord-rpc.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
|
||||
install_name_tool -change @loader_path/libqapng.dylib @rpath/libqapng.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
|
||||
hdiutil create -volname "Attorney_Online" -srcfolder "./Attorney_Online.app" -ov -format UDZO "Attorney_Online.dmg"
|
||||
rm -r ./Attorney_Online.app/
|
||||
|
||||
- name: Deploy Android
|
||||
if: matrix.platform == 'android'
|
||||
working-directory: ${{github.workspace}}/
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p ./build/libs/armeabi-v7a/
|
||||
mv ./bin/*.so ./build/libs/armeabi-v7a/
|
||||
cp ./QtApng/plugins/imageformats/libplugins_imageformats_qapng_armeabi-v7a.so ./build/libs/armeabi-v7a/
|
||||
androiddeployqt --android-platform android-24 --input android-Attorney_Online-deployment-settings.json --output ./build/ --apk ./bin/AttorneyOnline.apk
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: Attorney_Online-${{matrix.os}}-${{matrix.platform}}
|
||||
path: ${{github.workspace}}/bin/
|
||||
name: Attorney_Online-Linux
|
||||
path: ${{github.workspace}}/bin/Attorney_Online.tar
|
||||
|
@ -124,3 +124,7 @@ endif()
|
||||
if(AO_BUILD_TESTS)
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
|
||||
set_target_properties(Attorney_Online PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY $<1:${CMAKE_CURRENT_LIST_DIR}/bin>
|
||||
RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_CURRENT_LIST_DIR}/bin>)
|
||||
|
Loading…
Reference in New Issue
Block a user