1
- name : .NET Release
1
+ # This workflow will build a .NET project
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
3
+
4
+ name : .NET PreRelease
2
5
3
6
on :
4
7
push :
5
- branches : [ "master " ]
8
+ branches : [ "feature/** " ]
6
9
7
10
jobs :
8
11
build :
@@ -15,15 +18,17 @@ jobs:
15
18
uses : actions/setup-dotnet@v4
16
19
with :
17
20
dotnet-version : 9.0.x
21
+ - name : .NET Tool Restore
22
+ run : dotnet tool restore
18
23
- name : Version Bump
19
24
uses : SiqiLu/dotnet-bump-version@2.0.0
20
25
with :
21
26
github_token : ${{ secrets.GITHUB_TOKEN }}
22
- version_mask : 0.0.1.0
27
+ version_mask : 0.0.0.1
23
28
version_files : " version.xml"
24
29
- name : Set Version Env Var
25
30
run : |
26
- LIBRARY_VERSION=$(cat version.xml | sed -n '/Version/{s/<Version[^<]*>\([^<]*\)<.*/\1/;p;q}' )
31
+ LIBRARY_VERSION=$(dotnet pwsh -c "(Select-Xml -Path ./ version.xml -XPath '/Version' | Select-Object -ExpandProperty Node).InnerText" )
27
32
LIBRARY_TAG=v$LIBRARY_VERSION
28
33
echo "LIBRARY_VERSION=$LIBRARY_VERSION" >> $GITHUB_ENV
29
34
echo "LIBRARY_TAG=$LIBRARY_TAG" >> $GITHUB_ENV
@@ -32,14 +37,56 @@ jobs:
32
37
- name : Build
33
38
run : dotnet build --no-restore /p:VersionPrefix=${{ env.LIBRARY_VERSION }} -c Release
34
39
- name : Test
35
- run : dotnet test --no-build --verbosity normal
36
- - name : Publish TempMail.Client NuGet Package
37
- run : dotnet nuget push ./src/TempMail.Client/bin/Release/TempMail.Client.*.nupkg -k ${{ secrets.NUGET_ORG_API_KEY }} -s https://api.nuget.org/v3/index.json
38
- - name : Publish TempMail.Client.AspNetCore NuGet Package
39
- run : dotnet nuget push ./src/TempMail.Client.AspNetCore/bin/Release/TempMail.Client.AspNetCore.*.nupkg -k ${{ secrets.NUGET_ORG_API_KEY }} -s https://api.nuget.org/v3/index.json
40
+ run : dotnet test --no-build --verbosity normal --collect:"XPlat Code Coverage" --settings ./tests/TempMail.Client.Tests/coverlet.runsettings --results-directory ./coverage
41
+ - name : Code Coverage Summary
42
+ run : |
43
+ dotnet pwsh -c \
44
+ '
45
+ $lr = [System.Math]::Round( `
46
+ $( `
47
+ Select-Xml -Path ./coverage/*/coverage.cobertura.xml -XPath "//package" `
48
+ | Select-Object -ExpandProperty Node `
49
+ | Select-Object -Property line-rate)."line-rate", 2 `
50
+ ) * 100;
51
+ @{
52
+ files = @{
53
+ "temp-mail-dotnet-code-coverage.json" = @{
54
+ content = $(@{
55
+ schemaVersion = 1;
56
+ label = "Code Coverage";
57
+ message = $lr.ToString();
58
+ color = (&{if ($lr -ge 90) {"green"} else { if ($lr -gt 60) {"yellow"} else {"orange"} } })
59
+ } | ConvertTo-Json)
60
+ }
61
+ }
62
+ } | ConvertTo-Json' > code-coverage-badge.json
63
+ - name : Create Awesome Badge
64
+ run : |
65
+ data=$(cat code-coverage-badge.json)
66
+ echo "$data"
67
+ curl -L \
68
+ -X PATCH \
69
+ -H "Accept: application/vnd.github+json" \
70
+ -H "Authorization: Bearer ${{ secrets.GH_GIST_API_KEY }}" \
71
+ -H "X-GitHub-Api-Version: 2022-11-28" \
72
+ "https://api.github.com/gists/89c85cdd66cced45519b7928f2740687" \
73
+ -d "$data"
74
+ - name : Publish NuGet Packages
75
+ run :
76
+ mkdir ./package
77
+ cp ./src/TempMail.Client/bin/Release/TempMail.Client.*.nupkg ./package
78
+ cp ./src/TempMail.Client.AspNetCore/bin/Release/TempMail.Client.AspNetCore.*.nupkg ./package
79
+ dotnet nuget push ./package/TempMail.Client.*.nupkg -k ${{ secrets.NUGET_ORG_API_KEY }} -s https://api.nuget.org/v3/index.json
80
+ dotnet nuget push ./package/TempMail.Client.AspNetCore.*.nupkg -k ${{ secrets.NUGET_ORG_API_KEY }} -s https://api.nuget.org/v3/index.json
40
81
- name : GitHub Tag
41
82
uses : IIlyichev/github-tag-action@v6.3
42
83
with :
43
84
github_token : ${{ secrets.GITHUB_TOKEN }}
44
85
custom_tag : ${{ env.LIBRARY_TAG }}
45
- tag_prefix : " "
86
+ tag_prefix : " "
87
+ - name : GitHub Release
88
+ uses : elgohr/Github-Release-Action@v5
89
+ with :
90
+ title : ${{ env.LIBRARY_TAG }}
91
+ tag : ${{ env.LIBRARY_TAG }}
92
+ workdir : package
0 commit comments