-
Notifications
You must be signed in to change notification settings - Fork 20
185 lines (169 loc) · 7.89 KB
/
ucentralgw-dev-deployment.yaml
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
name: Update DEV OpenWIFI Cloud SDK 2.x clusters
defaults:
run:
shell: bash
env:
AWS_EKS_NAME: tip-wlan-main
AWS_DEFAULT_OUTPUT: json
AWS_DEFAULT_REGION: us-east-2
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CLIENT_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CLIENT_KEY }}
# DigiCert certs
DIGICERT_CERT: ${{ secrets.DIGICERT_CERT }}
DIGICERT_KEY: ${{ secrets.DIGICERT_KEY }}
# # https://stackoverflow.com/questions/59977364/github-actions-how-use-strategy-matrix-with-script
# # Required object fiels per environment:
# # - namespace - namespace suffix that will used added for the Kubernetes environment (i.e. if you pass 'test', kubernetes namespace will be named 'openwifi-test')
# # - deploy_method - deployment method for the chart deployment (supported methods - 'git' (will use helm-git from assembly chart) and 'bundle' (will use chart stored in the Artifactory0
# # - chart_version - version of chart to be deployed from assembly chart (for 'git' method git ref may be passed, for 'bundle' method version of chart may be passed)
# # - owgw_version - OpenWIFI Gateway version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owsec_version - OpenWIFI Security version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owfms_version - OpenWIFI Firmware version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owprov_version - OpenWIFI Provisioning version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owanalytics_version - OpenWIFI Analytics version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owsub_version - OpenWIFI Subscription (Userportal) version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owrrm_version - OpenWIFI radio resource management service version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owgwui_version - OpenWIFI Web UI version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
# # - owprovui_version - OpenWIFI Provisioning Web UI version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
testbeds: '[
{
"namespace": "dev01",
"deploy_method": "git",
"chart_version": "main",
"owgw_version": "master",
"owsec_version": "main",
"owfms_version": "main",
"owprov_version": "main",
"owanalytics_version": "main",
"owsub_version": "main",
"owrrm_version": "main",
"owgwui_version": "main",
"owprovui_version": "main"
}
]'
on:
workflow_dispatch:
inputs:
force_latest:
default: 'false'
description: 'Force deployment of the latest versions of all microservices ignoring matrix versions'
required: true
id:
description: 'run identifier'
required: false
jobs:
id:
name: Workflow ID Provider
runs-on: ubuntu-latest
steps:
- name: ${{ github.event.inputs.id }}
run: echo run identifier ${{ inputs.id }}
generate-matrix:
name: Generate matrix for build
runs-on: ubuntu-latest
needs:
- id
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: generate-matrix
id: set-matrix
run: |
cat >> $GITHUB_OUTPUT << EOF
matrix={"include":${{ env.testbeds }}}
EOF
deploy:
name: Update OpenWIFI Cloud SDK instances
runs-on: ubuntu-latest
needs:
- id
- generate-matrix
strategy:
matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }}
fail-fast: false
steps:
- name: Checkout repo with Helm values
uses: actions/checkout@v3
with:
repository: Telecominfraproject/wlan-cloud-ucentral-deploy
path: wlan-cloud-ucentral-deploy
ref: ${{ matrix.chart_version }}
- name: Prepare certificates from secrets
working-directory: wlan-cloud-ucentral-deploy/chart/environment-values
run: |
echo "${{ env.DIGICERT_CERT }}" | base64 -d > cert.pem
echo "${{ env.DIGICERT_KEY }}" | base64 -d > key.pem
- name: Fetch kubeconfig
run: |
aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
# TODO WIFI-7839 delete when issue is resolved on AWS CLI side
- name: install kubectl
run: |
curl -LO "https://dl.k8s.io/release/v1.23.6/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- name: Deploy OpenWIFI Cloud SDK
working-directory: wlan-cloud-ucentral-deploy/chart/environment-values
run: |
export NAMESPACE=${{ matrix.namespace }}
export VALUES_FILE_LOCATION=values.openwifi-qa.yaml,values.openwifi-qa.single-external-db.yaml
export RTTY_TOKEN=${{ secrets.RTTY_TOKEN }}
export OWGW_AUTH_USERNAME=${{ secrets.UCENTRALGW_AUTH_USERNAME }}
export OWGW_AUTH_PASSWORD=${{ secrets.UCENTRALGW_AUTH_PASSWORD }}
export OWFMS_S3_SECRET=${{ secrets.UCENTRALFMS_S3_SECRET }}
export OWFMS_S3_KEY=${{ secrets.UCENTRALFMS_S3_KEY }}
export CERT_LOCATION=cert.pem
export KEY_LOCATION=key.pem
export OWSEC_NEW_PASSWORD=${{ secrets.OWSEC_NEW_PASSWORD }}
export MAILER_USERNAME=${{ secrets.MAILER_USERNAME }}
export MAILER_PASSWORD=${{ secrets.MAILER_PASSWORD }}
export IPTOCOUNTRY_IPINFO_TOKEN=${{ secrets.IPTOCOUNTRY_IPINFO_TOKEN }}
if [[ "${{ github.event.inputs.force_latest }}" == "false" ]]; then
export DEPLOY_METHOD=${{ matrix.deploy_method }}
export CHART_VERSION=${{ matrix.chart_version }}
export OWGW_VERSION=${{ matrix.owgw_version }}
export OWGWUI_VERSION=${{ matrix.owgwui_version }}
export OWSEC_VERSION=${{ matrix.owsec_version }}
export OWFMS_VERSION=${{ matrix.owfms_version }}
export OWPROV_VERSION=${{ matrix.owprov_version }}
export OWPROVUI_VERSION=${{ matrix.owprovui_version }}
export OWANALYTICS_VERSION=${{ matrix.owanalytics_version }}
export OWSUB_VERSION=${{ matrix.owsub_version }}
export OWRRM_VERSION=${{ matrix.owrrm_version }}
./deploy.sh
else
export DEPLOY_METHOD=git
export CHART_VERSION=main
export OWGW_VERSION=master
export OWGWUI_VERSION=main
export OWSEC_VERSION=main
export OWFMS_VERSION=main
export OWPROV_VERSION=main
export OWPROVUI_VERSION=main
export OWANALYTICS_VERSION=main
export OWSUB_VERSION=main
export OWRRM_VERSION=main
./deploy.sh
fi
- name: Show resource state on deployment failure
if: failure()
run: |
kubectl get pods --namespace openwifi-${{ matrix.namespace }}
kubectl get services --namespace openwifi-${{ matrix.namespace }}
kubectl get persistentvolumeclaims --namespace openwifi-${{ matrix.namespace }}
- name: Describe pods on deployment failure
if: failure()
run: |
kubectl describe pods --namespace openwifi-${{ matrix.namespace }}
- name: Describe services on deployment failure
if: failure()
run: |
kubectl describe services --namespace openwifi-${{ matrix.namespace }}
- name: Describe persistentvolumeclaims on deployment failure
if: failure()
run: |
kubectl describe persistentvolumeclaims --namespace openwifi-${{ matrix.namespace }}
- name: Rollback Cloud SDK
if: failure()
run: |
helm rollback tip-openwifi --namespace openwifi-${{ matrix.namespace }} --wait --timeout 20m