mirror of
https://github.com/Telecominfraproject/wlan-cloud-helm.git
synced 2025-12-25 06:37:04 +00:00
* thirdparties replaced with latest bitnami charts * migration values example for persistence, dev-local example for thirdparties * removing hardcoded passwords * changing storage classes to mimic what minikube has * fixing missing folder * fixing PR comments, fixing testing build * forgot to fix the namespace in the testing build * fixing path issues * fixing another path issue * fixing build issues * improving namespace support * fixing cleanup task * fixing yaml files * further yaml formatting * Update README.md * Update testing.yml Co-authored-by: Gleb Boushev <4c74356b41@outlook.com> Co-authored-by: Leonid Mirsky <leonid@opsfleet.com>
104 lines
3.3 KiB
YAML
104 lines
3.3 KiB
YAML
name: CloudSDK deployment and testing
|
|
|
|
env:
|
|
PR_NUMBER: ${{ github.event.number }}
|
|
HELM_RELEASE_PREFIX: tip-wlan
|
|
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_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [ master ]
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout required repos
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: wlan-pki-cert-scripts
|
|
repository: Telecominfraproject/wlan-pki-cert-scripts
|
|
- name: Checkout Cloud SDK repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: wlan-cloud-helm
|
|
repository: Telecominfraproject/wlan-cloud-helm
|
|
- name: Checkout helm values repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: Toolsmith
|
|
repository: Telecominfraproject/Toolsmith
|
|
token: ${{ secrets.PAT_TOKEN }}
|
|
|
|
- name: Generate Helm values file
|
|
run: |
|
|
./Toolsmith/helm-values/aws-cicd-testing-pr-deployment.yaml.sh ${{ env.PR_NUMBER }} > pr-deployment.yaml
|
|
|
|
- name: Generate certs
|
|
working-directory: wlan-pki-cert-scripts
|
|
run: |
|
|
./generate_all.sh
|
|
./copy-certs-to-helm.sh ../wlan-cloud-helm
|
|
|
|
- name: Get kubeconfig for EKS ${{ env.AWS_EKS_NAME }}
|
|
run: |
|
|
aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
|
|
|
|
- name: Deploy Cloud SDK
|
|
run: |
|
|
helm dependency update wlan-cloud-helm/${{ env.HELM_RELEASE_PREFIX }}
|
|
# using a timeout of 20 minutes as the EKS nodes may need to be scaled which takes some time
|
|
helm upgrade --install ${{ env.HELM_RELEASE_PREFIX }}-pr-${{ env.PR_NUMBER }} wlan-cloud-helm/tip-wlan -f pr-deployment.yaml --create-namespace --namespace ${{ env.HELM_RELEASE_PREFIX }}-pr-${{ env.PR_NUMBER }} --wait --timeout 20m
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
needs: [ deploy ]
|
|
steps:
|
|
- name: Execute tests
|
|
run: |
|
|
echo Running tests...
|
|
# this is needed to make until work
|
|
set +e
|
|
|
|
urls="https://wlan-ui-pr-$PR_NUMBER.cicd.lab.wlan.tip.build https://wlan-graphql-pr-$PR_NUMBER.cicd.lab.wlan.tip.build/graphql"
|
|
for url in $urls; do
|
|
max_retry=300
|
|
counter=0
|
|
until curl --silent $url > /dev/null
|
|
do
|
|
sleep 1
|
|
[[ counter -eq $max_retry ]] && echo "$url not reachable after $counter tries...giving up" && exit 1
|
|
echo "#$counter: $url not reachable. trying again..."
|
|
((counter++))
|
|
done
|
|
echo Successfully reached URL $url
|
|
done
|
|
|
|
echo Tests were successful
|
|
|
|
cleanup:
|
|
runs-on: ubuntu-latest
|
|
needs: [ deploy, test ]
|
|
if: ${{ always() }}
|
|
steps:
|
|
- name: Get kubeconfig for EKS ${{ env.AWS_EKS_NAME }}
|
|
run: |
|
|
aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
|
|
|
|
- name: Delete Cloud SDK Helm release
|
|
run: |
|
|
helm delete ${{ env.HELM_RELEASE_PREFIX }}-pr-${{ env.PR_NUMBER }} --namespace ${{ env.HELM_RELEASE_PREFIX }}-pr-${{ env.PR_NUMBER }} || true
|
|
|
|
- name: Delete namespace
|
|
run: |
|
|
kubectl delete namespace ${{ env.HELM_RELEASE_PREFIX }}-pr-${{ env.PR_NUMBER }} --wait=true --ignore-not-found true
|