Skip to content

Update DEV01 OpenWIFI Cloud SDK #3098

Update DEV01 OpenWIFI Cloud SDK

Update DEV01 OpenWIFI Cloud SDK #3098

name: Update DEV01 OpenWIFI Cloud SDK
defaults:
run:
shell: bash
env:
AWS_EKS_NAME: tip-wlan-main
AWS_DEFAULT_OUTPUT: json
AWS_DEFAULT_REGION: ap-south-1
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 -s -LO "https://dl.k8s.io/release/v1.27.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