Skip to content

Add workflow timeouts and stop pre-existing tracing #10

Add workflow timeouts and stop pre-existing tracing

Add workflow timeouts and stop pre-existing tracing #10

Workflow file for this run

name: Motus Release
on:
push:
tags:
- "motus-v*"
workflow_dispatch:
inputs:
version:
description: "Version number (e.g. 1.0.0)"
required: true
jobs:
build-and-test:
name: Build & Test
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Extract version
id: version
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "version=${{ github.event.inputs.version }}" >> "$GITHUB_OUTPUT"
else
TAG="${GITHUB_REF#refs/tags/motus-v}"
echo "version=$TAG" >> "$GITHUB_OUTPUT"
fi
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
10.0.x
- name: Build
run: dotnet build Motus.sln -c Release -p:Version=${{ steps.version.outputs.version }}
- name: Test
run: dotnet test Motus.sln -c Release --no-build --filter "TestCategory!=Integration"
- name: Pack NuGet packages
run: |
dotnet pack src/Motus.Abstractions/Motus.Abstractions.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Codegen/Motus.Codegen.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Analyzers/Motus.Analyzers.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus/Motus.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Recorder/Motus.Recorder.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Testing/Motus.Testing.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Testing.MSTest/Motus.Testing.MSTest.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Testing.xUnit/Motus.Testing.xUnit.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Testing.NUnit/Motus.Testing.NUnit.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
dotnet pack src/Motus.Cli/Motus.Cli.csproj -c Release -p:Version=${{ steps.version.outputs.version }} -o packages
- name: Upload NuGet packages
uses: actions/upload-artifact@v4
with:
name: nuget-packages
path: packages/*.nupkg
publish-nuget:
name: Publish to NuGet
runs-on: ubuntu-latest
needs: build-and-test
if: startsWith(github.ref, 'refs/tags/motus-v')
steps:
- name: Download NuGet packages
uses: actions/download-artifact@v4
with:
name: nuget-packages
path: packages
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: "10.0.x"
- name: Push to NuGet.org
run: |
for pkg in packages/*.nupkg; do
echo "Publishing $pkg..."
dotnet nuget push "$pkg" \
--api-key "${{ secrets.NUGET_MOTUS_API_KEY }}" \
--source https://api.nuget.org/v3/index.json \
--skip-duplicate
done
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build-and-test, publish-nuget]
if: startsWith(github.ref, 'refs/tags/motus-v')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Download NuGet packages
uses: actions/download-artifact@v4
with:
name: nuget-packages
path: packages
- name: Create Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
packages/*.nupkg