-
Notifications
You must be signed in to change notification settings - Fork 3
123 lines (111 loc) · 5 KB
/
deploy-activity-api.yml
File metadata and controls
123 lines (111 loc) · 5 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
name: Deploy Activity Api
on:
pull_request:
branches:
- main
paths:
- 'infra/apps/activity-api/**'
- 'src/Biotrackr.Activity.Api/**'
permissions:
contents: read
id-token: write
pull-requests: write
env:
DOTNET_VERSION: 9.0.x
COVERAGE_PATH: ${{ github.workspace }}/coverage
jobs:
env-setup:
name: Setup Environment
runs-on: ubuntu-latest
outputs:
dotnet-version: ${{ steps.set-output-defaults.outputs.dotnet-version }}
coverage-path: ${{ steps.set-output-defaults.outputs.coverage-path }}
steps:
- name: set outputs with default values
id: set-output-defaults
run: |
echo "dotnet-version=${{ env.DOTNET_VERSION }}" >> "$GITHUB_OUTPUT"
echo "coverage-path=${{ env.COVERAGE_PATH }}" >> "$GITHUB_OUTPUT"
run-unit-tests:
name: Run Unit Tests
needs: env-setup
uses: willvelida/biotrackr/.github/workflows/template-dotnet-run-unit-tests.yml@main
with:
dotnet-version: ${{ needs.env-setup.outputs.dotnet-version }}
working-directory: ./src/Biotrackr.Activity.Api/Biotrackr.Activity.Api.UnitTests
coverage-path: ${{ needs.env-setup.outputs.coverage-path }}
build-container-image-dev:
name: Build and Push Container Image
needs: run-unit-tests
uses: willvelida/biotrackr/.github/workflows/template-acr-push-image.yml@main
with:
working-directory: ./src/Biotrackr.Activity.Api
app-name: biotrackr-activity-api
secrets:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
resource-group-name: ${{ secrets.AZURE_RG_NAME_DEV }}
retrieve-container-image-dev:
name: Retrieve Container Image
needs: build-container-image-dev
runs-on: ubuntu-latest
outputs:
loginServer: ${{ steps.get-acr-server.outputs.loginServer }}
steps:
- 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: Get ACR server
id: get-acr-server
run: |
loginServer=$(az acr list --resource-group ${{ secrets.AZURE_RG_NAME_DEV }} --query "[0].loginServer" -o tsv)
echo "loginServer=$loginServer" > "$GITHUB_OUTPUT"
lint:
name: Run Bicep Linter
needs: retrieve-container-image-dev
uses: willvelida/biotrackr/.github/workflows/template-bicep-linter.yml@main
with:
template-file: './infra/apps/activity-api/main.bicep'
validate:
name: Validate Template
needs: [lint, retrieve-container-image-dev]
uses: willvelida/biotrackr/.github/workflows/template-bicep-validate.yml@main
with:
template-file: './infra/apps/activity-api/main.bicep'
parameters-file: ./infra/apps/activity-api/main.dev.bicepparam imageName=${{ needs.retrieve-container-image-dev.outputs.loginServer }}/biotrackr-activity-api:${{ github.sha }}
scope: resourcegroup
secrets:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
resource-group-name: ${{ secrets.AZURE_RG_NAME_DEV }}
preview:
name: Preview Changes
needs: [validate, retrieve-container-image-dev]
uses: willvelida/biotrackr/.github/workflows/template-bicep-whatif.yml@main
with:
template-file: './infra/apps/activity-api/main.bicep'
parameters-file: ./infra/apps/activity-api/main.dev.bicepparam imageName=${{ needs.retrieve-container-image-dev.outputs.loginServer }}/biotrackr-activity-api:${{ github.sha }}
secrets:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
resource-group-name: ${{ secrets.AZURE_RG_NAME_DEV }}
deploy-dev:
name: Deploy Template to Dev
needs: [preview, retrieve-container-image-dev]
uses: willvelida/biotrackr/.github/workflows/template-bicep-deploy.yml@main
with:
template-file: './infra/apps/activity-api/main.bicep'
parameters-file: ./infra/apps/activity-api/main.dev.bicepparam imageName=${{ needs.retrieve-container-image-dev.outputs.loginServer }}/biotrackr-activity-api:${{ github.sha }}
scope: resourcegroup
environment: dev
secrets:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
resource-group-name: ${{ secrets.AZURE_RG_NAME_DEV }}