# GitHub .NET Build Action Example
## Build Action
On a push or merge to **main**:
1. Set up .NET
2. Build (publish in this case) the project
3. Compress the artifacts to a ZIP
4. Download the archive
5. Create a release for the build using that archive
This example is for [[Ups & Downs]]:
```yml
name: Build and Release WPF App
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: write # Grants the necessary permission to create a release
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET 9.0
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'
- name: Publish artifacts
run: dotnet publish -c Release -o ./publish
working-directory: Ups & Downs
- name: Compress build artifacts into a single zip
run: Compress-Archive -Path "Ups & Downs/publish/*" -DestinationPath "Ups-Downs-Build.zip"
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: WPF-Build
path: Ups-Downs-Build.zip
release:
needs: build
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: WPF-Build
path: ./release-artifacts
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: v1.0.${{ github.run_number }}
name: Release v1.0.${{ github.run_number }}
draft: false
prerelease: false
files: ./release-artifacts/Ups-Downs-Build.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
#github #yaml #automation