Skip to content

style(LoopTimeoutPolicy): ✨ Add aggressive inlining for performance #2

style(LoopTimeoutPolicy): ✨ Add aggressive inlining for performance

style(LoopTimeoutPolicy): ✨ Add aggressive inlining for performance #2

Workflow file for this run

name: CI
on:
push:
branches:
- master
tags:
- v*
pull_request:
workflow_dispatch:
permissions:
contents: read
env:
DOTNET_NOLOGO: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
RESONITE_INSTALL_DIR: ${{ github.workspace }}/.resonite
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Verify Steam credentials
shell: bash
run: |
if [ -z "${{ secrets.STEAMUSER }}" ]; then
echo '::error::Missing secrets.STEAMUSER. Add the Steam username used for SteamCMD downloads.'
exit 1
fi
if [ -z "${{ secrets.STEAMPASS }}" ]; then
echo '::error::Missing secrets.STEAMPASS. Add the Steam password used for SteamCMD downloads.'
exit 1
fi
- name: Setup Resonite environment
id: resonite
uses: resonite-modding-group/setup-resonite-env-action@v0.1.0
with:
steam-user: ${{ secrets.STEAMUSER }}
steam-password: ${{ secrets.STEAMPASS }}
resonite-path: ${{ env.RESONITE_INSTALL_DIR }}
- name: Install ResoniteModLoader binaries
env:
RESONITE_PATH: ${{ env.RESONITE_INSTALL_DIR }}
shell: bash
run: |
set -euo pipefail
if [ -z "${RESONITE_PATH:-}" ]; then
echo '::error::Resonite path is empty. Ensure the setup-resonite-env step succeeded and exposed resonite-path.'
exit 1
fi
install -d "$RESONITE_PATH/Libraries" "$RESONITE_PATH/rml_libs"
curl -sSfL -o "$RESONITE_PATH/Libraries/ResoniteModLoader.dll" \
https://github.com/resonite-modding-group/ResoniteModLoader/releases/latest/download/ResoniteModLoader.dll
curl -sSfL -o "$RESONITE_PATH/rml_libs/0Harmony.dll" \
https://github.com/resonite-modding-group/ResoniteModLoader/releases/latest/download/0Harmony.dll
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json', '**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore
env:
ResoniteAssembliesDir: ${{ env.RESONITE_INSTALL_DIR }}
shell: bash
run: |
dotnet restore FluxLoopTweaks.sln
- name: Verify formatting
env:
ResoniteAssembliesDir: ${{ env.RESONITE_INSTALL_DIR }}
shell: bash
run: |
dotnet format FluxLoopTweaks.sln --verify-no-changes --no-restore
- name: Build
env:
ResoniteAssembliesDir: ${{ env.RESONITE_INSTALL_DIR }}
shell: bash
run: |
dotnet build FluxLoopTweaks.sln --configuration Release --no-restore
- name: Test
env:
ResoniteAssembliesDir: ${{ env.RESONITE_INSTALL_DIR }}
shell: bash
run: |
dotnet test FluxLoopTweaks.sln --configuration Release --no-build
- name: Prepare release assets
if: startsWith(github.ref, 'refs/tags/v')
shell: bash
run: |
set -euo pipefail
artifacts_dir=release-artifacts
mkdir -p "$artifacts_dir"
cp src/FluxLoopTweaks/bin/Release/net9.0/FluxLoopTweaks.dll "$artifacts_dir/FluxLoopTweaks.dll"
if [ -f src/FluxLoopTweaks/bin/Release/net9.0/FluxLoopTweaks.pdb ]; then
cp src/FluxLoopTweaks/bin/Release/net9.0/FluxLoopTweaks.pdb "$artifacts_dir/FluxLoopTweaks.pdb"
fi
- name: Upload release artifacts
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@v4
with:
name: flux-loop-tweaks
path: release-artifacts
if-no-files-found: error
release:
runs-on: ubuntu-latest
needs: build
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: flux-loop-tweaks
path: release-artifacts
- name: Publish GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
name: Flux Loop Tweaks ${{ github.ref_name }}
generate_release_notes: true
files: |
release-artifacts/FluxLoopTweaks.dll
release-artifacts/FluxLoopTweaks.pdb