Skip to content

Commit 5178da1

Browse files
committed
updated
1 parent 7457f07 commit 5178da1

File tree

4 files changed

+266
-19
lines changed

4 files changed

+266
-19
lines changed

.github/actions/versioning/format-version/action.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ outputs:
3737
file-version:
3838
description: 'Formatted file version.'
3939
value: ${{ steps.format-version.outputs.file-version }}
40-
package-version:
41-
description: 'Formatted package version.'
42-
value: ${{ steps.format-version.outputs.package-version }}
40+
release-version:
41+
description: 'Formatted release version.'
42+
value: ${{ steps.format-version.outputs.release-version }}
4343

4444
runs:
4545
using: "composite"
@@ -60,7 +60,7 @@ runs:
6060
echo "assembly-informational-version=${{ inputs.version }}.${{ inputs.patch }}+${{ inputs.sha }}" >> $GITHUB_OUTPUT
6161
echo "file-version=${{ inputs.version }}.${{ inputs.patch }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT
6262
if [ -n "${{ inputs.pre-release-tag }}" ]; then
63-
echo "package-version=${{ inputs.version }}.${{ inputs.patch }}-${{ inputs.pre-release-tag }}-${{ inputs.build-number }}" >> $GITHUB_OUTPUT
63+
echo "release-version=${{ inputs.version }}.${{ inputs.patch }}-${{ inputs.pre-release-tag }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT
6464
else
65-
echo "package-version=${{ inputs.version }}.${{ inputs.patch }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT
65+
echo "release-version=${{ inputs.version }}.${{ inputs.patch }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT
6666
fi

.github/workflows/build.yml

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
assembly-version: ${{ steps.format-version.outputs.assembly-version }}
5151
assembly-informational-version: ${{ steps.format-version.outputs.assembly-informational-version }}
5252
file-version: ${{ steps.format-version.outputs.file-version }}
53-
package-version: ${{ steps.format-version.outputs.package-version }}
53+
release-version: ${{ steps.format-version.outputs.release-version }}
5454
steps:
5555
- name: 'Checkout ${{ github.head_ref || github.ref }}'
5656
uses: actions/checkout@v5
@@ -63,23 +63,28 @@ jobs:
6363
uses: './.github/actions/versioning/extract-version'
6464
with:
6565
branch-name: ${{ github.ref_name }}
66+
- name: 'Create build number'
67+
shell: bash
68+
id: create-build-number
69+
run: |
70+
git fetch --unshallow --filter=tree:0
71+
build_number=$(git rev-list --count origin/${{ github.ref_name }} ^origin/main)
72+
echo "build-number=$build_number" >> $GITHUB_OUTPUT
6673
- name: 'Create pre-release tag'
6774
shell: bash
6875
id: create-pre-release-tag
76+
env:
77+
build-number: ${{ steps.create-build-number.outputs.build-number }}
6978
run: |
7079
if [[ '${{ needs.workflow-variables.outputs.is-release }}' == 'true' ]]; then
7180
echo "pre-release-tag=" >> $GITHUB_OUTPUT
81+
elif [[ '${{ needs.workflow-variables.outputs.is-preview }}' == 'true' ]]; then
82+
pre_release_tag='preview'
83+
echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT
7284
else
73-
pre_release_tag=$(echo ${{ github.ref_name }} | tr '/' '.' | tr '-' '.'| tr '_' '.')
85+
pre_release_tag=$(echo ${{ github.ref_name }} | tr '/' '-' | tr '.' '-'| tr '_' '-')
7486
echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT
7587
fi
76-
- name: 'Create build number'
77-
shell: bash
78-
id: create-build-number
79-
run: |
80-
git fetch --unshallow --filter=tree:0
81-
build_number=$(git rev-list --count origin/${{ github.ref_name }} ^origin/main)
82-
echo "build-number=$build_number" >> $GITHUB_OUTPUT
8388
- name: 'Format version'
8489
id: format-version
8590
uses: ./.github/actions/versioning/format-version
@@ -172,7 +177,7 @@ jobs:
172177
assembly-version: ${{ needs.versioning.outputs.assembly-version }}
173178
assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }}
174179
file-version: ${{ needs.versioning.outputs.file-version }}
175-
package-version: ${{ needs.versioning.outputs.package-version }}
180+
release-version: ${{ needs.versioning.outputs.release-version }}
176181
package-artifact-name: package
177182
outputs:
178183
package-artifact-name: ${{ env.package-artifact-name }}
@@ -192,7 +197,7 @@ jobs:
192197

193198
- name: Pack with .NET
194199
run: |
195-
dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.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 }}/${{ env.nuget-packages-directory }}
200+
dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.build-platform }}" /p:PackageVersion=${{ env.release-version }} /p:Version=${{ env.assembly-version }} /p:AssemblyInformationalVersion=${{ env.assembly-informational-version }} /p:FileVersion=${{ env.file-version }} --output ${{ runner.temp }}/${{ env.nuget-packages-directory }}
196201
197202
- name: Upload Package
198203
uses: actions/upload-artifact@v4

.github/workflows/pull-request.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
assembly-version: ${{ steps.format-version.outputs.assembly-version }}
5151
assembly-informational-version: ${{ steps.format-version.outputs.assembly-informational-version }}
5252
file-version: ${{ steps.format-version.outputs.file-version }}
53-
package-version: ${{ steps.format-version.outputs.package-version }}
53+
release-version: ${{ steps.format-version.outputs.release-version }}
5454
steps:
5555
- name: 'Checkout ${{ github.head_ref || github.ref }}'
5656
uses: actions/checkout@v5
@@ -159,7 +159,7 @@ jobs:
159159
assembly-version: ${{ needs.versioning.outputs.assembly-version }}
160160
assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }}
161161
file-version: ${{ needs.versioning.outputs.file-version }}
162-
package-version: ${{ needs.versioning.outputs.package-version }}
162+
release-version: ${{ needs.versioning.outputs.release-version }}
163163
package-artifact-name: package
164164
outputs:
165165
package-artifact-name: ${{ env.package-artifact-name }}
@@ -179,7 +179,7 @@ jobs:
179179

180180
- name: Pack with .NET
181181
run: |
182-
dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.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 }}/${{ env.nuget-packages-directory }}
182+
dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.build-platform }}" /p:PackageVersion=${{ env.release-version }} /p:Version=${{ env.assembly-version }} /p:AssemblyInformationalVersion=${{ env.assembly-informational-version }} /p:FileVersion=${{ env.file-version }} --output ${{ runner.temp }}/${{ env.nuget-packages-directory }}
183183
184184
- name: Upload Package
185185
uses: actions/upload-artifact@v4

.github/workflows/release.yml

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
name: 'Pull Request'
2+
3+
on:
4+
pull_request:
5+
types: [closed]
6+
branches:
7+
- 'preview/**'
8+
- 'release/**'
9+
paths:
10+
- 'src/**'
11+
12+
permissions:
13+
actions: read
14+
pages: write
15+
id-token: write
16+
contents: write
17+
18+
concurrency:
19+
group: build-${{ github.head_ref || github.ref }}
20+
cancel-in-progress: false
21+
22+
env:
23+
dotnet-sdk-version: '9.x'
24+
build-configuration: 'Release'
25+
build-platform: 'Any CPU'
26+
git-version: '6.0.x'
27+
test-result-directory: 'test-results'
28+
nuget-packages-directory: 'nuget-packages'
29+
30+
jobs:
31+
workflow-variables:
32+
name: 'Set workflow variables'
33+
runs-on: ubuntu-latest
34+
35+
outputs:
36+
is-release: ${{ startsWith(github.ref_name, 'release') }}
37+
is-preview: ${{ startsWith(github.ref_name, 'preview') }}
38+
39+
steps:
40+
- name: 'Set workflow variables'
41+
id: github
42+
run: |
43+
echo "is-release:${{ startsWith(github.ref_name, 'release') }}"
44+
echo "is-preview:${{ startsWith(github.ref_name, 'preview') }}"
45+
46+
validate-release:
47+
name: 'Validate release branch'
48+
needs: [workflow-variables]
49+
runs-on: ubuntu-latest
50+
steps:
51+
- name: 'Validate release branch'
52+
if: ${{ needs.workflow-variables.outputs.is-release != 'true' || needs.workflow-variables.outputs.is-preview != 'true' }}
53+
run: |
54+
echo "This workflow can only be run on 'release/**' or 'preview/**' branches."
55+
exit 1
56+
57+
versioning:
58+
name: 'Extract version from branch'
59+
runs-on: ubuntu-latest
60+
outputs:
61+
friendly-version: ${{ steps.format-version.outputs.friendly-version }}
62+
assembly-version: ${{ steps.format-version.outputs.assembly-version }}
63+
assembly-informational-version: ${{ steps.format-version.outputs.assembly-informational-version }}
64+
file-version: ${{ steps.format-version.outputs.file-version }}
65+
release-version: ${{ steps.format-version.outputs.release-version }}
66+
steps:
67+
- name: 'Checkout ${{ github.head_ref || github.ref }}'
68+
uses: actions/checkout@v5
69+
- name: 'Setup .NET ${{ env.dotnet-sdk-version }}'
70+
uses: actions/setup-dotnet@v4
71+
with:
72+
dotnet-version: ${{ env.dotnet-sdk-version }}
73+
- name: 'Extract version from branch name'
74+
id: extract-version
75+
uses: './.github/actions/versioning/extract-version'
76+
with:
77+
branch-name: ${{ github.ref_name }}
78+
- name: 'Create pre-release tag'
79+
shell: bash
80+
id: create-pre-release-tag
81+
run: |
82+
if [[ '${{ needs.workflow-variables.outputs.is-release }}' == 'true' ]]; then
83+
echo "pre-release-tag=" >> $GITHUB_OUTPUT
84+
else
85+
pre_release_tag=$(echo ${{ github.ref_name }} | tr '/' '.' | tr '-' '.'| tr '_' '.')
86+
echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT
87+
fi
88+
- name: 'Create build number'
89+
shell: bash
90+
id: create-build-number
91+
run: |
92+
git fetch --unshallow --filter=tree:0
93+
build_number=$(git rev-list --count origin/${{ github.ref_name }} ^origin/main)
94+
echo "build-number=$build_number" >> $GITHUB_OUTPUT
95+
- name: 'Format version'
96+
id: format-version
97+
uses: ./.github/actions/versioning/format-version
98+
with:
99+
version: ${{ steps.extract-version.outputs.version }}
100+
patch: ${{ github.run_number }}
101+
build-number: ${{ steps.create-build-number.outputs.build-number }}
102+
sha: ${{ github.sha }}
103+
pre-release-tag: ${{ steps.create-pre-release-tag.outputs.pre-release-tag }}
104+
105+
build:
106+
name: 'Compile source code'
107+
needs: [workflow-variables, versioning]
108+
runs-on: ubuntu-latest
109+
110+
env:
111+
assembly-version: ${{ needs.versioning.outputs.assembly-version }}
112+
assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }}
113+
file-version: ${{ needs.versioning.outputs.file-version }}
114+
115+
steps:
116+
- name: 'Checkout ${{ github.head_ref || github.ref }}'
117+
uses: actions/checkout@v5
118+
119+
- name: 'Compile source code'
120+
uses: ./.github/actions/source/compile
121+
with:
122+
project-path: '**/PolylineAlgorithm.csproj'
123+
assembly-version: ${{ env.assembly-version }}
124+
assembly-informational-version: ${{ env.assembly-informational-version }}
125+
file-version: ${{ env.file-version }}
126+
treat-warnins-as-error: ${{ needs.workflow-variables.outputs.is-release }}
127+
128+
test:
129+
name: 'Run tests'
130+
needs: [build]
131+
runs-on: ubuntu-latest
132+
steps:
133+
- name: 'Checkout ${{ github.head_ref || github.ref }}'
134+
uses: actions/checkout@v5
135+
136+
- name: 'Setup .NET'
137+
uses: actions/setup-dotnet@v4
138+
with:
139+
dotnet-version: ${{ env.dotnet-sdk-version }}
140+
141+
- name: 'Run tests'
142+
uses: ./.github/actions/testing/test
143+
with:
144+
project-path: '**/PolylineAlgorithm.Tests.csproj'
145+
test-results-directory: '${{ runner.temp }}/${{ env.test-result-directory }}/'
146+
code-coverage-settings-file: '${{ github.workspace}}/code-coverage-settings.xml'
147+
148+
- name: 'Generate test report'
149+
uses: ./.github/actions/testing/test-report
150+
id: test-report
151+
with:
152+
test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/'
153+
154+
- name: Write test report summary
155+
run: cat ${{ steps.test-report.outputs.test-report-file }} >> $GITHUB_STEP_SUMMARY
156+
157+
- name: 'Generate code coverage'
158+
uses: ./.github/actions/testing/code-coverage
159+
id: code-coverage-report
160+
with:
161+
test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/'
162+
163+
- name: Write code coverage report summary
164+
run: cat ${{ steps.code-coverage-report.outputs.code-coverage-report-file }} >> $GITHUB_STEP_SUMMARY
165+
166+
pack:
167+
name: 'Package binaries'
168+
needs: [versioning, build]
169+
runs-on: ubuntu-latest
170+
env:
171+
assembly-version: ${{ needs.versioning.outputs.assembly-version }}
172+
assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }}
173+
file-version: ${{ needs.versioning.outputs.file-version }}
174+
release-version: ${{ needs.versioning.outputs.release-version }}
175+
package-artifact-name: package
176+
outputs:
177+
package-artifact-name: ${{ env.package-artifact-name }}
178+
steps:
179+
- name: 'Checkout ${{ github.head_ref || github.ref }}'
180+
uses: actions/checkout@v5
181+
182+
- name: Setup .NET
183+
uses: actions/setup-dotnet@v4
184+
with:
185+
dotnet-version: ${{ env.dotnet-sdk-version }}
186+
187+
- name: Download Build
188+
uses: actions/download-artifact@v5
189+
with:
190+
name: build
191+
192+
- name: Pack with .NET
193+
run: |
194+
dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.build-platform }}" /p:PackageVersion=${{ env.release-version }} /p:Version=${{ env.assembly-version }} /p:AssemblyInformationalVersion=${{ env.assembly-informational-version }} /p:FileVersion=${{ env.file-version }} --output ${{ runner.temp }}/${{ env.nuget-packages-directory }}
195+
196+
- name: Upload Package
197+
uses: actions/upload-artifact@v4
198+
with:
199+
name: ${{ env.package-artifact-name }}
200+
path: |
201+
${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.nupkg
202+
${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.snupkg
203+
204+
publish-package:
205+
name: 'Publish package'
206+
needs: [pack]
207+
env:
208+
package-artifact-name: ${{ needs.pack.outputs.package-artifact-name }}
209+
runs-on: ubuntu-latest
210+
environment: 'NuGet'
211+
steps:
212+
- name: 'Checkout ${{ github.head_ref || github.ref }}'
213+
uses: actions/checkout@v5
214+
215+
- name: Setup .NET
216+
uses: actions/setup-dotnet@v4
217+
with:
218+
dotnet-version: ${{ env.dotnet-sdk-version }}
219+
220+
- name: 'Publish package to Azure Artifact feed'
221+
uses: ./.github/actions/nuget/publish-package
222+
with:
223+
package-artifact-name: ${{ env.package-artifact-name }}
224+
nuget-feed-url: ${{ vars.NUGET_PACKAGE_FEED_URL }}
225+
nuget-feed-api-key: ${{ secrets.NUGET_PACKAGE_FEED_API_KEY }}
226+
nuget-feed-server: 'NuGet'
227+
working-directory: ${{ runner.temp }}/${{ env.nuget-packages-directory }}
228+
dotnet-sdk-version: ${{ env.dotnet-sdk-version }}'
229+
230+
231+
release:
232+
name: 'Create release'
233+
needs: [publish-package]
234+
runs-on: ubuntu-latest
235+
steps:
236+
- name: 'Checkout ${{ github.head_ref || github.ref }}'
237+
uses: actions/checkout@v5
238+
239+
- name: 'Create GitHub Release'
240+
uses: ./.github/actions/github/create-release
241+
with:
242+
release-version: ${{ github.ref_name }}

0 commit comments

Comments
 (0)