-
Notifications
You must be signed in to change notification settings - Fork 3
120 lines (103 loc) · 3.76 KB
/
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
110
111
112
113
114
115
116
117
118
119
120
# 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.
name: CD
on:
workflow_dispatch: {}
push:
branches:
- main
jobs:
#
# Detect changes to start relevant jobs
#
changes:
uses: ./.github/workflows/detect-changes.yml
#
# CD Docker image
#
cd_docker:
needs: changes
if: ${{ needs.changes.outputs.docker == 'true' }}
uses: Energinet-DataHub/.github/.github/workflows/python-build-and-push-docker-image.yml@v14
with:
docker_changed: ${{ needs.changes.outputs.docker == 'true' }}
# 'docker_changed_in_commit' value is same as 'docker_changed' because we want to build and push docker image when docker changed
docker_changed_in_commit: ${{ needs.changes.outputs.docker == 'true' }}
#
# CD Databricks
#
databricks_promote_prerelease:
needs: changes
if: ${{ needs.changes.outputs.any_databricks == 'true' }}
uses: Energinet-DataHub/.github/.github/workflows/promote-prerelease.yml@v14
with:
release_name_prefix: databricks
#
# CD .NET
#
dotnet_promote_prerelease:
needs: changes
if: ${{ needs.changes.outputs.dotnet == 'true' || needs.changes.outputs.db_migrations == 'true' }}
uses: Energinet-DataHub/.github/.github/workflows/promote-prerelease.yml@v14
with:
release_name_prefix: dotnet
#
# Dispatch deployment request
#
dispatch_deploment_event:
if: ${{ always() && !cancelled() && !failure() && (needs.changes.outputs.any_databricks == 'true' || needs.changes.outputs.dotnet == 'true' || needs.changes.outputs.db_migrations == 'true') }}
runs-on: ubuntu-latest
needs: [
changes,
databricks_promote_prerelease,
dotnet_promote_prerelease
]
steps:
- run: echo "${{ toJSON(needs) }}"
- name: Find associated pull request
uses: Energinet-DataHub/.github/.github/actions/find-related-pr-number@v14
id: find_pull_request
- 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: Repository Dispatch
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ steps.generate_token.outputs.token }}
repository: ${{ vars.environment_repository_path }}
event-type: wholesale-deployment-request-domain
# yamllint disable-line rule:quoted-strings
client-payload: '{"pr_number": "${{ steps.find_pull_request.outputs.pull_request_number }}", "databricks": "${{ needs.changes.outputs.any_databricks }}", "dotnet": "${{ needs.changes.outputs.dotnet }}", "db_migrations": "${{ needs.changes.outputs.db_migrations }}"}'
#
# Send notification to teams channel if deployment dispatch failed
#
dispatch_failed:
needs:
[
databricks_promote_prerelease,
dotnet_promote_prerelease,
dispatch_deploment_event,
cd_docker
]
if: |
always() &&
contains(needs.*.result, 'failure')
uses: Energinet-DataHub/.github/.github/workflows/notify-team.yml@v14
with:
team_name: Mandalorian
subject: "Deployment dispatch failed: Wholesale"
secrets: inherit