aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml377
-rw-r--r--.github/workflows/clang-tidy-review.yml9
-rw-r--r--.github/workflows/test.yml2
3 files changed, 213 insertions, 175 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index c1c22914..fac5f383 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,176 +1,213 @@
-name: build
+name: CI build
-on: push
+on: [push]
env:
- # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
- BUILD_TYPE: Release
+ ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
jobs:
- windows:
- runs-on: windows-latest
-
+ build:
+ strategy:
+ fail-fast: false
+ matrix:
+ version:
+ - 5.15.1
+ platform:
+ - gcc_64
+ - android
+ - msvc2019
+ - mingw81_32
+ - clang_64
+
+ include:
+ - platform: gcc_64
+ os: ubuntu-latest
+ - platform: android
+ os: ubuntu-latest
+ - platform: msvc2019
+ os: windows-2019
+ - platform: mingw81_32
+ os: windows-latest
+ - platform: clang_64
+ os: macos-latest
+
+ runs-on: ${{matrix.os}}
steps:
- - uses: actions/checkout@v2
-
- - name: Install Catch2
- shell: bash
- run: |
- curl -L https://github.com/catchorg/Catch2/archive/v2.13.4.tar.gz -o catch2.tar.gz
- tar xvf catch2.tar.gz
- cd Catch2-2.13.4
- cmake -Bbuild -H. -DBUILD_TESTING=OFF
- cmake --build build/ --target install
-
- - name: Fetch external libs
- run: |
- # QtApng
- curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.4/qtapng-msvc2017_64-5.14.1.zip -o apng.zip
- unzip apng.zip
-
- # discord-rpc
- curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-win.zip -o discord_rpc_win.zip
- unzip discord_rpc_win.zip
- cp ./discord-rpc/win64-dynamic/lib/discord-rpc.lib ./lib
-
- # BASS
- curl http://www.un4seen.com/files/bass24.zip -o bass.zip
- unzip bass.zip
- cp ./c/x64/bass.lib ./lib
-
- # BASS MIDI
- curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip
- unzip bassmidi.zip
- cp ./c/x64/bassmidi.lib ./lib
-
- # BASS Opus
- curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
- unzip bassopus.zip
- cp ./c/x64/bassopus.lib ./lib
-
- - name: Cache Qt
- id: cache-qt
- uses: actions/cache@v1
- with:
- path: ../Qt
- key: ${{ runner.os }}-qt5
-
- - name: Install Qt
- uses: jurplel/install-qt-action@v2
- with:
- version: '5.15.2'
- cached: ${{steps.cache-qt.outputs.cache-hit}}
-
- - name: Create Build Environment
- run: cmake -E make_directory ${{github.workspace}}/build
-
- - name: Configure CMake
- shell: bash
- working-directory: ${{github.workspace}}/build
- run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
-
- - name: Build
- working-directory: ${{github.workspace}}/build
- shell: bash
- run: cmake --build . --config $BUILD_TYPE --target Attorney_Online
-
- - name: Deploy
- working-directory: ${{github.workspace}}/build/Release
- shell: bash
- run: |
- windeployqt .
- cp ../../msvc2017_64/plugins/imageformats/qapng.dll ./imageformats/
- cp ../../discord-rpc/win64-dynamic/bin/discord-rpc.dll .
- cp ../../x64/bass.dll .
- cp ../../x64/bassmidi.dll .
- cp ../../x64/bassopus.dll .
-
- - name: Upload Artifact
- uses: actions/upload-artifact@v2
- with:
- name: Attorney_Online-x64
- path: ${{github.workspace}}/build/Release/
-
- # linux:
- # # The CMake configure and build commands are platform agnostic and should work equally
- # # well on Windows or Mac. You can convert this to a matrix build if you need
- # # cross-platform coverage.
- # # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
- # runs-on: ubuntu-20.04
-
- # steps:
- # - uses: actions/checkout@v2
-
- # - name: Install catch2
- # run: |
- # curl -L https://github.com/catchorg/Catch2/archive/v2.13.4.tar.gz -o catch2.tar.gz
- # tar xvf catch2.tar.gz
- # cd Catch2-2.13.4
- # cmake -Bbuild -H. -DBUILD_TESTING=OFF
- # sudo cmake --build build/ --target install
-
- # - name: Fetch external libs
- # run: |
- # # Download
- # curl http://www.un4seen.com/files/bass24-linux.zip -o bass_linux.zip
- # curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus_linux.zip
- # curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc_linux.zip
- # # Extract
- # unzip bass_linux.zip
- # unzip bassopus_linux.zip
- # unzip discord_rpc_linux.zip
- # # Copy
- # cp x64/libbass.so lib
- # cp x64/libbassopus.so lib
- # cp discord-rpc/linux-dynamic/lib/libdiscord-rpc.so lib
-
- # - name: Install Qt5
- # run: sudo apt update -y && sudo apt install -y qt5-default
-
- # - name: Install QtApng
- # run: |
- # git clone https://github.com/Skycoder42/QtApng
- # cd QtApng
- # qmake
- # make
- # sudo make install
-
- # - name: Create Build Environment
- # # Some projects don't allow in-source building, so create a separate build directory
- # # We'll use this as our working directory for all subsequent commands
- # run: cmake -E make_directory ${{github.workspace}}/build
-
- # - name: Configure CMake
- # # Use a bash shell so we can use the same syntax for environment variable
- # # access regardless of the host operating system
- # shell: bash
- # env:
- # CC: gcc-10
- # CXX: g++-10
- # working-directory: ${{github.workspace}}/build
- # # Note the current convention is to use the -S and -B options here to specify source
- # # and build directories, but this is only available with CMake 3.13 and higher.
- # # The CMake binaries on the Github Actions machines are (as of this writing) 3.12
- # run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
-
- # - name: Build
- # working-directory: ${{github.workspace}}/build
- # shell: bash
- # # Execute the build. You can specify a specific target with "--target <NAME>"
- # run: cmake --build . --config $BUILD_TYPE --target Attorney_Online
-
- # - name: Strip
- # working-directory: ${{github.workspace}}/build
- # shell: bash
- # run: strip -s Attorney_Online
-
- # - name: Compress
- # working-directory: ${{github.workspace}}/build
- # shell: bash
- # run: tar czvf Attorney_Online-linux-x86_64.tgz Attorney_Online
-
- # - name: Upload Artifact
- # uses: actions/upload-artifact@v2
- # with:
- # name: Attorney_Online
- # path: ${{github.workspace}}/build/Attorney_Online-linux-x86_64.tgz
+ - uses: actions/checkout@master
+ with:
+ submodules: recursive
+ - uses: actions/setup-python@master
+ - name: actions/cache qt
+ uses: actions/cache@master
+ id: cache
+ with:
+ path: qt/${{matrix.version}}/${{matrix.platform}}
+ key: qt-${{matrix.version}}-${{matrix.platform}}
+
+ - name: Add msbuild to PATH
+ if: matrix.platform == 'msvc2019'
+ uses: microsoft/setup-msbuild@master
+
+ - uses: stonedDiscord/action-setup-qt@master
+ id: qt
+ with:
+ version: 5.15.1
+ platform: ${{matrix.platform}}
+
+ - name: Install QtApng
+ run: |
+ git clone https://github.com/Skycoder42/QtApng.git
+ cd QtApng
+ qmake CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}}
+ ${{steps.qt.outputs.make}} qmake_all
+ ${{steps.qt.outputs.make}}
+ ${{steps.qt.outputs.make}} INSTALL_ROOT="${{steps.qt.outputs.installdir}}" install
+
+ - name: Create bin folder
+ run: |
+ mkdir bin
+
+ - name: Install Windows Discord RPC
+ if: contains(matrix.os, 'windows')
+ 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/win32-dynamic/lib/discord-rpc.lib ./lib/
+ cp ./discord-rpc/win32-dynamic/bin/discord-rpc.dll ./bin/
+
+ - 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/
+
+ - 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/
+
+ - name: Install Windows BASS
+ if: contains(matrix.os, 'windows')
+ run: |
+ curl http://www.un4seen.com/files/bass24.zip -o bass.zip
+ unzip -d bass -o bass.zip
+ cp ./bass/c/bass.lib ./lib/
+ cp ./bass/bass.dll ./bin/
+
+ curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip
+ unzip -d bass -o bassmidi.zip
+ cp ./bass/c/bassmidi.lib ./lib/
+ cp ./bass/bassmidi.dll ./bin/
+
+ curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
+ unzip -d bass -o bassopus.zip
+ cp ./bass/c/bassopus.lib ./lib/
+ cp ./bass/bassopus.dll ./bin/
+
+ - 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/x64/libbass.so ./lib/
+ cp ./bass/x64/libbass.so ./bin/
+
+ curl http://www.un4seen.com/files/bassmidi24-linux.zip -o bassmidi.zip
+ unzip -d bass -o bassmidi.zip
+ cp ./bass/x64/libbassmidi.so ./lib/
+ cp ./bass/x64/libbassmidi.so ./bin/
+
+ curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip
+ unzip -d bass -o bassopus.zip
+ cp ./bass/x64/libbassopus.so ./lib/
+ cp ./bass/x64/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 ./android/libs/
+ mkdir ./android/libs/armeabi-v7a/
+ curl http://www.un4seen.com/files/bass24-android.zip -o bass.zip
+ unzip -d bass -o bass.zip
+ cp ./bass/libs/armeabi-v7a/libbass.so ./lib/
+ 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/
+ 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/
+ cp ./bass/libs/armeabi-v7a/libbassopus.so ./android/libs/armeabi-v7a/
+
+ - name: qmake
+ run: |
+ qmake CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}} ANDROID_ABIS="armeabi-v7a"
+
+ - name: build
+ run: |
+ ${{steps.qt.outputs.make}}
+
+ - name: Deploy Windows
+ if: contains(matrix.os, 'windows')
+ working-directory: ${{github.workspace}}/bin/
+ shell: bash
+ run: |
+ windeployqt .
+ cp ../QtApng/plugins/imageformats/qapng.dll ./imageformats/
+
+ - 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
+
+ - name: Deploy Android
+ if: matrix.platform == 'android'
+ working-directory: ${{github.workspace}}/
+ shell: bash
+ run: |
+ mkdir ./build/libs/
+ mkdir ./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 --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.platform}}
+ path: ${{github.workspace}}/bin/
diff --git a/.github/workflows/clang-tidy-review.yml b/.github/workflows/clang-tidy-review.yml
index 4701f6b5..8fa0f046 100644
--- a/.github/workflows/clang-tidy-review.yml
+++ b/.github/workflows/clang-tidy-review.yml
@@ -17,10 +17,10 @@ jobs:
qt: '5.15.2'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@master
- name: Restore Qt cache
- uses: actions/cache@v2.1.7
+ uses: actions/cache@master
id: cache-qt
with:
path: ${{github.workspace}}/Qt/${{matrix.qt}}
@@ -44,7 +44,7 @@ jobs:
sudo cmake --build build/ --target install
- name: Use CMake 3.20.1
- uses: lukka/get-cmake@v3.20.1
+ uses: lukka/get-cmake@main
- name: Generate compile_commands.json
uses: lukka/run-cmake@v3
@@ -59,12 +59,13 @@ jobs:
buildWithCMakeArgs: >-
--target autogen
- - uses: ZedThree/clang-tidy-review@v0.8.2
+ - uses: ZedThree/clang-tidy-review@v0.8.3
id: review
with:
build_dir: 'build'
clang_tidy_checks: '-*,performance-*,readability-*,bugprone-*,clang-analyzer-*,cppcoreguidelines-*,mpi-*,misc-*,-cppcoreguidelines-owning-memory,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-init-variables,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-avoid-magic-numbers'
apt_packages: 'pkg-config,libzip-dev,libglu1-mesa-dev,libpulse-dev'
+ max_comments: 10
# If there are any comments, fail the check
- if: steps.review.outputs.total_comments > 0
run: exit 1
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 0ef86954..c09340cc 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -17,7 +17,7 @@ jobs:
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@master
- name: Install catch2
run: |