Skip to content

Merge pull request #394 from ptr727/dependabot/nuget/develop/Serilog.… #502

Merge pull request #394 from ptr727/dependabot/nuget/develop/Serilog.…

Merge pull request #394 from ptr727/dependabot/nuget/develop/Serilog.… #502

name: Build and publish release
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# Test
test:
name: Test
runs-on: ubuntu-latest
steps:
# Install .NET SDK
# https://github.com/marketplace/actions/setup-net-core-sdk
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.x"
# Checkout code
# https://github.com/marketplace/actions/checkout
- name: Checkout code
uses: actions/checkout@v4
# Run Unit Tests
# https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test
- name: Run unit tests
run: dotnet test ./PlexCleanerTests/PlexCleanerTests.csproj
# Get version information
version:
name: Version
runs-on: ubuntu-latest
needs: test
outputs:
SemVer2: ${{ steps.nbgv.outputs.SemVer2 }}
AssemblyVersion: ${{ steps.nbgv.outputs.AssemblyVersion }}
AssemblyFileVersion: ${{ steps.nbgv.outputs.AssemblyFileVersion }}
AssemblyInformationalVersion: ${{ steps.nbgv.outputs.AssemblyInformationalVersion }}
steps:
# Checkout code
# https://github.com/marketplace/actions/checkout
- name: Checkout
uses: actions/checkout@v4
with:
# Get all history for version calculation
fetch-depth: 0
# Run Nerdbank.GitVersioning
# https://github.com/marketplace/actions/nerdbank-gitversioning
- name: Run Nerdbank.GitVersioning tool
id: nbgv
uses: dotnet/nbgv@master
# Build artifacts
build:
name: Build
runs-on: ubuntu-latest
needs: version
strategy:
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs
# https://learn.microsoft.com/en-us/dotnet/core/rid-catalog
matrix:
include:
- runtime: win-x64
- runtime: linux-x64
- runtime: linux-musl-x64
- runtime: linux-arm
- runtime: linux-arm64
- runtime: osx-x64
- runtime: osx-arm64
steps:
# Install .NET SDK
# https://github.com/marketplace/actions/setup-net-core-sdk
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.x"
# Checkout code
# https://github.com/marketplace/actions/checkout
- name: Checkout code
uses: actions/checkout@v4
# Build and publish
# https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish
- name: Build
run: >-
dotnet publish ./PlexCleaner/PlexCleaner.csproj
--runtime ${{ matrix.runtime }}
--self-contained false
--output ${{ runner.temp }}/publish/${{ matrix.runtime }}
--configuration ${{ endsWith(github.ref, 'refs/heads/main') && 'Release' || 'Debug' }}
-property:Version=${{ needs.version.outputs.AssemblyVersion }}
-property:FileVersion=${{ needs.version.outputs.AssemblyFileVersion }}
-property:AssemblyVersion=${{ needs.version.outputs.AssemblyVersion }}
-property:InformationalVersion=${{ needs.version.outputs.AssemblyInformationalVersion }}
-property:PackageVersion=${{ needs.version.outputs.SemVer2 }}
# https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts
# Skip pull requests
if: ${{ github.event_name != 'pull_request' }}
uses: actions/upload-artifact@v4
with:
name: publish-${{ matrix.runtime }}
path: ${{ runner.temp }}/publish
# Publish
publish:
name: Publish
runs-on: ubuntu-latest
needs: [ build, version ]
# Skip pull requests
if: ${{ github.event_name != 'pull_request' }}
steps:
# https://github.com/marketplace/actions/download-a-build-artifact
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
pattern: publish-*
merge-multiple: true
path: ${{ runner.temp }}/publish
# Zip the output
- name: Zip build output
run: 7z a -t7z ${{ runner.temp }}/publish/PlexCleaner.7z ${{ runner.temp }}/publish/*
# Create GitHub release
# https://github.com/marketplace/actions/gh-release
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
# Generate changelog from commit messages
generate_release_notes: true
# Create a tag with the version number
tag_name: ${{ needs.version.outputs.SemVer2 }}
# Only main branch is not a pre-release
prerelease: ${{ !endsWith(github.ref, 'refs/heads/main') }}
files: ${{ runner.temp }}/publish/PlexCleaner.7z