-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (116 loc) · 4.08 KB
/
build-and-release.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
name: Build and release
on:
# Dev
workflow_dispatch:
pull_request:
push:
# Preview
branches: [ main ]
# Stable
tags: [ "v*" ]
release:
types:
- published
env:
NET_SDK: '6.0.416'
jobs:
build_main:
name: "[ubuntu-latest] Build, test and stage"
runs-on: ubuntu-latest
steps:
- name: "Checkout"
uses: actions/checkout@v4
with:
fetch-depth: 0 # We need full history for version number
- name: "Setup .NET SDK"
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.NET_SDK }}
- name: "Build, test and bundle"
run: |
dotnet tool restore
dotnet script build.csx --isolated-load-context -- --target=CI-Build --configuration=Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Publish artifacts to CI"
uses: actions/upload-artifact@v3
with:
name: "Artifacts"
retention-days: 7
path: |
build/artifacts/
!build/artifacts/docs
- name: Publish docs artifact to CI
uses: actions/upload-pages-artifact@v2
with:
path: build/artifacts/docs
build_sec:
name: "[${{ matrix.os }}] Build and test"
strategy:
matrix:
os: [ macos-latest, windows-latest ]
runs-on: ${{ matrix.os }}
steps:
- name: "Checkout"
uses: actions/checkout@v4
with:
fetch-depth: 0 # We need full history for version number
- name: "Setup .NET SDK"
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.NET_SDK }}
# No need to stage as one job can create the binaries for all platforms
- name: "Build, test and bundle"
run: |
dotnet tool restore
dotnet script build.csx --isolated-load-context -- --target=Default --configuration=Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Preview release on push to main only
# Stable release on version tag push only
push_artifacts:
name: "Push artifacts"
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')
needs: [ "build_main", "build_sec" ]
runs-on: ubuntu-latest
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
env:
# Needed only for Azure DevOps Artifacts due to its weird auth method.
NUGET_FEED: 'https://pkgs.dev.azure.com/SceneGate/SceneGate/_packaging/SceneGate-Preview/nuget/v3/index.json'
steps:
- name: "Checkout"
uses: actions/checkout@v4
with:
fetch-depth: 0 # We need full history for version number
- name: "Download artifacts"
uses: actions/download-artifact@v3
with:
name: "Artifacts"
path: "./build/artifacts/"
- name: "Setup .NET SDK"
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.NET_SDK }}
# Weird way to authenticate in Azure DevOps Artifacts
# Then, we need to setup VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
- name: "Install Azure Artifacts Credential Provider"
run: wget -qO- https://aka.ms/install-artifacts-credprovider.sh | bash
- name: "Deploy artifacts"
run: |
dotnet tool restore
dotnet script build.csx --isolated-load-context -- --target=CI-Deploy --configuration=Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
STABLE_NUGET_FEED_TOKEN: "az"
PREVIEW_NUGET_FEED_TOKEN: "az" # Dummy, auth via below env var
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: '{"endpointCredentials": [{"endpoint":"${{ env.NUGET_FEED }}", "username":"", "password":"${{ secrets.NUGET_TOKEN }}"}]}'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2