diff --git a/.github/workflows/advanced.yml b/.github/workflows/advanced.yml index edde9a0f4..e1d19510b 100644 --- a/.github/workflows/advanced.yml +++ b/.github/workflows/advanced.yml @@ -21,7 +21,7 @@ on: description: 'revision of the Open Wifi Helm chart' ap_models: required: true - default: 'edgecore_eap104,edgecore_oap101-6e,cig_wf186h,edgecore_eap101,edgecore_eap102,cig_wf196' + default: 'edgecore_eap104,edgecore_eap101,edgecore_eap111,cig_wf189,edgecore_eap105,sercomm_ap72tip,cig_wf196,yuncore_ax820,yuncore_fap655' description: 'the AP models to test' ap_version: required: true @@ -202,13 +202,13 @@ jobs: if: failure() run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub - test-edgecore-oap101-6e: + test-edgecore-eap101: runs-on: [ self-hosted, small ] needs: [ "vars", "build" ] timeout-minutes: 1440 - if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_oap101-6e')" + if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_eap101')" env: - AP_MODEL: edgecore_oap101-6e + AP_MODEL: edgecore_eap101 steps: - name: Set AP model output id: ap_model @@ -298,13 +298,13 @@ jobs: if: failure() run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub - test-cig-wf86h: + test-edgecore-eap111: runs-on: [ self-hosted, small ] needs: [ "vars", "build" ] timeout-minutes: 1440 - if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'cig_wf186h')" + if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_eap111')" env: - AP_MODEL: cig_wf186h + AP_MODEL: edgecore_eap111 steps: - name: Set AP model output id: ap_model @@ -393,13 +393,13 @@ jobs: if: failure() run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub - test-edgecore-eap101: + test-cig-wf189: runs-on: [ self-hosted, small ] needs: [ "vars", "build" ] timeout-minutes: 1440 - if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_eap101')" + if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'cig_wf189')" env: - AP_MODEL: edgecore_eap101 + AP_MODEL: cig_wf189 steps: - name: Set AP model output id: ap_model @@ -489,13 +489,13 @@ jobs: if: failure() run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub - test-edgecore-eap102: + test-edgecore-eap105: runs-on: [ self-hosted, small ] needs: [ "vars", "build" ] timeout-minutes: 1440 - if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_eap102')" + if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_eap105')" env: - AP_MODEL: edgecore_eap102 + AP_MODEL: edgecore_eap105 steps: - name: Set AP model output id: ap_model @@ -585,6 +585,102 @@ jobs: if: failure() run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub + test-sercomm-ap72tip: + runs-on: [ self-hosted, small ] + needs: [ "vars", "build" ] + timeout-minutes: 1440 + if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'sercomm_ap72tip')" + env: + AP_MODEL: sercomm_ap72tip + steps: + - name: Set AP model output + id: ap_model + run: | + echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT + + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.8" + + - uses: actions/checkout@v3 + - name: install aws CLI tool + run: | + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: install kubectl + run: | + # TODO WIFI-7839 revert to using stable when issue is resolved on AWS CLI side + 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: get EKS access credentials + run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} + + - name: prepare namespace name + id: namespace + run: | + NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')" + echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT + + - name: prepare configuration + run: | + cat << EOF > lab_info.json + ${{ secrets.LAB_INFO_JSON }} + EOF + + - name: run tests + uses: ./.github/actions/run-tests + with: + namespace: ${{ steps.namespace.outputs.name }} + testbed: advanced-2c + marker_expression: "${{ needs.vars.outputs.marker_expression }}" + configuration_file: "./lab_info.json" + testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} + additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"' + allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}" + dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build" + + # necessary because if conditionals in composite actions are currently not respected + - name: get tests logs + if: always() + continue-on-error: true + run: | + podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///") + kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true + + - name: delete namespace + if: always() + continue-on-error: true + run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }} + + - name: show gw logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owgw + + - name: show fms logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owfms + + - name: show prov logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owprov + + - name: show sec logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsec + + - name: show analytics logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/analytics + + - name: show subscription (userportal) logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub + test-cig-wf196: runs-on: [ self-hosted, small ] needs: [ "vars", "build" ] @@ -602,7 +698,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.8" + python-version: "3.8" - uses: actions/checkout@v3 - name: install aws CLI tool @@ -681,11 +777,203 @@ jobs: if: failure() run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub + test-yuncore-ax820: + runs-on: [ self-hosted, small ] + needs: [ "vars", "build" ] + timeout-minutes: 1440 + if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'yuncore_ax820')" + env: + AP_MODEL: yuncore_ax820 + steps: + - name: Set AP model output + id: ap_model + run: | + echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT + + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.8" + + - uses: actions/checkout@v3 + - name: install aws CLI tool + run: | + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: install kubectl + run: | + # TODO WIFI-7839 revert to using stable when issue is resolved on AWS CLI side + 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: get EKS access credentials + run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} + + - name: prepare namespace name + id: namespace + run: | + NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')" + echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT + + - name: prepare configuration + run: | + cat << EOF > lab_info.json + ${{ secrets.LAB_INFO_JSON }} + EOF + + - name: run tests + uses: ./.github/actions/run-tests + with: + namespace: ${{ steps.namespace.outputs.name }} + testbed: advanced-3b + marker_expression: "${{ needs.vars.outputs.marker_expression }}" + configuration_file: "./lab_info.json" + testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} + additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"' + allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}" + dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build" + + # necessary because if conditionals in composite actions are currently not respected + - name: get tests logs + if: always() + continue-on-error: true + run: | + podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///") + kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true + + - name: delete namespace + if: always() + continue-on-error: true + run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }} + + - name: show gw logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owgw + + - name: show fms logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owfms + + - name: show prov logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owprov + + - name: show sec logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsec + + - name: show analytics logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/analytics + + - name: show subscription (userportal) logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub + + test-yuncore-fap655: + runs-on: [ self-hosted, small ] + needs: [ "vars", "build" ] + timeout-minutes: 1440 + if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'yuncore_fap655')" + env: + AP_MODEL: yuncore_fap655 + steps: + - name: Set AP model output + id: ap_model + run: | + echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT + + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.8" + + - uses: actions/checkout@v3 + - name: install aws CLI tool + run: | + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: install kubectl + run: | + # TODO WIFI-7839 revert to using stable when issue is resolved on AWS CLI side + 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: get EKS access credentials + run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} + + - name: prepare namespace name + id: namespace + run: | + NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')" + echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT + + - name: prepare configuration + run: | + cat << EOF > lab_info.json + ${{ secrets.LAB_INFO_JSON }} + EOF + + - name: run tests + uses: ./.github/actions/run-tests + with: + namespace: ${{ steps.namespace.outputs.name }} + testbed: advanced-3c + marker_expression: "${{ needs.vars.outputs.marker_expression }}" + configuration_file: "./lab_info.json" + testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} + additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"' + allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}" + dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build" + + # necessary because if conditionals in composite actions are currently not respected + - name: get tests logs + if: always() + continue-on-error: true + run: | + podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///") + kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true + + - name: delete namespace + if: always() + continue-on-error: true + run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }} + + - name: show gw logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owgw + + - name: show fms logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owfms + + - name: show prov logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owprov + + - name: show sec logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsec + + - name: show analytics logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/analytics + + - name: show subscription (userportal) logs + if: failure() + run: kubectl -n openwifi-${{ needs.vars.outputs.existing_controller }} logs deployment/owsub + # report report: if: "!cancelled()" runs-on: ubuntu-latest - needs: [ vars, test-edgecore-eap104, test-edgecore-oap101-6e, test-cig-wf86h, test-edgecore-eap101, test-edgecore-eap102, test-cig-wf196 ] + needs: [ vars, test-edgecore-eap104, test-edgecore-eap101, test-edgecore-eap111, test-cig-wf189, test-edgecore-eap105, test-sercomm-ap72tip, test-cig-wf196, test-yuncore-ax820, test-yuncore-fap655 ] strategy: fail-fast: false matrix: @@ -736,7 +1024,7 @@ jobs: s3_access_key_secret: ${{ secrets.ALLURE_S3_ACCESS_KEY_SECRET }} cleanup: - needs: [ test-edgecore-eap104, test-edgecore-oap101-6e, test-cig-wf86h, test-edgecore-eap101, test-edgecore-eap102, test-cig-wf196 ] + needs: [ test-edgecore-eap104, test-edgecore-eap101, test-edgecore-eap111, test-cig-wf189, test-edgecore-eap105, test-sercomm-ap72tip, test-cig-wf196, test-yuncore-ax820, test-yuncore-fap655 ] runs-on: ubuntu-latest if: always() steps: