-
-
Notifications
You must be signed in to change notification settings - Fork 492
150 lines (143 loc) · 4.34 KB
/
build.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
150
name: Build
on:
push:
branches:
- main
pull_request:
release:
types:
- published
workflow_dispatch:
env:
# Disable the .NET logo in the console output.
DOTNET_NOLOGO: true
# Disable the .NET first time experience to skip caching NuGet packages and speed up the build.
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
# Disable sending .NET CLI telemetry to Microsoft.
DOTNET_CLI_TELEMETRY_OPTOUT: true
# Set the build number in MinVer.
MINVERBUILDMETADATA: build.${{github.run_number}}
jobs:
build:
name: Build-${{matrix.os}}
runs-on: ${{matrix.os}}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- name: "Checkout"
uses: actions/checkout@v3.5.2
with:
lfs: true
fetch-depth: 0
- name: "Install .NET SDK"
uses: actions/setup-dotnet@v3.0.3
with:
dotnet-version: |
3.1.x
5.0.x
global-json-file: "./global.json"
- name: "Dotnet Tool Restore"
run: dotnet tool restore
shell: pwsh
- name: "Dotnet Cake Build"
run: dotnet cake --target=Build
shell: pwsh
- name: "Dotnet Cake Pack"
run: dotnet cake --target=Pack
shell: pwsh
- name: "Publish Artefacts"
uses: actions/upload-artifact@v3.1.2
with:
name: ${{matrix.os}}
path: "./Artefacts"
test:
name: Test-${{matrix.template}}-${{matrix.os}}
runs-on: ${{matrix.os}}
strategy:
matrix:
template: ["API", "GraphQL", "Orleans", "NuGet"]
os: [ubuntu-latest, windows-latest]
steps:
- name: "Checkout"
uses: actions/checkout@v3.5.2
with:
lfs: true
fetch-depth: 0
- name: "Install .NET SDK"
uses: actions/setup-dotnet@v3.0.3
with:
dotnet-version: |
3.1.x
5.0.x
global-json-file: "./global.json"
- name: "Dotnet Tool Restore"
run: dotnet tool restore
shell: pwsh
- name: "Dotnet Cake Build"
run: dotnet cake --target=Build
shell: pwsh
- name: "Dotnet Cake InstallDeveloperCertificate"
run: dotnet cake --target=InstallDeveloperCertificate
shell: pwsh
- name: "Dotnet Cake Test"
run: dotnet cake --target=Test --template=${{matrix.template}}
shell: pwsh
publish-test-results:
name: "Publish Tests Results"
needs: build
if: always()
permissions:
checks: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: "Download Artefact"
uses: actions/download-artifact@v3.0.2
with:
path: "./Artefacts"
- name: "Publish Test Summary"
uses: test-summary/action@v2
if: always()
with:
paths: "./Artefacts/*/*.xml"
push-github-packages:
name: "Push GitHub Packages"
needs: [build, test]
if: github.ref == 'refs/heads/main' || github.event_name == 'release'
environment:
name: "GitHub Packages"
url: https://github.com/orgs/Dotnet-Boxed/packages
permissions:
packages: write
runs-on: windows-latest
steps:
- name: "Download Artefact"
uses: actions/download-artifact@v3.0.2
with:
name: "windows-latest"
- name: "Dotnet NuGet Add Source"
run: dotnet nuget add source https://nuget.pkg.github.com/Dotnet-Boxed/index.json --name GitHub --username RehanSaeed --password ${{secrets.GITHUB_TOKEN}}
shell: pwsh
- name: "Dotnet NuGet Push"
run: dotnet nuget push .\*.nupkg --api-key ${{ github.token }} --source GitHub --skip-duplicate
shell: pwsh
push-nuget:
name: "Push NuGet Packages"
needs: [build, test]
if: github.event_name == 'release'
environment:
name: "NuGet"
url: https://www.nuget.org/packages/Boxed.Templates/
runs-on: windows-latest
steps:
- name: "Download Artefact"
uses: actions/download-artifact@v3.0.2
with:
name: "windows-latest"
- name: "Dotnet NuGet Push"
run: |
Get-ChildItem .\ -Filter *.nupkg |
Where-Object { !$_.Name.Contains('preview') } |
ForEach-Object { dotnet nuget push $_ --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{secrets.NUGET_API_KEY}} }
shell: pwsh