-
-
Notifications
You must be signed in to change notification settings - Fork 499
Expand file tree
/
Copy pathbuild.yml
More file actions
128 lines (123 loc) · 3.78 KB
/
Copy pathbuild.yml
File metadata and controls
128 lines (123 loc) · 3.78 KB
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
name: Build
on:
push:
branches:
- main
pull_request:
release:
types:
- published
workflow_dispatch:
env:
# Disable the .NET logo in the console output.
DOTNET_NOLOGO: true
# Disable the .NET first time experience to skip caching NuGet packages and speed up the build.
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
# Disable sending .NET CLI telemetry to Microsoft.
DOTNET_CLI_TELEMETRY_OPTOUT: true
# Set the build number in MinVer.
MINVERBUILDMETADATA: build.${{github.run_number}}
jobs:
build:
name: Build-${{matrix.os}}
runs-on: ${{matrix.os}}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- name: "Checkout"
uses: actions/checkout@v4.3.1
with:
lfs: true
fetch-depth: 0
- name: "Install .NET Core SDK"
uses: actions/setup-dotnet@v3.2.0
- name: "Dotnet Tool Restore"
run: dotnet tool restore
shell: pwsh
- name: "Dotnet Cake Build"
run: dotnet cake --target=Build
shell: pwsh
- name: "Dotnet Cake Test"
run: dotnet cake --target=Test
shell: pwsh
- name: "Dotnet Cake Publish"
run: dotnet cake --target=Publish
shell: pwsh
- name: "Publish Artefacts"
uses: actions/upload-artifact@v3.1.3
with:
name: ${{matrix.os}}
path: "./Artefacts"
publish-test-results:
name: "Publish Tests Results"
needs: build
if: always()
permissions:
checks: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: "Download Artefact"
uses: actions/download-artifact@v3.0.2
with:
path: "./Artefacts"
- name: "Publish Test Summary"
uses: test-summary/action@v2
if: always()
with:
paths: "./Artefacts/*/*.xml"
#if (Docker)
docker:
name: Docker-${{matrix.os}}
env:
DOCKER_IMAGE_NAME: graphqltemplate
#if (GitHubContainerRegistry)
DOCKER_REGISTRY: ghcr.io
DOCKER_USERNAME: GITHUB-USERNAME-LOWERCASE
DOCKER_PASSWORD: ${{secrets.GITHUB_TOKEN}}
##elif (DockerHub)
# DOCKER_REGISTRY: registry.hub.docker.com
# DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}}
# DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
#endif
environment:
#if (GitHubContainerRegistry)
name: "GitHub Container Registry"
url: https://github.com/GITHUB-USERNAME/GITHUB-PROJECT/pkgs/container/graphqltemplate
##elif (DockerHub)
# name: 'Docker Hub'
# url: https://hub.docker.com/repository/docker/DOCKER_USERNAME/graphqltemplate
#endif
permissions:
packages: write
runs-on: ${{matrix.os}}
strategy:
matrix:
os: [ubuntu-latest]
steps:
- name: "Checkout"
uses: actions/checkout@v4.3.1
with:
lfs: true
fetch-depth: 0
- name: "Install .NET Core SDK"
uses: actions/setup-dotnet@v3.2.0
- name: "Dotnet Tool Restore"
run: dotnet tool restore
shell: pwsh
- name: "Install QEMU"
id: qemu
uses: docker/setup-qemu-action@v1
- name: "Available platforms"
run: echo ${{steps.qemu.outputs.platforms}}
- name: "Install Docker BuildX"
uses: docker/setup-buildx-action@v1
- name: "Docker Login"
if: github.ref == 'refs/heads/main' || github.event_name == 'release'
run: echo ${{env.DOCKER_PASSWORD}} | docker login ${{env.DOCKER_REGISTRY}} --username ${{env.DOCKER_USERNAME}} --password-stdin
shell: pwsh
- name: "Dotnet Cake DockerBuild"
run: dotnet cake --target=DockerBuild --tag=${{env.DOCKER_REGISTRY}}/${{env.DOCKER_USERNAME}}/${{env.DOCKER_IMAGE_NAME}} --push=${{github.ref == 'refs/heads/main' || github.event_name == 'release'}}
shell: pwsh
#endif