@@ -5,40 +5,49 @@ name: build
5
5
on :
6
6
workflow_dispatch :
7
7
push :
8
- branches : [ main, dev, 'feature/*', 'rel/*' ]
8
+ branches : [ main, dev, 'dev/*', 'feature/*', 'rel/*' ]
9
+ paths-ignore :
10
+ - changelog.md
11
+ - code-of-conduct.md
12
+ - security.md
13
+ - support.md
14
+ - readme.md
9
15
pull_request :
10
16
types : [opened, synchronize, reopened]
11
17
12
18
env :
13
19
DOTNET_NOLOGO : true
20
+ VersionPrefix : 42.42.${{ github.run_number }}
21
+ VersionLabel : ${{ github.ref }}
14
22
15
23
defaults :
16
24
run :
17
25
shell : bash
18
26
19
27
jobs :
20
- dotnet-format :
28
+ os-matrix :
21
29
runs-on : ubuntu-latest
30
+ outputs :
31
+ matrix : ${{ steps.lookup.outputs.matrix }}
22
32
steps :
23
33
- name : 🤘 checkout
24
34
uses : actions/checkout@v2
25
- with :
26
- submodules : recursive
27
- fetch-depth : 0
28
-
29
- - name : ✓ ensure format
35
+
36
+ - name : 🔎 lookup
37
+ id : lookup
38
+ shell : pwsh
30
39
run : |
31
- dotnet tool update -g dotnet-format --version 5.0.*
32
- dotnet restore
33
- dotnet format --check -v:diag
40
+ $path = './.github/workflows/os-matrix.json'
41
+ $os = if (test-path $path) { cat $path } else { '["ubuntu-latest"]' }
42
+ echo "matrix=$os" >> $env:GITHUB_OUTPUT
34
43
35
44
build :
45
+ needs : os-matrix
36
46
name : build-${{ matrix.os }}
37
- needs : dotnet-format
38
47
runs-on : ${{ matrix.os }}
39
48
strategy :
40
49
matrix :
41
- os : [ubuntu-latest, windows-latest, macOS-latest]
50
+ os : ${{ fromJSON(needs.os-matrix.outputs.matrix) }}
42
51
steps :
43
52
- name : 🤘 checkout
44
53
uses : actions/checkout@v2
@@ -47,102 +56,38 @@ jobs:
47
56
fetch-depth : 0
48
57
49
58
- name : 🙏 build
50
- run : dotnet build -m:1 -bl:build.binlog -p:VersionLabel="$GITHUB_REF.$GITHUB_RUN_NUMBER" -p:RepositoryBranch=${GITHUB_REF#refs/*/}
59
+ run : dotnet build -m:1
60
+
61
+ - name : ⚙ GNU grep
62
+ if : matrix.os == 'macOS-latest'
63
+ run : |
64
+ brew install grep
65
+ echo 'export PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"' >> .bash_profile
51
66
52
67
- name : 🧪 test
53
- run : dotnet test --no-build -m:1 --blame-hang --blame-hang-timeout 5m -d $GITHUB_WORKSPACE/logs/${{ matrix.os }}.txt -r $GITHUB_WORKSPACE/logs
68
+ uses : ./.github/workflows/test
54
69
55
70
- name : 📦 pack
56
- run : dotnet pack -m:1 -bl:pack.binlog -p:VersionLabel="$GITHUB_REF.$GITHUB_RUN_NUMBER" -p:RepositoryBranch=${GITHUB_REF#refs/*/}
71
+ run : dotnet pack -m:1
57
72
58
- - name : 🔼 packages
59
- uses : actions/upload-artifact@v2
60
- with :
61
- name : bin
62
- path : bin/*.nupkg
63
-
64
73
# Only push CI package to sleet feed if building on ubuntu (fastest)
65
74
- name : 🚀 sleet
66
75
env :
67
76
SLEET_CONNECTION : ${{ secrets.SLEET_CONNECTION }}
68
- if : matrix.os == 'ubuntu-latest' && env.SLEET_CONNECTION != ''
77
+ if : env.SLEET_CONNECTION != ''
69
78
run : |
70
79
dotnet tool install -g --version 4.0.18 sleet
71
80
sleet push bin --config none -f --verbose -p "SLEET_FEED_CONTAINER=nuget" -p "SLEET_FEED_CONNECTIONSTRING=${{ secrets.SLEET_CONNECTION }}" -p "SLEET_FEED_TYPE=azure" || echo "No packages found"
72
81
73
- acceptance :
74
- name : acceptance-${{ matrix.os }}
75
- runs-on : ${{ matrix.os }}
82
+ dotnet-format :
83
+ runs-on : ubuntu-latest
76
84
needs : build
77
- strategy :
78
- matrix :
79
- os : [ubuntu-latest, windows-latest, macOS-latest]
80
85
steps :
81
86
- name : 🤘 checkout
82
87
uses : actions/checkout@v2
88
+ with :
89
+ submodules : recursive
90
+ fetch-depth : 0
83
91
84
- - name : 🔽 packages
85
- uses : actions/download-artifact@v2
86
- with :
87
- name : bin
88
- path : bin
89
-
90
- - name : 🧪 test
91
- run : dotnet test -p:VersionLabel="$GITHUB_REF.$GITHUB_RUN_NUMBER"
92
- working-directory : src/Acceptance
93
-
94
- preview :
95
- defaults :
96
- run :
97
- shell : pwsh
98
- needs : dotnet-format
99
- runs-on : windows-latest
100
-
101
- steps :
102
- - name : 🤘 checkout
103
- uses : actions/checkout@v2
104
-
105
- # > VS Preview
106
- - name : 🔽 dotnet-vs
107
- run : dotnet tool update -g dotnet-vs
108
- - name : 🔽 vs preview
109
- run : vs install preview --quiet +Microsoft.VisualStudio.Component.ManagedDesktop.Core +Microsoft.NetCore.Component.DevelopmentTools
110
- - name : ≥ msbuild
111
- run : echo "$(vs where preview --prop=InstallationPath)\MSBuild\Current\Bin" >> $env:GITHUB_PATH
112
- # < VS Preview
113
-
114
- - name : ⚙ curl
115
- run : |
116
- iwr -useb get.scoop.sh | iex
117
- scoop install curl
118
- - name : 🔍 status for PR
119
- if : ${{ github.event.pull_request.head.sha }}
120
- run : echo "STATUS_SHA=${{ github.event.pull_request.head.sha }}" >> $env:GITHUB_ENV
121
-
122
- - name : 🔍 status for branch
123
- if : ${{ !github.event.pull_request.head.sha }}
124
- run : echo "STATUS_SHA=$($env:GITHUB_SHA)" >> $env:GITHUB_ENV
125
-
126
- - name : ⌛ wait on build
127
- env :
128
- CHECK : build-windows-latest
129
- SHA : ${{ env.STATUS_SHA }}
130
- TOKEN : ${{ secrets.GITHUB_TOKEN }}
131
- run : ./.github/workflows/wait-status.ps1
132
-
133
- - name : ⌛ wait on acceptance
134
- env :
135
- CHECK : acceptance-windows-latest
136
- SHA : ${{ env.STATUS_SHA }}
137
- TOKEN : ${{ secrets.GITHUB_TOKEN }}
138
- run : ./.github/workflows/wait-status.ps1
139
-
140
- - name : 🔽 packages
141
- uses : actions/download-artifact@v2
142
- with :
143
- name : bin
144
- path : bin
145
-
146
- - name : 🧪 test
147
- run : msbuild -r -t:build,test -p:TargetFramework=net472 -p:VersionLabel="$($env:GITHUB_REF).$($env:GITHUB_RUN_NUMBER)"
148
- working-directory : src/Acceptance
92
+ - name : ✓ ensure format
93
+ run : dotnet format --verify-no-changes -v:diag --exclude ~/.nuget
0 commit comments