Skip to content

New spawn limit

New spawn limit #52

Workflow file for this run

name: CI
on: [
push,
pull_request,
workflow_dispatch
]
env:
# Limit which presets make artifacts
RELEASE_ARTIFACT_PRESET: "msvc-release"
ALLOWED_ARTIFACT_PRESETS: "msvc-release;clang-cross-release"
jobs:
build-windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
preset:
- clang-release
- msvc-release
steps:
- name: Setup Clang
if: startswith(matrix.preset, 'clang')
uses: egor-tensin/setup-clang@v1
with:
platform: x86
- name: Add MSVC to PATH
if: startswith(matrix.preset, 'msvc')
uses: TheMrMilchmann/setup-msvc-dev@v3
with:
arch: x86
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
# We only actually need this python version to run the download script, we're not going to link
# against it, so don't need to specify arch
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ">=3.11"
- name: Setup Pip
run: pip install requests
- name: Checkout repository and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build
run: >
python ./prepare_releases.py
--preset ${{ matrix.preset }}
--configure
--build
- name: Upload Artifact
uses: actions/upload-artifact@v4
if: contains(env.ALLOWED_ARTIFACT_PRESETS, matrix.preset)
with:
name: ${{ matrix.preset }}
path: |
*.zip
*.sdkmod
build-ubuntu:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain:
- preset: clang-cross-release
container: clang-cross
- preset: llvm-mingw-release
container: llvm-mingw
- preset: mingw-release
container: mingw
permissions:
packages: write
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build
uses: devcontainers/[email protected]
with:
imageName: ghcr.io/apple1417/willow2-sdk-mods/${{ matrix.toolchain.container }}
cacheFrom: ghcr.io/apple1417/willow2-sdk-mods/${{ matrix.toolchain.container }}:latest
configFile: .devcontainer/${{ matrix.toolchain.container }}/devcontainer.json
push: always
# The git watcher cmake thinks something's unsafe? Doesn't happen to me locally.
runCmd: |
git config --global --add safe.directory `pwd`
git config --global --add safe.directory `pwd`/.willow2-mod-manager
git config --global --add safe.directory `pwd`/.willow2-mod-manager/libs/pluginloader
git config --global --add safe.directory `pwd`/.willow2-mod-manager/libs/pyunrealsdk
git config --global --add safe.directory `pwd`/.willow2-mod-manager/libs/pyunrealsdk/libs/unrealsdk
set -e
./prepare_releases.py \
--preset ${{ matrix.toolchain.preset }} \
--configure \
--build
- name: Upload Artifact
uses: actions/upload-artifact@v4
if: contains(env.ALLOWED_ARTIFACT_PRESETS, matrix.toolchain.preset)
with:
name: ${{ matrix.toolchain.preset }}
path: |
*.zip
*.sdkmod
# ==============================================================================
clang-tidy:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
preset:
- clang-release
steps:
- name: Setup Clang
if: startswith(matrix.preset, 'clang')
uses: egor-tensin/setup-clang@v1
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ">=3.11"
# Needed pyyaml for clang tidy to enable `-export-fixes` and requests for the python lib downloader
- name: Install pip packages
run: pip install pyyaml requests
- name: Checkout repository and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Configure CMake
run: |
python prepare_releases.py `
--preset ${{ matrix.preset }} `
--configure -C-DCMAKE_DISABLE_PRECOMPILE_HEADERS=On
- name: Remove `.modmap`s from compile commands
run: |
(Get-Content ".out\build\${{ matrix.preset }}\compile_commands.json") `
-replace "@\S+CMakeFiles\S+?\.modmap", "" `
| Set-Content `
-Path ".out\build\${{ matrix.preset }}\compile_commands.json"
- name: Run clang-tidy
run: |
python (Get-Command run-clang-tidy).Source `
-p ".out\build\${{ matrix.preset }}" `
-export-fixes clang-tidy-fixes.yml `
$([Regex]::Escape("$pwd\") + "[^.].+\.(c|cpp|h|hpp)$")
- name: Process clang-tidy warnings
uses: asarium/clang-tidy-action@v1
with:
fixesFile: clang-tidy-fixes.yml
clang-format:
runs-on: windows-latest
steps:
- name: Setup Clang
uses: egor-tensin/setup-clang@v1
- name: Checkout repository
uses: actions/checkout@v4
- name: Run clang-format
run: |
$all_files=$(Get-ChildItem `
$(Get-ChildItem . -Directory -Exclude ".*",TextModLoader) `
-File `
-Recurse `
-Include ("*.c", "*.cpp", "*.h", "*.hpp") `
| % FullName)
echo "::group::Files being checked"
foreach ($file in $all_files) { echo $file }
echo "::endgroup::"
clang-format -n -Werror $all_files
# ==============================================================================
spelling:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Check spelling
uses: crate-ci/typos@master
pyright:
runs-on: ubuntu-latest
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ">=3.13"
cache: pip
- name: Setup Pip
run: pip install pytest
- name: Run pyright
uses: jakebailey/pyright-action@v2
ruff:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run Ruff Linting
uses: chartboost/ruff-action@v1
- name: Run Ruff Formatting
uses: chartboost/ruff-action@v1
with:
args: format --check
# ==============================================================================
release:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master' && github.repository == 'apple1417/willow2-sdk-mods'
needs:
- build-ubuntu
- build-windows
- clang-tidy
- clang-format
- spelling
- pyright
- ruff
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download releases
uses: actions/download-artifact@v4
with:
name: ${{ env.RELEASE_ARTIFACT_PRESET }}
- name: Upload releases
uses: andelf/nightly-release@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: nightly
files: |
*.sdkmod
*.zip
name: Automated Releases
prerelease: false
body: >
This release is automatically built from the latest (passing) commits on master.