Skip to content

Main

Main #806

Workflow file for this run

name: "Main"
on:
push:
branches: [ "*" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '0 0 * * 5'
jobs:
configure:
name: Configure
runs-on: ubuntu-22.04
outputs:
tag: ${{steps.configure.outputs.tag}}
sha: ${{steps.configure.outputs.sha}}
upload_url: ${{steps.create_release.outputs.upload_url}}
steps:
- name: Cancel previous runs
uses: styfle/[email protected]
with:
access_token: ${{github.token}} # needs other token https://github.com/styfle/cancel-workflow-action/issues/7
- name: Configure
id: configure
shell: bash
run: |
tag_regex='^refs/tags/'
if [[ $GITHUB_EVENT_NAME == pull-request ]]; then # pull request
sha="${{github.event.pull_request.head.sha}}"
elif [[ $GITHUB_REF =~ $tag_regex ]]; then # release
sha="$GITHUB_SHA"
tag="${GITHUB_REF/refs\/tags\//}"
echo "::set-output name=tag::$tag"
else # push to branch
sha="$GITHUB_SHA"
fi
echo "::set-output name=sha::$sha"
- name: Checkout
if: steps.configure.outputs.tag != null
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare release parameters
id: prepare
if: steps.configure.outputs.tag != null
shell: bash
env:
TAG: ${{steps.configure.outputs.tag}}
run: .ci/prep_release.sh
- name: Create release
if: steps.configure.outputs.tag != null
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{github.token}}
with:
tag_name: ${{github.ref}}
release_name: ${{steps.prepare.outputs.title}}
body_path: ${{steps.prepare.outputs.body_path}}
draft: true
prerelease: ${{steps.prepare.outputs.is_beta == 'yes'}}
build-linux:
needs: configure
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
language: [ 'cpp' ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust
uses: hecrj/setup-rust-action@v2
with:
rust-version: nightly
- uses: actions/setup-python@v5
with:
python-version: '3.9'
cache: 'pip' # caching pip dependencies
- run: pip install -r requirements.txt -r src/mtg_search_engine/requirements.txt
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{matrix.language}}
- name: Install deps
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential \
cmake gcovr qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools \
valgrind python3 astyle qt6-l10n-tools \
libgl1-mesa-dev libjemalloc-dev libcurl4-openssl-dev \
libdwarf-dev libelf-dev libjansson-dev libabsl-dev
- name: Make Release
shell: bash
run : |
rm -rf build
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE
cmake --build . -j
build-macos:
strategy:
fail-fast: false
matrix:
include:
- target: Debug # tests only
os: macos-latest
xcode: 12.5.1
qt_version: 6
type: Debug
do_tests: 0
- target: 10.14_Mojave
os: macos-10.15 # runs on Catalina
xcode: 10.3 # allows compatibility with macOS 10.14
qt_version: 5
type: Release
do_tests: 0
make_package: 1
- target: 10.15_Catalina
os: macos-10.15
xcode: 12.4
qt_version: 6
type: Release
do_tests: 0
make_package: 1
- target: 11_Big_Sur
os: macos-11
xcode: 13.2
qt_version: 6
type: Release
do_tests: 0
make_package: 1
# - target: 12_Monterey
# os: macos-12
# xcode: 13.3
# qt_version: 6
# type: Release
# do_tests: 1
# make_package: 1
name: macOS ${{matrix.target}}
needs: configure
runs-on: ${{matrix.os}}
env:
DEVELOPER_DIR:
/Applications/Xcode_${{matrix.xcode}}.app/Contents/Developer
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust
uses: hecrj/setup-rust-action@v2
with:
rust-version: nightly
- uses: actions/setup-python@v5
with:
python-version: '3.9'
cache: 'pip' # caching pip dependencies
- run: pip install -r requirements.txt -r src/mtg_search_engine/requirements.txt
- name: Install dependencies using homebrew
shell: bash
# cmake cannot find the mysql connector
# neither of these works: mariadb-connector-c mysql-connector-c++
env:
qt_version: 'qt@${{matrix.qt_version}}'
run: |
brew update
brew install "$qt_version" --force-bottle
brew install llvm
brew install gcc
brew install python3
brew install curl
brew install openssl
- name: Build on Xcode ${{matrix.xcode}}
shell: bash
id: build
env:
BUILDTYPE: '${{matrix.type}}'
MAKE_TEST: '${{matrix.do_tests}}'
MAKE_PACKAGE: '${{matrix.make_package}}'
PACKAGE_SUFFIX: '-macOS-${{matrix.target}}'
# set QTDIR to find qt5, qt6 can be found without this
QTDIR: '/usr/local/opt/qt5'
run: mkdir build; cd build; cmake ..; cmake --build . -j
build-windows:
strategy:
fail-fast: false
matrix:
include:
- target: Win-32bit
arch: 32
vcpkg_default_triplet: x86
qt_version: '5.15.2'
cmake_generator_platform: Win32
qt_arch: msvc2019
qt_tools: "tools_openssl_x86"
- target: Win7+-64bit
arch: 64
vcpkg_default_triplet: x64
qt_version: '5.15.2'
cmake_generator_platform: x64
qt_arch: msvc2019_64
qt_tools: "tools_openssl_x86"
- target: Win10+-64bit
arch: 64
vcpkg_default_triplet: x64
qt_version: '6.3.0'
cmake_generator_platform: x64
qt_arch: msvc2019_64
qt_modules: "qt5compat qtmultimedia qtwebsockets"
qt_tools: "tools_openssl_x86"
name: ${{matrix.target}}
needs: configure
runs-on: windows-2019
env:
CMAKE_GENERATOR: 'Visual Studio 16 2019'
steps:
- name: Add msbuild to PATH
id: add-msbuild
uses: microsoft/[email protected]
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust
uses: hecrj/setup-rust-action@v2
with:
rust-version: nightly
- uses: actions/setup-python@v5
with:
python-version: '3.9'
cache: 'pip' # caching pip dependencies
- run: pip install -r requirements.txt -r src/mtg_search_engine/requirements.txt
- name: Restore Qt ${{matrix.qt_version}} for ${{matrix.target}} from cache
id: cache-qt
uses: actions/cache@v4 # Intentionally v1, based on jurplel documentation
with:
key: QtCache-${{matrix.qt_version}}-${{matrix.target}}
path: '${{github.workspace}}/../Qt'
- name: Install Qt ${{matrix.qt_version}} for ${{matrix.target}}
uses: jurplel/install-qt-action@v4
with:
cached: ${{steps.cache-qt.outputs.cache-hit}}
version: ${{matrix.qt_version}}
arch: win${{matrix.arch}}_${{matrix.qt_arch}}
modules: ${{matrix.qt_modules}}
tools: ${{matrix.qt_tools}}
- name: Install Chocolatey
run: Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- name: Install OpenSSL
run: choco install openssl -y
- name: Install curl
run: choco install curl -y
- name: Install flex and bison
run: choco install winflexbison3 -y
- name: Install Doxygen
run: choco install doxygen.install -y
- name: Build Squire Desktop
id: build
shell: bash
env:
PACKAGE_SUFFIX: '-${{matrix.target}}'
CMAKE_GENERATOR: '${{env.CMAKE_GENERATOR}}'
CMAKE_GENERATOR_PLATFORM: '${{matrix.cmake_generator_platform}}'
QTDIR: '${{github.workspace}}\Qt\${{matrix.qt_version}}\win${{matrix.arch}}_${{matrix.qt_arch}}'
run: |
mkdir build
cd build
cmake ..
cmake --build . -j
- name: Generate release assets
shell: bash
run: |
mkdir -p debug-build
cp -f build/Debug/SquireDesktop.exe debug-build/
cp -f lib/x86_64/discord_game_sdk.dll debug-build/
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: SquireDesktop.exe
path: debug-build