-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (109 loc) · 4.02 KB
/
ci.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
# Docs for the Azure Web Apps Deploy action: https://go.microsoft.com/fwlink/?linkid=2134798
# More GitHub Actions for Azure: https://go.microsoft.com/fwlink/?linkid=2135048
name: CI
on: push
jobs:
npm-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: "src/Client/package.json"
cache: "npm"
cache-dependency-path: "**/package-lock.json"
- name: Install JS dependencies
run: npm ci --prefix src/Client --no-audit --prefer-offline
- name: Run JS linters
run: npm run lint --prefix src/Client
npm-test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/[email protected]
- uses: actions/setup-node@v4
with:
node-version-file: "src/Client/package.json"
cache: "npm"
cache-dependency-path: "**/package-lock.json"
- name: Install JS dependencies
run: npm ci --prefix src/Client --no-audit --prefer-offline
- name: Run JS test
run: npm run test --prefix src/Client
dotnet-test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Start MSSQL DB
run: docker-compose up -d
- uses: actions/setup-node@v4
with:
node-version-file: "src/Client/package.json"
cache: "npm"
cache-dependency-path: "**/package-lock.json"
- uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Set up .NET Core
uses: actions/setup-dotnet@v4
- name: Install dotnet ef
run: dotnet tool install --global dotnet-ef
- name: Set up playwright
run: |
dotnet build tests/EndToEnd.Tests/EndToEnd.Tests.csproj
pwsh tests/EndToEnd.Tests/bin/Debug/net8.0/playwright.ps1 install chromium
- name: Test with the dotnet CLI
run: dotnet test
env:
ActiveDirectoryConfig__AppClientSecret: ${{ secrets.ACTIVEDIRECTORYCONFIG__APPCLIENTSECRET }}
deploy:
runs-on: ubuntu-latest
needs:
- npm-lint
- npm-test
- dotnet-test
if: success() && github.ref == 'refs/heads/main'
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Attempt connection to unpause Azure serverless sql db
continue-on-error: true
uses: azure/[email protected]
with:
server-name: muffi-net-sql-server
connection-string: ${{ secrets.MSSQL_CONNECTION_STRING }}
sql-file: "./sql/create-user.sql"
- uses: actions/setup-node@v4
with:
node-version-file: "src/Client/package.json"
cache: "npm"
cache-dependency-path: "**/package-lock.json"
- uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Set up .NET Core
uses: actions/setup-dotnet@v4
- name: Publish
run: dotnet publish src/Api.WithReact/Api.WithReact.csproj -c Release -o ${{env.DOTNET_ROOT}}/myapp
- name: Run Azure webapp deploy action using publish profile credentials
uses: azure/webapps-deploy@v3
with:
app-name: muffi-net
slot-name: Production
publish-profile: ${{ secrets.AzurePublishProfile }}
package: ${{env.DOTNET_ROOT}}/myapp
- name: Run database migrations
run: |
dotnet tool install --global dotnet-ef
dotnet ef database update --startup-project src/Api.WithReact --project src/Infrastructure
env:
ASPNETCORE_ENVIRONMENT: Development
ConnectionStrings__DefaultConnection: ${{ secrets.MSSQL_CONNECTION_STRING }}