diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..816ab5c --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,65 @@ +name: Build and Release + +on: + push: + tags: + - "v*" + +permissions: + code: read + releases: write + +jobs: + release: + name: Publish Windows x64 + runs-on: ubuntu-latest + + steps: + - name: Check out source + uses: actions/checkout@v4 + + - name: Set up .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: "8.0.x" + + - name: Build Windows executable + shell: bash + env: + TAG_NAME: ${{ gitea.ref_name }} + run: | + set -euo pipefail + + version="${TAG_NAME#v}" + if [[ -z "${version}" ]]; then + echo "The release tag must contain a version, for example v1.0.0." + exit 1 + fi + + dotnet publish ./kcsj.csproj \ + --configuration Release \ + --runtime win-x64 \ + --self-contained true \ + --output ./publish \ + -p:EnableWindowsTargeting=true \ + -p:PublishSingleFile=true \ + -p:IncludeNativeLibrariesForSelfExtract=true \ + -p:DebugType=None \ + -p:Version="${version}" + + mkdir -p ./dist + mv ./publish/kcsj.exe "./dist/kcsj-${TAG_NAME}-win-x64.exe" + + # Gitea's release action is written in Go and is compiled by the runner. + - name: Set up Go for the release action + uses: actions/setup-go@v5 + with: + go-version: stable + + - name: Create Gitea release + uses: https://gitea.com/actions/release-action@main + with: + title: ${{ gitea.ref_name }} + files: |- + dist/* + api_key: ${{ secrets.GITEA_TOKEN }}