From 0f82c281ba8111246844357301389a289bcbdae5 Mon Sep 17 00:00:00 2001 From: "rapture.party" Date: Thu, 16 Apr 2026 17:19:38 -0400 Subject: [PATCH] ci: Build and release workflow --- .github/workflows/release.yml | 73 +++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c8cbc55 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,73 @@ +name: Build and Release + +on: + push: + tags: + - 'v*' + +jobs: + release: + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.x' + + - name: Restore reference assemblies + run: | + mkdir /tmp/stubs && cd /tmp/stubs + cat > stubs.csproj << 'EOF' + + + net472 + + + + + + + EOF + dotnet restore stubs.csproj + RIMWORLD_PKG=$(find ~/.nuget/packages/krafs.rimworld.ref -type d -name "net472" | sort -V | tail -1) + HARMONY_PKG=$(find ~/.nuget/packages/lib.harmony -type d -name "net472" | sort -V | tail -1) + echo "RIMWORLD_MANAGED=$RIMWORLD_PKG" >> "$GITHUB_ENV" + echo "HARMONY_ASSEMBLIES=$HARMONY_PKG" >> "$GITHUB_ENV" + + - name: Build + run: | + dotnet build Source/RimWorldFontReplacer.csproj \ + -c Release \ + -p:RimWorldManaged="$RIMWORLD_MANAGED" \ + -p:HarmonyAssemblies="$HARMONY_ASSEMBLIES" + + - name: Package mod + run: | + MOD_DIR="RimWorldFontReplacer" + ZIP_NAME="${MOD_DIR}-${GITHUB_REF_NAME}.zip" + STAGING="/tmp/staging" + mkdir -p "$STAGING/$MOD_DIR" + cp -r . "$STAGING/$MOD_DIR" + rm -rf \ + "$STAGING/$MOD_DIR/.git" \ + "$STAGING/$MOD_DIR/.github" \ + "$STAGING/$MOD_DIR/Source" \ + "$STAGING/$MOD_DIR/omnisharp.json" \ + "$STAGING/$MOD_DIR/.gitignore" + rm -f "$STAGING/$MOD_DIR"/*.sln + find "$STAGING/$MOD_DIR" -name ".DS_Store" -delete + cd "$STAGING" + zip -r "$ZIP_NAME" "$MOD_DIR/" + echo "ZIP_PATH=$STAGING/$ZIP_NAME" >> "$GITHUB_ENV" + + - name: Create Gitea release + uses: akkuman/gitea-release-action@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + files: |- + ${{ env.ZIP_PATH }}