Skip to content

Commit fc663c7

Browse files
author
Petr Sramek
committed
extracted build steps to composite action
1 parent 1e17c49 commit fc663c7

File tree

2 files changed

+114
-47
lines changed

2 files changed

+114
-47
lines changed

.github/actions/build/action.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: 'Build with .NET ${{ inputs.dotnet_sdk_version }}'
2+
author: 'Pete Sramek'
3+
description: 'Generating software versions'
4+
inputs:
5+
# Required
6+
assembly-version:
7+
description: 'Assembly version.'
8+
required: true
9+
assembly-informational-version:
10+
description: 'Assembly informational version.'
11+
required: true
12+
assembly-file-version:
13+
description: 'Assembly file version.'
14+
required: true
15+
# Optional
16+
dotnet_sdk_version:
17+
description: '.NET SDK version'
18+
required: false
19+
default: vars.DOTNET_SDK_VERSION
20+
build-configuration:
21+
description: 'Build configuration. Default: vars.DEFAULT_BUILD_CONFIGURATION'
22+
required: false
23+
default: vars.DEFAULT_BUILD_CONFIGURATION
24+
build-platform:
25+
description: 'Build platform. Deafult: vars.DEFAULT_BUILD_PLATFORM'
26+
required: false
27+
default: vars.DEFAULT_BUILD_PLATFORM
28+
build-glob-pattern:
29+
description: 'Search pattern for source code. Default: vars.SRC_SEARCH_PATTERN'
30+
required: false
31+
default: vars.SRC_SEARCH_PATTERN
32+
upload-build-artifacts:
33+
description: 'Upload build artifacts, Default: ''true'''
34+
required: false
35+
default: 'true'
36+
build-artifacts-glob-pattern:
37+
description: 'Search pattern for build artifacts. Default: ''{**/bin/*,**/obj/*}'''
38+
required: false
39+
default: '{**/bin/*,**/obj/*}'
40+
build-artifacts-name:
41+
description: 'Upload build artifacts, Default: ''build'''
42+
required: false
43+
default: 'build'
44+
45+
runs:
46+
using: "composite"
47+
steps:
48+
- uses: actions/checkout@v4
49+
50+
- name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}'
51+
uses: actions/setup-dotnet@v4
52+
with:
53+
dotnet-version: ${{ inputs.dotnet_sdk_version }}
54+
55+
- name: 'Build with dotnet CLI'
56+
shell: cmd
57+
run: dotnet build ${{ inputs.search-pattern }} --configuration ${{ inputs.build-configuration }} /p:Platform=${{ inputs.build-platform }} /p:Version=${{ inputs.assembly-version }} /p:AssemblyInformationalVersion=${{ inputs.assembly--informational-version }} /p:FileVersion=${{ inputs.assembly-file-version }}
58+
59+
- name: 'Upload build artifacts'
60+
if: ${{ inputs.upload-build-artifacts == 'true' }}
61+
uses: actions/upload-artifact@v4
62+
with:
63+
name: ${{ inputs.build-artifacts-name }}
64+
path: inputs.build-artifacts-glob-pattern
65+
66+
67+
68+

.github/workflows/dotnet.yml

Lines changed: 46 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -42,60 +42,59 @@ jobs:
4242
- uses: actions/checkout@v4
4343
with:
4444
fetch-depth: 0
45-
- uses: ./.github/actions/versioning
46-
id: versioning
45+
- name: Install GitVersion ${{ vars.GIT_VERSION }}
46+
uses: gittools/actions/gitversion/setup@v3.1.11
4747
with:
48-
git-version: ${{ vars.GIT_VERSION }}
49-
is-release: ${{ env.is_release }}
50-
# - name: Install GitVersion ${{ vars.GIT_VERSION }}
51-
# uses: gittools/actions/gitversion/setup@v3.1.11
52-
# with:
53-
# versionSpec: ${{ vars.GIT_VERSION }}
54-
# preferLatestVersion: true
55-
# - name: Calculate version with GitVersion ${{ vars.GIT_VERSION }}
56-
# id: gitversion
57-
# uses: gittools/actions/gitversion/execute@v3.1.11
58-
# with:
59-
# useConfigFile: true
60-
# configFilePath: ./.gitversion/version.yml
48+
versionSpec: ${{ vars.GIT_VERSION }}
49+
preferLatestVersion: true
50+
- name: Calculate version with GitVersion ${{ vars.GIT_VERSION }}
51+
id: gitversion
52+
uses: gittools/actions/gitversion/execute@v3.1.11
53+
with:
54+
useConfigFile: true
55+
configFilePath: ./.gitversion/version.yml
6156

6257
build:
63-
name: Build with .NET ${{ vars.DOTNET_SDK_VERSION }}
58+
name: Build with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
6459
needs: [versioning]
6560
runs-on: ubuntu-latest
6661
env:
6762
ASSEMBLY_VERSION: ${{ needs.versioning.outputs.ASSEMBLY_VERSION }}
6863
ASSEMBLY_INFORMATIONAL_VERSION: ${{ needs.versioning.outputs.ASSEMBLY_INFORMATIONAL_VERSION }}
6964
FILE_VERSION: ${{ needs.versioning.outputs.FILE_VERSION }}
70-
PACKAGE_VERSION: ${{ needs.versioning.outputs.PACKAGE_VERSION }}
7165
steps:
7266
- uses: actions/checkout@v4
73-
- name: Setup .NET ${{ vars.DOTNET_SDK_VERSION }}
74-
uses: actions/setup-dotnet@v4
67+
- uses: ./.github/actions/build
7568
with:
76-
dotnet-version: ${{ vars.DOTNET_SDK_VERSION }}
77-
- name: Build with .NET ${{ vars.DOTNET_SDK_VERSION }}
78-
run: dotnet build ${{ vars.SRC_SEARCH_PATTERN }} --configuration ${{ vars.BUILD_CONFIGURATION }} /p:Platform=${{ vars.BUILD_PLATFORM }} /p:Version=${{ env.ASSEMBLY_VERSION }} /p:AssemblyInformationalVersion=${{ env.ASSEMBLY_INFORMATIONAL_VERSION }} /p:FileVersion=${{ env.FILE_VERSION }}
79-
- name: Upload Build
80-
uses: actions/upload-artifact@v4
81-
with:
82-
name: build
83-
path: |
84-
**/bin/*
85-
**/obj/*
69+
assembly-version: ${{ needs.versioning.outputs.ASSEMBLY_VERSION }}
70+
assembly-informational-version: ${{ needs.versioning.outputs.ASSEMBLY_INFORMATIONAL_VERSION }}
71+
assembly-file-version: ${{ needs.versioning.outputs.FILE_VERSION }}
72+
# - name: Setup .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
73+
# uses: actions/setup-dotnet@v4
74+
# with:
75+
# dotnet-version: ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
76+
# - name: Build with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
77+
# run: dotnet build ${{ vars.SRC_SEARCH_PATTERN }} --configuration ${{ vars.DEFAULT_BUILD_CONFIGURATION }} /p:Platform=${{ vars.DEFAULT_BUILD_PLATFORM }} /p:Version=${{ env.ASSEMBLY_VERSION }} /p:AssemblyInformationalVersion=${{ env.ASSEMBLY_INFORMATIONAL_VERSION }} /p:FileVersion=${{ env.FILE_VERSION }}
78+
# - name: Upload Build
79+
# uses: actions/upload-artifact@v4
80+
# with:
81+
# name: build
82+
# path: |
83+
# **/bin/*
84+
# **/obj/*
8685

8786
test:
88-
name: Test with .NET ${{ vars.DOTNET_SDK_VERSION }}
87+
name: Test with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
8988
needs: [build]
9089
runs-on: ubuntu-latest
9190
steps:
9291
- uses: actions/checkout@v4
93-
- name: Setup .NET ${{ vars.DOTNET_SDK_VERSION }}
92+
- name: Setup .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
9493
uses: actions/setup-dotnet@v4
9594
with:
96-
dotnet-version: ${{ vars.DOTNET_SDK_VERSION }}
97-
- name: Test with .NET ${{ vars.DOTNET_SDK_VERSION }}
98-
run: dotnet test ${{ vars.TEST_SEARCH_PATTERN }} --configuration ${{ vars.BUILD_CONFIGURATION }} --verbosity normal --settings unit-test.runsettings -- --coverage --coverage-output-format cobertura --report-trx --results-directory ${{ runner.temp }}/test-results/
95+
dotnet-version: ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
96+
- name: Test with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
97+
run: dotnet test ${{ vars.TEST_SEARCH_PATTERN }} --configuration ${{ vars.DEFAULT_BUILD_CONFIGURATION }} --verbosity normal --settings unit-test.runsettings -- --coverage --coverage-output-format cobertura --report-trx --results-directory ${{ runner.temp }}/test-results/
9998
- name: Upload Test Results
10099
uses: actions/upload-artifact@v4
101100
with:
@@ -119,7 +118,7 @@ jobs:
119118
name: Write Code Coverage Summary
120119

121120
pack:
122-
name: Pack with .NET ${{ vars.DOTNET_SDK_VERSION }}
121+
name: Pack with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
123122
needs: [build, versioning]
124123
runs-on: ubuntu-latest
125124
env:
@@ -129,16 +128,16 @@ jobs:
129128
PACKAGE_VERSION: ${{ needs.versioning.outputs.PACKAGE_VERSION }}
130129
steps:
131130
- uses: actions/checkout@v4
132-
- name: Setup .NET ${{ vars.DOTNET_SDK_VERSION }}
131+
- name: Setup .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
133132
uses: actions/setup-dotnet@v4
134133
with:
135-
dotnet-version: ${{ vars.DOTNET_SDK_VERSION }}
134+
dotnet-version: ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
136135
- name: Download Build
137136
uses: actions/download-artifact@v4
138137
with:
139138
name: build
140-
- name: Pack with .NET ${{ vars.DOTNET_SDK_VERSION }}
141-
run: dotnet pack ${{ vars.SRC_SEARCH_PATTERN }} --no-build --no-restore --configuration ${{ vars.BUILD_CONFIGURATION }} /p:Platform=${{ vars.BUILD_PLATFORM }} /p:PackageVersion=${{ env.PACKAGE_VERSION }} /p:Version=${{ env.ASSEMBLY_VERSION }} /p:AssemblyInformationalVersion=${{ env.ASSEMBLY_INFORMATIONAL_VERSION }} /p:FileVersion=${{ env.FILE_VERSION }} --output ${{ runner.temp }}/packages/
139+
- name: Pack with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
140+
run: dotnet pack ${{ vars.SRC_SEARCH_PATTERN }} --no-build --no-restore --configuration ${{ vars.DEFAULT_BUILD_CONFIGURATION }} /p:Platform=${{ vars.DEFAULT_BUILD_PLATFORM }} /p:PackageVersion=${{ env.PACKAGE_VERSION }} /p:Version=${{ env.ASSEMBLY_VERSION }} /p:AssemblyInformationalVersion=${{ env.ASSEMBLY_INFORMATIONAL_VERSION }} /p:FileVersion=${{ env.FILE_VERSION }} --output ${{ runner.temp }}/packages/
142141
- name: Upload Package
143142
uses: actions/upload-artifact@v4
144143
with:
@@ -149,7 +148,7 @@ jobs:
149148
150149
benchmark:
151150
if: ${{ github.env.is_release || vars.BENCHMARKDOTNET_RUN_OVERRIDE == 'true' }}
152-
name: Benchmark with .NET ${{ vars.DOTNET_SDK_VERSION }} on ${{ matrix.os }}
151+
name: Benchmark with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }} on ${{ matrix.os }}
153152
needs: [build]
154153
strategy:
155154
matrix:
@@ -170,7 +169,7 @@ jobs:
170169
name: build
171170
- name: Benchmark
172171
working-directory: ${{ vars.BENCHMARKDOTNET_WORKING_DIRECTORY }}
173-
run: dotnet run --configuration ${{ vars.BUILD_CONFIGURATION }} /p:Platform=${{ vars.BUILD_PLATFORM }} --framework ${{ vars.BUILD_FRAMEWORK }} --runtimes ${{ vars.BENCHMARKDOTNET_RUNTIMES }} --filter ${{ vars.BENCHMARKDOTNET_FILTER }} --exporters GitHub --memory --artifacts ${{ runner.temp }}/benchmarks/ --join
172+
run: dotnet run --configuration ${{ vars.DEFAULT_BUILD_CONFIGURATION }} /p:Platform=${{ vars.DEFAULT_BUILD_PLATFORM }} --framework ${{ vars.DEFAULT_BUILD_FRAMEWORK }} --runtimes ${{ vars.BENCHMARKDOTNET_RUNTIMES }} --filter ${{ vars.BENCHMARKDOTNET_FILTER }} --exporters GitHub --memory --artifacts ${{ runner.temp }}/benchmarks/ --join
174173
- name: Upload Benchmark Results
175174
uses: actions/upload-artifact@v4
176175
with:
@@ -184,7 +183,7 @@ jobs:
184183

185184
publish-docs:
186185
if: ${{ github.env.is_release && !github.env.is_preview }}
187-
name: Docs with .NET ${{ vars.DOTNET_SDK_VERSION }}
186+
name: Docs with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
188187
needs: [benchmark, test]
189188
environment:
190189
name: github-pages
@@ -196,7 +195,7 @@ jobs:
196195
- name: Dotnet Setup
197196
uses: actions/setup-dotnet@v4
198197
with:
199-
dotnet-version: ${{ vars.DOTNET_SDK_VERSION }}
198+
dotnet-version: ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
200199
- name: Download Benchmarks
201200
uses: actions/download-artifact@v4
202201
with:
@@ -223,7 +222,7 @@ jobs:
223222

224223
publish-package-internal:
225224
if: ${{ !github.env.is_release }}
226-
name: Publish package with .NET ${{ vars.DOTNET_SDK_VERSION }}
225+
name: Publish package with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
227226
needs: [pack]
228227
environment:
229228
name: private-nuget-feed
@@ -234,7 +233,7 @@ jobs:
234233
- name: Dotnet Setup
235234
uses: actions/setup-dotnet@v4
236235
with:
237-
dotnet-version: ${{ vars.DOTNET_SDK_VERSION }}
236+
dotnet-version: ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
238237
- name: Download Packages
239238
uses: actions/download-artifact@v4
240239
with:
@@ -247,7 +246,7 @@ jobs:
247246
248247
release-package:
249248
if: ${{ github.env.is_release }}
250-
name: Release package with .NET ${{ vars.DOTNET_SDK_VERSION }}
249+
name: Release package with .NET ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
251250
needs: [pack, test]
252251
environment:
253252
name: public-nuget-feed
@@ -258,7 +257,7 @@ jobs:
258257
- name: Dotnet Setup
259258
uses: actions/setup-dotnet@v4
260259
with:
261-
dotnet-version: ${{ vars.DOTNET_SDK_VERSION }}
260+
dotnet-version: ${{ vars.DEFAULT_DOTNET_SDK_VERSION }}
262261
- name: Download Packages
263262
uses: actions/download-artifact@v4
264263
with:

0 commit comments

Comments
 (0)