Skip to content

Build and Release

Build and Release #124

name: Build and Release
on:
workflow_dispatch:
push:
branches:
- main
paths:
- '**.csproj'
- 'Program.cs'
- 'icon.ico'
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
platform: linux-x64
- os: windows-latest
platform: win-x64
- os: macos-latest
platform: osx-x64
runs-on: ${{ matrix.os }}
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Get Project Version
id: version
run: echo "version=$(sed -n 's:.*<Version>\(.*\)</Version>.*:\1:p' ./metadata-extractor-cli.csproj)" >> $GITHUB_OUTPUT
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Tag version
run: git tag ${{ steps.version.outputs.version }}
- name: Push Tags
run: git push origin --tags
- name: Install dependencies
run: dotnet restore
- name: Publish Single File Executable
run: dotnet publish -c Release -p:PublishSingleFile=true -p:DebugType=none -o ./publish/${{ matrix.platform }}
- name: Publish Single File Executable without .NET Runtime
run: dotnet publish -c Release -p:PublishSingleFile=true -p:SelfContained=false -p:DebugType=none -o ./publish/${{ matrix.platform }}-no-runtime
- name: List Publish Directory
run: ls -l ./publish
- name: Upload Default Executable
uses: actions/upload-artifact@v4
with:
name: release-${{ matrix.platform }}
path: ./publish/${{ matrix.platform }}
- name: Upload Executable without .NET Runtime
uses: actions/upload-artifact@v4
with:
name: release-${{ matrix.platform }}-no-runtime
path: ./publish/${{ matrix.platform }}-no-runtime
release:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download Archives
uses: actions/download-artifact@v4
- name: List downloaded files
run: ls -l
- name: Create Release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.DYGNITORZ_TOKEN_OLD }}
with:
tag_name: ${{ needs.build.outputs.version }}
files: |
release-linux-x64/*
release-linux-x64-no-runtime/*
release-win-x64/*
release-win-x64-no-runtime/*
release-osx-x64/*
release-osx-x64-no-runtime/*