-
-
Notifications
You must be signed in to change notification settings - Fork 4
130 lines (112 loc) · 3.69 KB
/
build.yml
File metadata and controls
130 lines (112 loc) · 3.69 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
129
130
name: build
on:
workflow_dispatch:
push:
branches: [ main, dev/* ]
paths:
- 'samples/**'
- 'src/**'
pull_request:
types: [opened, synchronize, reopened]
env:
DOTNET_NOLOGO: true
Configuration: Release
PackOnBuild: true
VersionPrefix: 42.42.${{ github.run_number }}
VersionLabel: ${{ github.ref }}
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 🤘 checkout
uses: actions/checkout@v4
- name: ⚙ dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.x
8.x
9.x
- name: 🙏 build
run: dotnet build -m:1 -bl
- name: 🐛 logs
uses: actions/upload-artifact@v4
if: runner.debug && always()
with:
name: logs
path: '*.binlog'
- name: ⚙ azurite
run: |
npm install azurite
npx azurite &
- name: 🧪 test
env:
GH_TOKEN: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
run: dotnet test
- name: 🚀 sleet
env:
SLEET_CONNECTION: ${{ secrets.SLEET_CONNECTION }}
if: env.SLEET_CONNECTION != ''
run: |
dotnet tool update sleet -g --allow-downgrade --version $(curl -s --compressed ${{ vars.SLEET_FEED_URL }} | jq '.["sleet:version"]' -r)
sleet push bin --config none -f --verbose -p "SLEET_FEED_CONTAINER=nuget" -p "SLEET_FEED_CONNECTIONSTRING=${{ secrets.SLEET_CONNECTION }}" -p "SLEET_FEED_TYPE=azure" || echo "No packages found"
- name: ⬆️ upload
if: success()
uses: actions/upload-artifact@v4
with:
name: pkg
path: bin/*
deploy:
if: github.ref == 'refs/heads/main'
needs: build
runs-on: windows-latest
steps:
- name: 🤘 checkout
uses: actions/checkout@v4
# Azure App registration with federeted credentials and Storage Blob Data Contributor role in target AZURE_BLOB_URL
# See https://learn.microsoft.com/en-us/entra/workload-id/workload-identity-federation-create-trust-user-assigned-managed-identity?pivots=identity-wif-mi-methods-azp#github-actions-deploying-azure-resources
- name: 🔓 azure login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: ⚙ func 4.x
run: npm i -g azure-functions-core-tools@4 --unsafe-perm true
- name: 🚀 deploy
working-directory: src\Web
run: func azure functionapp publish sl-beta --dotnet-isolated
test:
name: test-${{ matrix.os }}
needs: build
runs-on: ${{ matrix.os }}
defaults:
run:
shell: pwsh
env:
GCM_CREDENTIAL_STORE: cache
strategy:
matrix:
os: [ 'windows-latest', 'ubuntu-latest', 'macOS-latest' ]
steps:
- name: ⬇️ artifacts
uses: actions/download-artifact@v4
with:
name: pkg
path: bin
- name: ⚙ install
working-directory: bin
run: dotnet tool update -g dotnet-sponsor --prerelease --add-source .
- name: 💻 setup
run: |
sponsor --version
pushd ~
git config -f .sponsorlink/.netconfig sponsorlink.id devlooped.sponsors.ci
- name: 🧪 run
run: |
'${{ secrets.DEVLOOPED_TOKEN }}' | sponsor sync devlooped --tos --with-token
$team = cat ~/.sponsorlink/github/devlooped.jwt | jq -R 'split(".") | .[1] | @base64d | fromjson | .roles[] | select(. == "team")' -r
if ($team -ne "team") { exit -1 }