diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml new file mode 100644 index 0000000..4384c5f --- /dev/null +++ b/.github/workflows/dotnet.yml @@ -0,0 +1,68 @@ +name: Build and Release + +on: + push: + tags: + - 'v*' # Trigger on version tags like v1.0.0 + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + arch: [x64] + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '7.0.x' + + - name: Restore dependencies + run: dotnet restore + + - name: Build self-contained executable + run: | + dotnet publish -c Release -r ${{ matrix.os }} --self-contained true /p:PublishTrimmed=true -o out/${{ matrix.os }} + + - name: Upload Build Artifacts + uses: actions/upload-artifact@v3 + with: + name: app-${{ matrix.os }} + path: out/${{ matrix.os }} + + release: + needs: build + runs-on: ubuntu-latest + + steps: + - name: Download Artifacts + uses: actions/download-artifact@v2 + with: + name: app-${{ matrix.os }} + path: out + + - name: Create GitHub Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref_name }} + release_name: Release ${{ github.ref_name }} + draft: false + prerelease: false + + - name: Upload Release Assets + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create-release.outputs.upload_url }} + asset_path: out/${{ matrix.os }}/* + asset_name: ${{ matrix.os }}-app-${{ github.ref_name }}.zip + asset_content_type: application/zip