-
Notifications
You must be signed in to change notification settings - Fork 11
145 lines (114 loc) · 4.47 KB
/
ci-cd.yaml
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
# GitHub Actions workflow
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions
name: CI
on:
push:
workflow_dispatch:
jobs:
dot_net_framework_test:
name: .Net Framework 4.6.2
runs-on: windows-latest
timeout-minutes: 10
steps:
- name: Checkout source
uses: actions/checkout@v2
- name: Setup MSBuild Path
uses: microsoft/[email protected]
- name: Setup NuGet
uses: NuGet/setup-nuget@v1
with:
nuget-version: "5.x"
- name: Restore NuGet Packages
run: nuget restore shipengine-dotnet.sln
- name: Build .Net App
run: msbuild shipengine-dotnet.sln /p:Configuration=Release
- name: Run Test
run: dotnet test ShipEngineSDK.Test/bin/Release/net462/ShipEngineSDK.Test.dll
dot_net_core_test:
name: .Net 8.0 on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: true
matrix:
os:
- ubuntu-latest
- windows-latest
steps:
- name: Checkout source
uses: actions/checkout@v2
- name: Setup dotnet 8.0.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: 8.0.x
- name: Dotnet tool restore
run: dotnet tool restore
- name: Lint
if: ${{ matrix.os == 'ubuntu-latest'}}
run: dotnet format
- name: Dotnet Build
run: dotnet build --configuration Release
- name: Run 8.0 Tests
run: dotnet test -f net8.0 --settings ShipEngineSDK.Test/coverage.runsettings
- name: Move generated lcov file to expected location
shell: bash
run: |
ls -Rlh ShipEngineSDK.Test/TestResults/*/coverage.info
cat ShipEngineSDK.Test/TestResults/*/coverage.info > ShipEngineSDK.Test/TestResults/lcov.info
- name: Send code coverage results to Coveralls
uses: coverallsapp/[email protected]
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel: true
flag-name: run-${{ matrix.test_number }}
path-to-lcov: ShipEngineSDK.Test/TestResults/lcov.info
coverage:
name: Code Coverage
needs: dot_net_core_test
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
nuget-deploy:
runs-on: ubuntu-latest
needs: [dot_net_framework_test, dot_net_core_test]
if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch'
steps:
# Checkout code if release was created
- uses: actions/checkout@v2
- uses: bbonkr/get-version-action@v1
id: get_version
with:
project: './ShipEngineSDK/ShipEngineSDK.csproj'
show_log_message: true
# Setup Dotnet if release was created
- name: Setup dotnet 8.0.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: 8.0.x
- name: publish on version change
id: publish_nuget
uses: alirezanet/[email protected]
if: github.ref == 'refs/heads/main' || (github.event_name == 'workflow_dispatch' && steps.get_version.outputs.pre-release != '')
with:
# Filepath of the project to be packaged, relative to root of repository
PROJECT_FILE_PATH: ShipEngineSDK/ShipEngineSDK.csproj
# NuGet package id, used for version detection & defaults to project name
PACKAGE_NAME: ShipEngine
# Filepath with version info, relative to root of repository & defaults to PROJECT_FILE_PATH
# VERSION_FILE_PATH: Directory.Build.props
# Regex pattern to extract version info in a capturing group
# VERSION_REGEX: ^\s*<Version>(.*)<\/Version>\s*$
# Flag to toggle git tagging, enabled by default
TAG_COMMIT: true
# Format of the git tag, [*] gets replaced with actual version
TAG_FORMAT: v*
# API key to authenticate with NuGet server
NUGET_KEY: ${{secrets.NUGET_KEY}}
# Flag to toggle pushing symbols along with nuget package to the server, disabled by default
INCLUDE_SYMBOLS: false