-
Notifications
You must be signed in to change notification settings - Fork 6
136 lines (118 loc) · 3.96 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
name: Build
on:
push:
pull_request:
branches:
- main
- release-*
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
# 6.0 needed for GitVersion
dotnet-version: |
6.0.x
8.0.x
- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v1
with:
versionSpec: "5.12.0"
- name: Determine Version
id: gitversion
uses: gittools/actions/gitversion/execute@v1
with:
useConfigFile: true
configFilePath: "GitVersion.yml"
- uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Install dependencies
working-directory: ./src/main
run: dotnet restore
- name: Install SDK dependencies
working-directory: ./src/sdk
run: dotnet restore Yardarm.Sdk.sln
- name: Build
working-directory: ./src/main
run: dotnet build --configuration Release -p:Version=${{ steps.gitversion.outputs.nuGetVersionV2 }} --no-restore
- name: Test
working-directory: ./src/main
run: dotnet test --configuration Release --no-build --verbosity normal
- name: Build SDK
working-directory: ./src/sdk
run: dotnet build --configuration Release -p:Version=${{ steps.gitversion.outputs.nuGetVersionV2 }} --no-restore Yardarm.Sdk.sln
- name: Test Generate
run: ./scripts/generate.sh
- name: Pack
working-directory: ./src/main
run: dotnet pack --configuration Release -p:Version=${{ steps.gitversion.outputs.nuGetVersionV2 }} --no-build
# Note: SDK is packed by build above, doesn't need to be packed here
- name: Push to NuGet.org
if: ${{ startsWith(github.ref, 'refs/tags/release/') }}
working-directory: ./src
run: |
dotnet nuget push **/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
- name: Push to GitHub Packages
if: ${{ startsWith(github.ref, 'refs/pull/') || startsWith(github.ref, 'refs/tags/release/') }}
working-directory: ./src
run: |
dotnet nuget push **/*.nupkg --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/CenterEdge/index.json --skip-duplicate
docker:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
# 6.0 needed for GitVersion
dotnet-version: |
6.0.x
- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v1
with:
versionSpec: "5.12.0"
- name: Determine Version
id: gitversion
uses: gittools/actions/gitversion/execute@v1
with:
useConfigFile: true
configFilePath: "GitVersion.yml"
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/centeredge/yardarm
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}},value=${{ steps.gitversion.outputs.nuGetVersionV2 }}
type=sha
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
context: .
build-args: VERSION=${{ steps.gitversion.outputs.nuGetVersionV2 }}
push: ${{ startsWith(github.ref, 'refs/tags/release/') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max