Add workflow timeouts and stop pre-existing tracing #10
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |