Skip to content

Merge pull request #217 from ptr727/dependabot/nuget/Microsoft.NET.Te… #168

Merge pull request #217 from ptr727/dependabot/nuget/Microsoft.NET.Te…

Merge pull request #217 from ptr727/dependabot/nuget/Microsoft.NET.Te… #168

name: Build and publish release
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
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 7
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.x
# Checkout code
# https://github.com/marketplace/actions/checkout
- name: Checkout code
uses: actions/checkout@v3
# 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@v3
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
steps:
# Install .NET SDK
# https://github.com/marketplace/actions/setup-net-core-sdk
- name: Setup .NET SDK 7
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.x
# Checkout code
# https://github.com/marketplace/actions/checkout
- name: Checkout code
uses: actions/checkout@v3
# 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
if: ${{ github.event_name != 'pull_request' }}
uses: actions/upload-artifact@v3
with:
name: publish
path: ${{ runner.temp }}/publish
# Publish
publish:
name: Publish
runs-on: ubuntu-latest
needs: [ build, version ]
if: ${{ github.event_name != 'pull_request' }}
steps:
# https://github.com/marketplace/actions/download-a-build-artifact
- name: Download build artifacts
uses: actions/download-artifact@v3
with:
name: publish
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/automatic-releases
# Alternative: https://github.com/marketplace/actions/gh-release
- name: Create GitHub release
uses: marvinpinto/action-automatic-releases@latest
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
# Create a tag with the version number
automatic_release_tag: ${{ 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