Skip to content

Commit cb6b755

Browse files
committed
Feat: new matrix based workflow
1 parent c0aab77 commit cb6b755

File tree

1 file changed

+75
-35
lines changed

1 file changed

+75
-35
lines changed

.github/workflows/release.yml

Lines changed: 75 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- 'v*.*.*' # Match version tags like v1.0.0
77

88
jobs:
9-
publish:
9+
build:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Checkout repository
@@ -22,39 +22,79 @@ jobs:
2222

2323
- name: Build
2424
run: dotnet build CodeOfChaos.Extensions.sln --configuration Release --no-restore
25-
26-
# Ensure that the tests must pass
27-
# The job will fail automatically if any test fails because `dotnet test` exits with a non-zero code
28-
- name: Run tests - Extensions
29-
run: dotnet run -c Release --no-restore --no-build
30-
working-directory: "tests/Tests.CodeOfChaos.Extensions"
31-
- name: Run tests - Extensions.Analyzers
32-
run: dotnet run -c Release --no-restore --no-build
33-
working-directory: "tests/Tests.CodeOfChaos.Extensions.Analyzers"
34-
- name: Run tests - Extensions.AspNetCore
35-
run: dotnet run -c Release --no-restore --no-build
36-
working-directory: "tests/Tests.CodeOfChaos.Extensions.AspNetCore"
37-
- name: Run tests - Extensions.EntityFrameworkCore
38-
run: dotnet run -c Release --no-restore --no-build
39-
working-directory: "tests/Tests.CodeOfChaos.Extensions.EntityFrameworkCore"
40-
- name: Run tests - Extensions.Serilog
41-
run: dotnet run -c Release --no-restore --no-build
42-
working-directory: "tests/Tests.CodeOfChaos.Extensions.Serilog"
43-
- name: Run tests - Extensions.DependencyInjection
44-
run: dotnet run -c Release --no-restore --no-build
45-
working-directory: "tests/Tests.CodeOfChaos.Extensions.DependencyInjection"
46-
- name: Run tests - Extensions.DependencyInjection.Generators
47-
run: dotnet run -c Release --no-restore --no-build
48-
working-directory: "tests/Tests.CodeOfChaos.Extensions.DependencyInjection.Generators"
49-
50-
- name: Publish to NuGet
25+
26+
# Save build outputs as an artifact
27+
- name: Upload build artifacts
28+
uses: actions/upload-artifact@v3
29+
with:
30+
name: build-artifacts
31+
path: |
32+
src/**/bin/Release/
33+
tests/**/bin/Release/
34+
35+
test-all:
36+
needs: build
37+
runs-on: ubuntu-latest
38+
strategy:
39+
matrix:
40+
test-project:
41+
- Tests.CodeOfChaos.Extensions
42+
- Tests.CodeOfChaos.Extensions.Analyzers
43+
- Tests.CodeOfChaos.Extensions.AspNetCore
44+
- Tests.CodeOfChaos.Extensions.DependencyInjection
45+
- Tests.CodeOfChaos.Extensions.DependencyInjection.Generators
46+
- Tests.CodeOfChaos.Extensions.EntityFrameworkCore
47+
- Tests.CodeOfChaos.Extensions.Serilog
48+
steps:
49+
- name: Checkout repository
50+
uses: actions/checkout@v3
51+
52+
- name: Setup .NET
53+
uses: actions/setup-dotnet@v3
54+
with:
55+
dotnet-version: '9.x'
56+
57+
# Download the build artifacts
58+
- name: Download build artifacts
59+
uses: actions/download-artifact@v3
60+
with:
61+
name: build-artifacts
62+
63+
# Run tests using the artifacts
64+
- name: Run tests for ${{ matrix.test-project }}
65+
run: dotnet test -c Release --no-build --no-restore
66+
working-directory: tests/${{ matrix.test-project }}
67+
68+
publish:
69+
needs: test-all
70+
runs-on: ubuntu-latest
71+
strategy:
72+
matrix:
73+
package:
74+
- CodeOfChaos.Extensions
75+
- CodeOfChaos.Extensions.Analyzers
76+
- CodeOfChaos.Extensions.AspNetCore
77+
- CodeOfChaos.Extensions.DependencyInjection
78+
- CodeOfChaos.Extensions.DependencyInjection.Generators
79+
- CodeOfChaos.Extensions.EntityFrameworkCore
80+
- CodeOfChaos.Extensions.Serilog
81+
steps:
82+
- name: Checkout repository
83+
uses: actions/checkout@v3
84+
85+
- name: Setup .NET
86+
uses: actions/setup-dotnet@v3
87+
with:
88+
dotnet-version: '9.x'
89+
90+
# Download the build artifacts
91+
- name: Download build artifacts
92+
uses: actions/download-artifact@v3
93+
with:
94+
name: build-artifacts
95+
96+
# Push the corresponding NuGet package
97+
- name: Publish ${{ matrix.package }} to NuGet
5198
env:
5299
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
53-
run: |
54-
dotnet nuget push src/CodeOfChaos.Extensions/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
55-
dotnet nuget push src/CodeOfChaos.Extensions.AspNetCore/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
56-
dotnet nuget push src/CodeOfChaos.Extensions.EntityFrameworkCore/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
57-
dotnet nuget push src/CodeOfChaos.Extensions.Serilog/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
58-
dotnet nuget push src/CodeOfChaos.Extensions.Analyzers/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
59-
dotnet nuget push src/CodeOfChaos.Extensions.DependencyInjection/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
60-
dotnet nuget push src/CodeOfChaos.Extensions.DependencyInjection.Generators/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
100+
run: dotnet nuget push src/${{ matrix.package }}/bin/Release/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate

0 commit comments

Comments
 (0)