-
Notifications
You must be signed in to change notification settings - Fork 14
109 lines (94 loc) · 3.23 KB
/
dh-cd.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
# Copyright 2020 Energinet DataHub A/S
#
# Licensed under the Apache License, Version 2.0 (the "License2");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# DataHub UI Frontend and BFF
name: DH CD
on:
push:
branches:
- main
jobs:
#
# Detect changes to start relevant jobs
#
changes:
uses: ./.github/workflows/detect-changes.yml
#
# CD .NET
#
dotnet_promote_prerelease:
needs: changes
if: ${{ needs.changes.outputs.dh_dotnet == 'true' }}
uses: Energinet-DataHub/.github/.github/workflows/promote-prerelease.yml@v14
with:
release_name_prefix: ui_dotnet
#
# Frontend
#
frontend_promote_prerelease:
needs: changes
if: ${{ needs.changes.outputs.dh_frontend == 'true' || needs.changes.outputs.dh_frontend_e2e == 'true' }}
uses: Energinet-DataHub/.github/.github/workflows/promote-prerelease.yml@v14
with:
release_name_prefix: ui_frontend
#
# Dispatch deployment request
#
dispatch_deploment_event:
runs-on: ubuntu-latest
needs: [changes, dotnet_promote_prerelease, frontend_promote_prerelease]
if: |
always() &&
!contains(needs.*.result, 'failure') &&
!contains(needs.*.result, 'cancelled') &&
!(
needs.dotnet_promote_prerelease.result == 'skipped' &&
needs.frontend_promote_prerelease.result == 'skipped'
)
steps:
- run: echo "${{ toJSON(needs) }}"
- uses: Energinet-DataHub/.github/.github/actions/github-create-token@v14
name: Generate Github token
id: generate_token
with:
app_id: ${{ vars.dh3serviceaccount_appid }}
private_key: ${{ secrets.dh3serviceaccount_privatekey }}
- name: Find associated pull request
uses: Energinet-DataHub/.github/.github/actions/find-related-pr-number@v14
id: find_pull_request
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ steps.generate_token.outputs.token }}
repository: ${{ vars.environment_repository_path }}
event-type: ui-deployment-request-domain
# yamllint disable-line rule:quoted-strings
client-payload: '{"pr_number": "${{ steps.find_pull_request.outputs.pull_request_number }}", "dotnet": "${{ needs.changes.outputs.dh_dotnet }}", "frontend": "${{ needs.changes.outputs.dh_frontend }}"}'
#
# Send notification to teams channel if deployment dispatch failed
#
dispatch_failed:
needs:
[
frontend_promote_prerelease,
dotnet_promote_prerelease,
dispatch_deploment_event,
]
if: |
always() &&
contains(needs.*.result, 'failure')
uses: Energinet-DataHub/.github/.github/workflows/notify-team.yml@v14
with:
team_name: TeamFrontend
subject: "Deployment dispatch failed: UI + BFF"
secrets: inherit