-
-
Notifications
You must be signed in to change notification settings - Fork 411
149 lines (149 loc) · 6.08 KB
/
dotnet.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
name: .NET
on:
push:
pull_request:
merge_group:
workflow_dispatch:
inputs:
release:
description: "Release to NuGet"
required: false
type: boolean
default: false
permissions:
statuses: write
checks: write
contents: write
pull-requests: write
actions: write
packages: write
jobs:
Build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
dotnet-quality: 'preview'
- name: Pack
# TODO decide whether we want experimental builds to use Debug or Release - using Release for now...
run: >-
dotnet run --project eng/build/Silk.NET.NUKE.csproj -c Release --
Pack
--configuration Release
--msbuild-properties
${{ github.event_name == 'workflow_dispatch' && inputs.release && 'ContinuousIntegrationBuild=true' || github.event_name != 'pull_request' && format('ContinuousIntegrationBuild=true VersionSuffix=build{0}.0', github.run_number) || format('ContinuousIntegrationBuild=true VersionSuffix=pr{0}.{1}', github.event.number, github.run_number) }}
- name: Upload Unsigned Artifacts to Actions
uses: actions/upload-artifact@v4
with:
name: unsigned_nupkgs
path: "artifacts/**/*nupkg"
if-no-files-found: warn
retention-days: 1
- name: Push to Experimental Feed
if: ${{ github.repository == 'dotnet/Silk.NET' }}
run: ./build.sh PushToNuGet --skip Clean Compile Pack --nuget-feed https://dotnet.github.io/Silk.NET/nuget/experimental/index.json --nuget-username ${{ secrets.EXP_NUGET_USERNAME }} --nuget-password ${{ secrets.EXP_NUGET_PASSWORD }} --nuget-api-key ${{ secrets.EXP_NUGET_PASSWORD }}
- name: Push to GitHub Packages
if: ${{ github.repository == 'dotnet/Silk.NET' }}
run: ./build.sh PushToNuGet --skip Clean Compile Pack --nuget-feed https://nuget.pkg.github.com/dotnet/index.json --nuget-api-key ${{ secrets.GITHUB_TOKEN }}
Test:
strategy:
fail-fast: false
matrix:
include:
- rid: win-x64
os: windows-latest
name: win-x64
- rid: linux-x64
os: ubuntu-20.04
name: linux-x64
- rid: osx-arm64
os: macos-latest
name: osx-arm64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '8.0.x'
dotnet-quality: 'preview'
- name: Restore
run: dotnet restore --runtime ${{ matrix.rid }}
- name: Test
run: dotnet test -c Release --no-restore --runtime ${{ matrix.rid }} --collect:"XPlat Code Coverage" --results-directory ./coverage --logger:"trx"
- name: Test Report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: .NET Test Report (${{ matrix.rid }})
path: ./coverage/**/*.trx
reporter: dotnet-trx
- name: Upload Coverage Results
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.name }}
path: ./coverage/**/coverage.cobertura.xml
Report-Coverage:
name: "Report Coverage"
runs-on: ubuntu-latest
needs: Test
permissions:
pull-requests: write
checks: write
steps:
- uses: actions/download-artifact@v4
with:
path: ./coverage
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.300
- name: Generate Report
uses: danielpalme/[email protected]
with:
reports: './coverage/**/**/coverage.cobertura.xml'
targetdir: './coveragereport'
reporttypes: 'Cobertura'
verbosity: 'Info'
tag: '${{ github.run_number }}_${{ github.run_id }}'
- uses: 5monkeys/cobertura-action@master
continue-on-error: true
with:
path: coveragereport/Cobertura.xml
minimum_coverage: 0
Release:
runs-on: windows-latest
if: ${{ github.event_name == 'workflow_dispatch' && inputs.release }}
needs: [Build, Test]
environment: Release
steps:
- uses: actions/checkout@v3
with:
ssh-key: ${{ secrets.SILK_ACTIONS_DEPLOY_KEY }}
- uses: actions/download-artifact@v4
with:
name: unsigned_nupkgs
path: artifacts
- name: Push to NuGet
if: ${{ github.repository == 'dotnet/Silk.NET' }}
run: >-
.\build.cmd SignPackages PushToNuGet FinishRelease --skip Clean Compile Pack
--nuget-api-key ${{ secrets.NUGET_TOKEN }}
--akv-certificate ${{ secrets.AKV_CERTIFICATE }}
--akv-client-id ${{ secrets.AKV_CLIENT_ID }}
--akv-client-secret ${{ secrets.AKV_CLIENT_SECRET }}
--akv-tenant ${{ secrets.AKV_TENANT }}
--akv-vault-url ${{ secrets.AKV_VAULT_URL }}
--discord-webhook ${{ secrets.DISCORD_ANNOUNCEMENT_WEBHOOK }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Signed Artifacts to Actions
uses: actions/upload-artifact@v4
with:
name: signed_nupkgs
path: "artifacts/**/*nupkg"
if-no-files-found: warn
retention-days: 30