From 113b63a6ab0c57e7f7a49dd78b419a6dbd7b741e Mon Sep 17 00:00:00 2001 From: mengzhenyu Date: Fri, 7 Jan 2022 14:57:35 +0800 Subject: [PATCH] chore(autotest): add webhook service --- .../run_broker_performance_cluster.yaml | 254 +++++++++++------- 1 file changed, 154 insertions(+), 100 deletions(-) diff --git a/.github/workflows/run_broker_performance_cluster.yaml b/.github/workflows/run_broker_performance_cluster.yaml index 8fbfd8405..ae1fa120e 100644 --- a/.github/workflows/run_broker_performance_cluster.yaml +++ b/.github/workflows/run_broker_performance_cluster.yaml @@ -9,104 +9,104 @@ on: # workflow_dispatch: jobs: - build: - runs-on: ubuntu-20.04 - - strategy: - fail-fast: false - matrix: - profile: - - emqx - otp: - - 24.1.5-3 - os: - - ubuntu20.04 - - container: "ghcr.io/emqx/emqx-builder/5.0-3:${{ matrix.otp }}-${{ matrix.os }}" - - steps: - - uses: actions/checkout@v1 - - name: build zip packages - run: make ${{ matrix.profile }}-zip - - name: packages test - run: | - export CODE_PATH=$GITHUB_WORKSPACE - EMQX_NAME=${{ matrix.profile }} .ci/build_packages/tests.sh - - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.os}} - path: _packages/**/*.zip - - terraform_emqx: - runs-on: ubuntu-latest - - needs: [build] - outputs: - emqx_public_ip: ${{ steps.emqx_private_ip.outputs.emqx_public_ip }} - emqx_node_ip1: ${{ steps.emqx_private_ip.outputs.emqx_node_ip1 }} - emqx_node_ip2: ${{ steps.emqx_private_ip.outputs.emqx_node_ip2 }} - emqx_node_ip3: ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }} - steps: - - uses: actions/checkout@v2 - - uses: actions/download-artifact@v2 - with: - name: ubuntu20.04 - path: /tmp - - name: Download emqx package - run: | - sudo cp /tmp/emqx/*.zip /tmp/emqx.zip - - name: Checkout tf-test-automation - uses: actions/checkout@v2 - with: - repository: emqx/tf-test-automation - ref: emqx-broker - path: tf-test-automation - - name: Setup Terraform - uses: hashicorp/setup-terraform@v1.3.2 - with: - terraform_wrapper: false - - name: Terraform Init tf-test-automation - working-directory: ./tf-test-automation/services/emqx - id: init1 - run: | - terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" - - name: Terraform Validate tf-test-automation - working-directory: ./tf-test-automation/services/emqx - id: validate1 - run: terraform validate -no-color - - name: Terraform Apply tf-test-automation - working-directory: ./tf-test-automation/services/emqx - id: server_ip - run: | - terraform apply -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" -var="emqx_package=/tmp/emqx.zip" - echo "::set-output name=emqx_private_ips::$(terraform output emqx_private_ips)" - echo "::set-output name=emqx_public_ips::$(terraform output emqx_public_ips)" - - name: Rename and upload emqx tfstate - working-directory: ./tf-test-automation/services/emqx - run: | - mv ./terraform.tfstate ./emqx.tfstate - - uses: actions/upload-artifact@v2 - if: always() - with: - name: tfstate - path: ./tf-test-automation/services/emqx/emqx.tfstate - - name: Show emqx_private_ips - id: emqx_private_ip - run: | - ip1=`echo "${{ steps.server_ip.outputs.emqx_private_ips }}"|awk -F ',' '{print $1}'` - ip2=`echo "${{ steps.server_ip.outputs.emqx_private_ips }}"|awk -F ',' '{print $2}'` - ip3=`echo "${{ steps.server_ip.outputs.emqx_private_ips }}"|awk -F ',' '{print $3}'` - emqx_public_ip=`echo "${{ steps.server_ip.outputs.emqx_public_ips }}"|awk -F ',' '{print $1}'` - echo "::set-output name=emqx_node_ip1::$ip1" - echo "::set-output name=emqx_node_ip2::$ip2" - echo "::set-output name=emqx_node_ip3::$ip3" - echo "::set-output name=emqx_public_ip::$emqx_public_ip" - - name: Show emqx node ip - run: | - echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip1 }} - echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip2 }} - echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }} - echo ${{ steps.emqx_private_ip.outputs.emqx_public_ip }} +# build: +# runs-on: ubuntu-20.04 +# +# strategy: +# fail-fast: false +# matrix: +# profile: +# - emqx +# otp: +# - 24.1.5-3 +# os: +# - ubuntu20.04 +# +# container: "ghcr.io/emqx/emqx-builder/5.0-3:${{ matrix.otp }}-${{ matrix.os }}" +# +# steps: +# - uses: actions/checkout@v1 +# - name: build zip packages +# run: make ${{ matrix.profile }}-zip +# - name: packages test +# run: | +# export CODE_PATH=$GITHUB_WORKSPACE +# EMQX_NAME=${{ matrix.profile }} .ci/build_packages/tests.sh +# - uses: actions/upload-artifact@v2 +# with: +# name: ${{ matrix.os}} +# path: _packages/**/*.zip +# +# terraform_emqx: +# runs-on: ubuntu-latest +# +# needs: [build] +# outputs: +# emqx_public_ip: ${{ steps.emqx_private_ip.outputs.emqx_public_ip }} +# emqx_node_ip1: ${{ steps.emqx_private_ip.outputs.emqx_node_ip1 }} +# emqx_node_ip2: ${{ steps.emqx_private_ip.outputs.emqx_node_ip2 }} +# emqx_node_ip3: ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }} +# steps: +# - uses: actions/checkout@v2 +# - uses: actions/download-artifact@v2 +# with: +# name: ubuntu20.04 +# path: /tmp +# - name: Download emqx package +# run: | +# sudo cp /tmp/emqx/*.zip /tmp/emqx.zip +# - name: Checkout tf-test-automation +# uses: actions/checkout@v2 +# with: +# repository: emqx/tf-test-automation +# ref: emqx-broker +# path: tf-test-automation +# - name: Setup Terraform +# uses: hashicorp/setup-terraform@v1.3.2 +# with: +# terraform_wrapper: false +# - name: Terraform Init tf-test-automation +# working-directory: ./tf-test-automation/services/emqx +# id: init1 +# run: | +# terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" +# - name: Terraform Validate tf-test-automation +# working-directory: ./tf-test-automation/services/emqx +# id: validate1 +# run: terraform validate -no-color +# - name: Terraform Apply tf-test-automation +# working-directory: ./tf-test-automation/services/emqx +# id: server_ip +# run: | +# terraform apply -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" -var="emqx_package=/tmp/emqx.zip" +# echo "::set-output name=emqx_private_ips::$(terraform output emqx_private_ips)" +# echo "::set-output name=emqx_public_ips::$(terraform output emqx_public_ips)" +# - name: Rename and upload emqx tfstate +# working-directory: ./tf-test-automation/services/emqx +# run: | +# mv ./terraform.tfstate ./emqx.tfstate +# - uses: actions/upload-artifact@v2 +# if: always() +# with: +# name: tfstate +# path: ./tf-test-automation/services/emqx/emqx.tfstate +# - name: Show emqx_private_ips +# id: emqx_private_ip +# run: | +# ip1=`echo "${{ steps.server_ip.outputs.emqx_private_ips }}"|awk -F ',' '{print $1}'` +# ip2=`echo "${{ steps.server_ip.outputs.emqx_private_ips }}"|awk -F ',' '{print $2}'` +# ip3=`echo "${{ steps.server_ip.outputs.emqx_private_ips }}"|awk -F ',' '{print $3}'` +# emqx_public_ip=`echo "${{ steps.server_ip.outputs.emqx_public_ips }}"|awk -F ',' '{print $1}'` +# echo "::set-output name=emqx_node_ip1::$ip1" +# echo "::set-output name=emqx_node_ip2::$ip2" +# echo "::set-output name=emqx_node_ip3::$ip3" +# echo "::set-output name=emqx_public_ip::$emqx_public_ip" +# - name: Show emqx node ip +# run: | +# echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip1 }} +# echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip2 }} +# echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }} +# echo ${{ steps.emqx_private_ip.outputs.emqx_public_ip }} # xmeter_start: # runs-on: ubuntu-latest @@ -315,11 +315,55 @@ jobs: # - name: Show mongo ip # run: | # echo ${{ steps.mongo_ip.outputs.mongo_ip }} + + terraform_webhook: + runs-on: ubuntu-latest + + outputs: + webhook_ip: ${{ steps.webhook_ip.outputs.webhook_ip }} + steps: + - name: Checkout tf-test-automation + uses: actions/checkout@v2 + with: + repository: emqx/tf-test-automation + ref: emqx-broker + path: tf-test-automation + - name: Setup Terraform + uses: hashicorp/setup-terraform@v1.3.2 + with: + terraform_wrapper: false + - name: Terraform Init tf-test-automation + working-directory: ./tf-test-automation/services/webhook + id: init + run: | + terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" + - name: Terraform Validate tf-test-automation + working-directory: ./tf-test-automation/services/webhook + id: validate + run: terraform validate -no-color + - name: Terraform Apply tf-test-automation + working-directory: ./tf-test-automation/services/webhook + id: webhook_ip + run: | + terraform apply -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" + echo "::set-output name=webhook_ip::$(terraform output webhook_private_ips)" + - name: Rename and upload webhook server tfstate + working-directory: ./tf-test-automation/services/webhook + run: | + mv ./terraform.tfstate ./webhook.tfstate + - uses: actions/upload-artifact@v2 + if: always() + with: + name: tfstate + path: ./tf-test-automation/services/webhook/webhook.tfstate + - name: Show webhook ip + run: | + echo ${{ steps.webhook_ip.outputs.webhook_ip }} # # master_control: # runs-on: ubuntu-latest # -# needs: [xmeter_start, terraform_emqx, terraform_mysql, terraform_redis, terraform_pgsql, terraform_mongo] +# needs: [xmeter_start, terraform_emqx, terraform_mysql, terraform_redis, terraform_pgsql, terraform_mongo, terraform_webhook] # steps: # - uses: actions/checkout@v2 # - uses: actions/setup-java@v1 @@ -448,7 +492,17 @@ jobs: # working-directory: ./tf-test-automation/services/mongodb # run: | # terraform destroy -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -# +# - name: Terraform Init Webhook +# working-directory: ./tf-test-automation/services +# run: | +# cp webhook.tfstate ./webhook/terraform.tfstate +# cd ./webhook +# terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" +# - name: Terraform Destroy Webhook +# working-directory: ./tf-test-automation/services/webhook +# run: | +# terraform destroy -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" + # xmeter_stop: # runs-on: ubuntu-latest #