Skip to content

Add automated GitHub release workflow #1

Add automated GitHub release workflow

Add automated GitHub release workflow #1

Workflow file for this run

name: Release
on:
push:
tags:
- "v*"
permissions:
contents: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Check out source
uses: actions/checkout@v4
- name: Set up .NET 10
uses: actions/setup-dotnet@v4
with:
dotnet-version: "10.0.x"
- name: Validate tag matches project version
shell: bash
run: |
project_version="$(grep -oPm1 '(?<=<Version>)[^<]+' DecompilerServer.csproj)"
tag_version="${GITHUB_REF_NAME#v}"
if [[ -z "$project_version" ]]; then
echo "Could not read <Version> from DecompilerServer.csproj"
exit 1
fi
if [[ "$project_version" != "$tag_version" ]]; then
echo "Tag version '$tag_version' does not match project version '$project_version'"
exit 1
fi
- name: Build release
run: dotnet build DecompilerServer.sln -c Release
- name: Run tests
run: dotnet test Tests/Tests.csproj -c Release --no-build
- name: Publish release output
run: dotnet publish DecompilerServer.csproj -c Release -o out/publish --no-build
- name: Package release artifacts
shell: bash
run: |
asset_base="DecompilerServer-${GITHUB_REF_NAME}"
tarball="${asset_base}.tar.gz"
zipfile="${asset_base}.zip"
tar -C out -czf "$tarball" publish
(cd out && zip -qr "../$zipfile" publish)
sha256sum "$tarball" > "${tarball}.sha256"
sha256sum "$zipfile" > "${zipfile}.sha256"
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
files: |
DecompilerServer-${{ github.ref_name }}.tar.gz
DecompilerServer-${{ github.ref_name }}.tar.gz.sha256
DecompilerServer-${{ github.ref_name }}.zip
DecompilerServer-${{ github.ref_name }}.zip.sha256
generate_release_notes: true
fail_on_unmatched_files: true