chore(autotest): debug build script

This commit is contained in:
mengzhenyu 2022-01-29 13:43:14 +08:00
parent 23abbc11ef
commit 332e91fd54
1 changed files with 434 additions and 436 deletions

View File

@ -97,9 +97,7 @@ jobs:
path: /tmp path: /tmp
- name: Download emqx package - name: Download emqx package
run: | run: |
rm -rf /tmp/emqx-5.*.elixir1.13.2.*.tar.gz rm -rf /tmp/emqx-5.*-elixir1.*.tar.gz
echo "--------------------------"
ls /tmp
mv /tmp/emqx-5.*.tar.gz /tmp/emqx.tar.gz mv /tmp/emqx-5.*.tar.gz /tmp/emqx.tar.gz
- name: Checkout tf-test-automation - name: Checkout tf-test-automation
uses: actions/checkout@v2 uses: actions/checkout@v2
@ -154,436 +152,436 @@ jobs:
echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }} echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }}
echo ${{ steps.emqx_private_ip.outputs.emqx_public_ip }} echo ${{ steps.emqx_private_ip.outputs.emqx_public_ip }}
# xmeter_start: xmeter_start:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# steps: steps:
# - name: Configure AWS Credentials - name: Configure AWS Credentials
# uses: aws-actions/configure-aws-credentials@v1 uses: aws-actions/configure-aws-credentials@v1
# with: with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }} aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}
# aws-region: ap-southeast-1 aws-region: ap-southeast-1
# - name: Start Xmeter Services - name: Start Xmeter Services
# run: | run: |
# aws ec2 start-instances --instance-ids i-0dd6d99916baaa1a8 aws ec2 start-instances --instance-ids i-0dd6d99916baaa1a8
# aws ec2 start-instances --instance-ids i-05222103df01eb2d7 aws ec2 start-instances --instance-ids i-05222103df01eb2d7
# sleep 40; sleep 40;
# aws ec2 start-instances --instance-ids i-0c5dccd394ed9be18 aws ec2 start-instances --instance-ids i-0c5dccd394ed9be18
# aws ec2 start-instances --instance-ids i-04c1c50b3e4952266 aws ec2 start-instances --instance-ids i-04c1c50b3e4952266
#
# terraform_mysql: terraform_mysql:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# outputs: outputs:
# mysql_ip: ${{ steps.mysql_ip.outputs.mysql_ip }} mysql_ip: ${{ steps.mysql_ip.outputs.mysql_ip }}
# mysql_url: ${{ steps.mysql_url.outputs.mysql_url }} mysql_url: ${{ steps.mysql_url.outputs.mysql_url }}
# steps: steps:
# - name: Checkout tf-test-automation - name: Checkout tf-test-automation
# uses: actions/checkout@v2 uses: actions/checkout@v2
# with: with:
# repository: emqx/tf-test-automation repository: emqx/tf-test-automation
# ref: emqx-broker ref: emqx-broker
# path: tf-test-automation path: tf-test-automation
# - name: Setup Terraform - name: Setup Terraform
# uses: hashicorp/setup-terraform@v1.3.2 uses: hashicorp/setup-terraform@v1.3.2
# with: with:
# terraform_wrapper: false terraform_wrapper: false
# - name: Terraform Init tf-test-automation - name: Terraform Init tf-test-automation
# working-directory: ./tf-test-automation/services/mysql working-directory: ./tf-test-automation/services/mysql
# id: init1 id: init1
# run: | 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 }}" 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 - name: Terraform Validate tf-test-automation
# working-directory: ./tf-test-automation/services/mysql working-directory: ./tf-test-automation/services/mysql
# id: validate1 id: validate1
# run: terraform validate -no-color run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/mysql working-directory: ./tf-test-automation/services/mysql
# id: mysql_url id: mysql_url
# run: | run: |
# terraform apply -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 }}" terraform apply -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 }}"
# echo "::set-output name=mysql_url::$(terraform output endpoint)" echo "::set-output name=mysql_url::$(terraform output endpoint)"
# - name: Rename and upload mysql tfstate - name: Rename and upload mysql tfstate
# working-directory: ./tf-test-automation/services/mysql working-directory: ./tf-test-automation/services/mysql
# run: | run: |
# mv ./terraform.tfstate ./mysql.tfstate mv ./terraform.tfstate ./mysql.tfstate
# - uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
# if: always() if: always()
# with: with:
# name: tfstate name: tfstate
# path: ./tf-test-automation/services/mysql/mysql.tfstate path: ./tf-test-automation/services/mysql/mysql.tfstate
# - name: Show mysql url - name: Show mysql url
# id: mysql_ip id: mysql_ip
# run: | run: |
# ip=`echo "${{ steps.mysql_url.outputs.mysql_url }}"|awk -F ':' '{print $1}'` ip=`echo "${{ steps.mysql_url.outputs.mysql_url }}"|awk -F ':' '{print $1}'`
# echo "::set-output name=mysql_ip::$ip" echo "::set-output name=mysql_ip::$ip"
# - name: Show mysql ip - name: Show mysql ip
# run: | run: |
# echo ${{ steps.mysql_url.outputs.mysql_url }} echo ${{ steps.mysql_url.outputs.mysql_url }}
# echo ${{ steps.mysql_ip.outputs.mysql_ip }} echo ${{ steps.mysql_ip.outputs.mysql_ip }}
#
# terraform_redis: terraform_redis:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# outputs: outputs:
# redis_private_ip: ${{ steps.redis_ip.outputs.redis_private_ips }} redis_private_ip: ${{ steps.redis_ip.outputs.redis_private_ips }}
# redis_public_ip: ${{ steps.redis_ip.outputs.redis_public_ips }} redis_public_ip: ${{ steps.redis_ip.outputs.redis_public_ips }}
# steps: steps:
# - name: Checkout tf-test-automation - name: Checkout tf-test-automation
# uses: actions/checkout@v2 uses: actions/checkout@v2
# with: with:
# repository: emqx/tf-test-automation repository: emqx/tf-test-automation
# ref: emqx-broker ref: emqx-broker
# path: tf-test-automation path: tf-test-automation
# - name: Setup Terraform - name: Setup Terraform
# uses: hashicorp/setup-terraform@v1.3.2 uses: hashicorp/setup-terraform@v1.3.2
# with: with:
# terraform_wrapper: false terraform_wrapper: false
# - name: Terraform Init tf-test-automation - name: Terraform Init tf-test-automation
# working-directory: ./tf-test-automation/services/redis working-directory: ./tf-test-automation/services/redis
# id: init id: init
# run: | 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 }}" 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 - name: Terraform Validate tf-test-automation
# working-directory: ./tf-test-automation/services/redis working-directory: ./tf-test-automation/services/redis
# id: validate id: validate
# run: terraform validate -no-color run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/redis working-directory: ./tf-test-automation/services/redis
# id: redis_ip id: redis_ip
# run: | 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 }}" 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=redis_private_ip::$(terraform output redis_private_ips)" echo "::set-output name=redis_private_ip::$(terraform output redis_private_ips)"
# echo "::set-output name=redis_public_ip::$(terraform output redis_public_ips)" echo "::set-output name=redis_public_ip::$(terraform output redis_public_ips)"
# - name: Rename and upload redis server tfstate - name: Rename and upload redis server tfstate
# working-directory: ./tf-test-automation/services/redis working-directory: ./tf-test-automation/services/redis
# run: | run: |
# mv ./terraform.tfstate ./redis.tfstate mv ./terraform.tfstate ./redis.tfstate
# - uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
# if: always() if: always()
# with: with:
# name: tfstate name: tfstate
# path: ./tf-test-automation/services/redis/redis.tfstate path: ./tf-test-automation/services/redis/redis.tfstate
# - name: Show redis ip - name: Show redis ip
# run: | run: |
# echo ${{ steps.redis_ip.outputs.redis_private_ip }} echo ${{ steps.redis_ip.outputs.redis_private_ip }}
# echo ${{ steps.redis_ip.outputs.redis_public_ip }} echo ${{ steps.redis_ip.outputs.redis_public_ip }}
#
# terraform_pgsql: terraform_pgsql:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# outputs: outputs:
# pgsql_url: ${{ steps.pgsql_url.outputs.pgsql_url }} pgsql_url: ${{ steps.pgsql_url.outputs.pgsql_url }}
# pgsql_ip: ${{ steps.pgsql_ip.outputs.pgsql_ip }} pgsql_ip: ${{ steps.pgsql_ip.outputs.pgsql_ip }}
# steps: steps:
# - name: Checkout tf-test-automation - name: Checkout tf-test-automation
# uses: actions/checkout@v2 uses: actions/checkout@v2
# with: with:
# repository: emqx/tf-test-automation repository: emqx/tf-test-automation
# ref: emqx-broker ref: emqx-broker
# path: tf-test-automation path: tf-test-automation
# - name: Setup Terraform - name: Setup Terraform
# uses: hashicorp/setup-terraform@v1.3.2 uses: hashicorp/setup-terraform@v1.3.2
# with: with:
# terraform_wrapper: false terraform_wrapper: false
# - name: Terraform Init tf-test-automation - name: Terraform Init tf-test-automation
# working-directory: ./tf-test-automation/services/pgsql working-directory: ./tf-test-automation/services/pgsql
# id: init id: init
# run: | 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 }}" 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 - name: Terraform Validate tf-test-automation
# working-directory: ./tf-test-automation/services/pgsql working-directory: ./tf-test-automation/services/pgsql
# id: validate id: validate
# run: terraform validate -no-color run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/pgsql working-directory: ./tf-test-automation/services/pgsql
# id: pgsql_url id: pgsql_url
# run: | run: |
# terraform apply -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 }}" terraform apply -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 }}"
# echo "::set-output name=pgsql_url::$(terraform output endpoint)" echo "::set-output name=pgsql_url::$(terraform output endpoint)"
# - name: Rename and upload pgsql server tfstate - name: Rename and upload pgsql server tfstate
# working-directory: ./tf-test-automation/services/pgsql working-directory: ./tf-test-automation/services/pgsql
# run: | run: |
# mv ./terraform.tfstate ./pgsql.tfstate mv ./terraform.tfstate ./pgsql.tfstate
# - uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
# if: always() if: always()
# with: with:
# name: tfstate name: tfstate
# path: ./tf-test-automation/services/pgsql/pgsql.tfstate path: ./tf-test-automation/services/pgsql/pgsql.tfstate
# - name: Show pgsql url - name: Show pgsql url
# id: pgsql_ip id: pgsql_ip
# run: | run: |
# ip=`echo "${{ steps.pgsql_url.outputs.pgsql_url }}"|awk -F ':' '{print $1}'` ip=`echo "${{ steps.pgsql_url.outputs.pgsql_url }}"|awk -F ':' '{print $1}'`
# echo "::set-output name=pgsql_ip::$ip" echo "::set-output name=pgsql_ip::$ip"
# - name: Show pgsql ip - name: Show pgsql ip
# run: | run: |
# echo ${{ steps.pgsql_url.outputs.pgsql_url }} echo ${{ steps.pgsql_url.outputs.pgsql_url }}
# echo ${{ steps.pgsql_ip.outputs.pgsql_ip }} echo ${{ steps.pgsql_ip.outputs.pgsql_ip }}
#
# terraform_mongo: terraform_mongo:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# outputs: outputs:
# mongo_private_ip: ${{ steps.mongo_ip.outputs.mongo_private_ip }} mongo_private_ip: ${{ steps.mongo_ip.outputs.mongo_private_ip }}
# mongo_public_ip: ${{ steps.mongo_ip.outputs.mongo_public_ip }} mongo_public_ip: ${{ steps.mongo_ip.outputs.mongo_public_ip }}
# steps: steps:
# - name: Checkout tf-test-automation - name: Checkout tf-test-automation
# uses: actions/checkout@v2 uses: actions/checkout@v2
# with: with:
# repository: emqx/tf-test-automation repository: emqx/tf-test-automation
# ref: emqx-broker ref: emqx-broker
# path: tf-test-automation path: tf-test-automation
# - name: Setup Terraform - name: Setup Terraform
# uses: hashicorp/setup-terraform@v1.3.2 uses: hashicorp/setup-terraform@v1.3.2
# with: with:
# terraform_wrapper: false terraform_wrapper: false
# - name: Terraform Init tf-test-automation - name: Terraform Init tf-test-automation
# working-directory: ./tf-test-automation/services/mongodb working-directory: ./tf-test-automation/services/mongodb
# id: init id: init
# run: | 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 }}" 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 - name: Terraform Validate tf-test-automation
# working-directory: ./tf-test-automation/services/mongodb working-directory: ./tf-test-automation/services/mongodb
# id: validate id: validate
# run: terraform validate -no-color run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/mongodb working-directory: ./tf-test-automation/services/mongodb
# id: mongo_ip id: mongo_ip
# run: | run: |
# terraform apply -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 }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" terraform apply -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 }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}"
# echo "::set-output name=mongo_private_ip::$(terraform output mongo_private_ips)" echo "::set-output name=mongo_private_ip::$(terraform output mongo_private_ips)"
# echo "::set-output name=mongo_public_ip::$(terraform output mongo_public_ips)" echo "::set-output name=mongo_public_ip::$(terraform output mongo_public_ips)"
# - name: Rename and upload mongo server tfstate - name: Rename and upload mongo server tfstate
# working-directory: ./tf-test-automation/services/mongodb working-directory: ./tf-test-automation/services/mongodb
# run: | run: |
# mv ./terraform.tfstate ./mongo.tfstate mv ./terraform.tfstate ./mongo.tfstate
# - uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
# if: always() if: always()
# with: with:
# name: tfstate name: tfstate
# path: ./tf-test-automation/services/mongodb/mongo.tfstate path: ./tf-test-automation/services/mongodb/mongo.tfstate
# - name: Show mongo ip - name: Show mongo ip
# run: | run: |
# echo ${{ steps.mongo_ip.outputs.mongo_private_ip }} echo ${{ steps.mongo_ip.outputs.mongo_private_ip }}
# echo ${{ steps.mongo_ip.outputs.mongo_public_ip }} echo ${{ steps.mongo_ip.outputs.mongo_public_ip }}
#
# terraform_webhook: terraform_webhook:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# outputs: outputs:
# webhook_ip: ${{ steps.webhook_ip.outputs.webhook_ip }} webhook_ip: ${{ steps.webhook_ip.outputs.webhook_ip }}
# steps: steps:
# - name: Checkout tf-test-automation - name: Checkout tf-test-automation
# uses: actions/checkout@v2 uses: actions/checkout@v2
# with: with:
# repository: emqx/tf-test-automation repository: emqx/tf-test-automation
# ref: emqx-broker ref: emqx-broker
# path: tf-test-automation path: tf-test-automation
# - name: Setup Terraform - name: Setup Terraform
# uses: hashicorp/setup-terraform@v1.3.2 uses: hashicorp/setup-terraform@v1.3.2
# with: with:
# terraform_wrapper: false terraform_wrapper: false
# - name: Terraform Init tf-test-automation - name: Terraform Init tf-test-automation
# working-directory: ./tf-test-automation/services/webhook working-directory: ./tf-test-automation/services/webhook
# id: init id: init
# run: | 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 }}" 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 - name: Terraform Validate tf-test-automation
# working-directory: ./tf-test-automation/services/webhook working-directory: ./tf-test-automation/services/webhook
# id: validate id: validate
# run: terraform validate -no-color run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/webhook working-directory: ./tf-test-automation/services/webhook
# id: webhook_ip id: webhook_ip
# run: | 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 }}" 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)" echo "::set-output name=webhook_ip::$(terraform output webhook_private_ips)"
# - name: Rename and upload webhook server tfstate - name: Rename and upload webhook server tfstate
# working-directory: ./tf-test-automation/services/webhook working-directory: ./tf-test-automation/services/webhook
# run: | run: |
# mv ./terraform.tfstate ./webhook.tfstate mv ./terraform.tfstate ./webhook.tfstate
# - uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
# if: always() if: always()
# with: with:
# name: tfstate name: tfstate
# path: ./tf-test-automation/services/webhook/webhook.tfstate path: ./tf-test-automation/services/webhook/webhook.tfstate
# - name: Show webhook ip - name: Show webhook ip
# run: | run: |
# echo ${{ steps.webhook_ip.outputs.webhook_ip }} echo ${{ steps.webhook_ip.outputs.webhook_ip }}
#
# master_control: master_control:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# needs: [xmeter_start, terraform_emqx, terraform_mysql, terraform_redis, terraform_pgsql, terraform_mongo, terraform_webhook] needs: [xmeter_start, terraform_emqx, terraform_mysql, terraform_redis, terraform_pgsql, terraform_mongo, terraform_webhook]
# steps: steps:
# - uses: actions/checkout@v2 - uses: actions/checkout@v2
# - uses: actions/setup-java@v1 - uses: actions/setup-java@v1
# with: with:
# java-version: '8.0.282' # The JDK version to make available on the path. java-version: '8.0.282' # The JDK version to make available on the path.
# java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk
# architecture: x64 # (x64 or x86) - defaults to x64 architecture: x64 # (x64 or x86) - defaults to x64
# - name: Checkout emqx-fvt - name: Checkout emqx-fvt
# uses: actions/checkout@v2 uses: actions/checkout@v2
# with: with:
# repository: emqx/emqx-fvt repository: emqx/emqx-fvt
# ref: broker_performance_test ref: broker_performance_test
# path: emqx-fvt path: emqx-fvt
# - name: install jmeter - name: install jmeter
# timeout-minutes: 10 timeout-minutes: 10
# env: env:
# JMETER_VERSION: 5.3 JMETER_VERSION: 5.3
# run: | run: |
# wget --no-verbose --no-check-certificate -O /tmp/apache-jmeter.tgz https://downloads.apache.org/jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz wget --no-verbose --no-check-certificate -O /tmp/apache-jmeter.tgz https://downloads.apache.org/jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz
# cd /tmp && tar -xvf apache-jmeter.tgz cd /tmp && tar -xvf apache-jmeter.tgz
# echo "jmeter.save.saveservice.output_format=xml" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties echo "jmeter.save.saveservice.output_format=xml" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties
# echo "jmeter.save.saveservice.response_data.on_error=true" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties echo "jmeter.save.saveservice.response_data.on_error=true" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties
# wget --no-verbose -O /tmp/apache-jmeter-$JMETER_VERSION/lib/ext/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar https://raw.githubusercontent.com/xmeter-net/mqtt-jmeter/master/Download/v2.0.2/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar wget --no-verbose -O /tmp/apache-jmeter-$JMETER_VERSION/lib/ext/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar https://raw.githubusercontent.com/xmeter-net/mqtt-jmeter/master/Download/v2.0.2/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar
# ln -s /tmp/apache-jmeter-$JMETER_VERSION /opt/jmeter ln -s /tmp/apache-jmeter-$JMETER_VERSION /opt/jmeter
# - name: install jmeter plugin - name: install jmeter plugin
# run: | run: |
# wget --no-verbose -O "/opt/jmeter/lib/mysql-connector-java-8.0.16.jar" https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar wget --no-verbose -O "/opt/jmeter/lib/mysql-connector-java-8.0.16.jar" https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
# wget --no-verbose -O "/opt/jmeter/lib/jedis-3.6.0.jar" https://repo1.maven.org/maven2/redis/clients/jedis/3.6.0/jedis-3.6.0.jar wget --no-verbose -O "/opt/jmeter/lib/jedis-3.6.0.jar" https://repo1.maven.org/maven2/redis/clients/jedis/3.6.0/jedis-3.6.0.jar
# wget --no-verbose -O "/opt/jmeter/lib/postgresql-42.2.18.jar" https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.18/postgresql-42.2.18.jar wget --no-verbose -O "/opt/jmeter/lib/postgresql-42.2.18.jar" https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.18/postgresql-42.2.18.jar
# wget --no-verbose -O "/opt/jmeter/lib/java-jwt-3.16.0.jar" https://repo1.maven.org/maven2/com/auth0/java-jwt/3.16.0/java-jwt-3.16.0.jar wget --no-verbose -O "/opt/jmeter/lib/java-jwt-3.16.0.jar" https://repo1.maven.org/maven2/com/auth0/java-jwt/3.16.0/java-jwt-3.16.0.jar
# wget --no-verbose -O "/opt/jmeter/lib/gmongo-1.5.jar" https://repo1.maven.org/maven2/com/gmongo/gmongo/1.5/gmongo-1.5.jar wget --no-verbose -O "/opt/jmeter/lib/gmongo-1.5.jar" https://repo1.maven.org/maven2/com/gmongo/gmongo/1.5/gmongo-1.5.jar
# wget --no-verbose -O "/opt/jmeter/lib/mongo-java-driver-3.12.8.jar" https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.12.8/mongo-java-driver-3.12.8.jar wget --no-verbose -O "/opt/jmeter/lib/mongo-java-driver-3.12.8.jar" https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.12.8/mongo-java-driver-3.12.8.jar
# rm -rf /opt/jmeter/lib/mongo-java-driver-2.11.3.jar rm -rf /opt/jmeter/lib/mongo-java-driver-2.11.3.jar
# - name: run jmeter - name: run jmeter
# run: | run: |
# /opt/jmeter/bin/jmeter.sh \ /opt/jmeter/bin/jmeter.sh \
# -Jjmeter.save.saveservice.output_format=xml -n \ -Jjmeter.save.saveservice.output_format=xml -n \
# -t ./emqx-fvt/broker-performance-test-suite/broker_attestation_test.jmx \ -t ./emqx-fvt/broker-performance-test-suite/broker_attestation_test.jmx \
# -Demqx_ip=${{ needs.terraform_emqx.outputs.emqx_public_ip }} \ -Demqx_ip=${{ needs.terraform_emqx.outputs.emqx_public_ip }} \
# -Demqx_private_ip1=${{ needs.terraform_emqx.outputs.emqx_node_ip1 }} \ -Demqx_private_ip1=${{ needs.terraform_emqx.outputs.emqx_node_ip1 }} \
# -Demqx_private_ip2=${{ needs.terraform_emqx.outputs.emqx_node_ip2 }} \ -Demqx_private_ip2=${{ needs.terraform_emqx.outputs.emqx_node_ip2 }} \
# -Demqx_private_ip3=${{ needs.terraform_emqx.outputs.emqx_node_ip3 }} \ -Demqx_private_ip3=${{ needs.terraform_emqx.outputs.emqx_node_ip3 }} \
# -Dmysql_ip=${{ needs.terraform_mysql.outputs.mysql_ip }} \ -Dmysql_ip=${{ needs.terraform_mysql.outputs.mysql_ip }} \
# -Dpgsql_ip=${{ needs.terraform_pgsql.outputs.pgsql_ip }} \ -Dpgsql_ip=${{ needs.terraform_pgsql.outputs.pgsql_ip }} \
# -Dredis_private_ip=${{ needs.terraform_redis.outputs.redis_private_ip }} \ -Dredis_private_ip=${{ needs.terraform_redis.outputs.redis_private_ip }} \
# -Dredis_public_ip=${{ needs.terraform_redis.outputs.redis_public_ip }} \ -Dredis_public_ip=${{ needs.terraform_redis.outputs.redis_public_ip }} \
# -Dmongo_private_ip=${{ needs.terraform_mongo.outputs.mongo_private_ip }} \ -Dmongo_private_ip=${{ needs.terraform_mongo.outputs.mongo_private_ip }} \
# -Dmongo_public_ip=${{ needs.terraform_mongo.outputs.mongo_public_ip }} \ -Dmongo_public_ip=${{ needs.terraform_mongo.outputs.mongo_public_ip }} \
# -Dhttp_ip=${{ needs.terraform_webhook.outputs.webhook_ip }} \ -Dhttp_ip=${{ needs.terraform_webhook.outputs.webhook_ip }} \
# -Dxmeter_ip=${{ secrets.XMETER_IP }} \ -Dxmeter_ip=${{ secrets.XMETER_IP }} \
# -Dplugins_path="/opt/jmeter/lib/ext" \ -Dplugins_path="/opt/jmeter/lib/ext" \
# -Dxmeter_user=${{ secrets.XMETER_USER }} \ -Dxmeter_user=${{ secrets.XMETER_USER }} \
# -Dxmeter_pwd=${{ secrets.XMETER_PWD }} \ -Dxmeter_pwd=${{ secrets.XMETER_PWD }} \
# -Dscripts_path="./emqx-fvt/broker-performance-test-suite" \ -Dscripts_path="./emqx-fvt/broker-performance-test-suite" \
# -Dreport_file="jmeter_logs/report.txt" \ -Dreport_file="jmeter_logs/report.txt" \
# -l jmeter_logs/xmeter_process.jtl \ -l jmeter_logs/xmeter_process.jtl \
# -j jmeter_logs/xmeter_process.log -j jmeter_logs/xmeter_process.log
# - name: check logs - name: check logs
# run: | run: |
# if cat jmeter_logs/xmeter_process.jtl | grep -e '<failure>true</failure>' > /dev/null 2>&1; then if cat jmeter_logs/xmeter_process.jtl | grep -e '<failure>true</failure>' > /dev/null 2>&1; then
# echo "check logs filed" echo "check logs filed"
# fi fi
# - name: check report - name: check report
# run: | run: |
# if cat jmeter_logs/report.txt | grep -e 'err_report_id' > /dev/null 2>&1; then if cat jmeter_logs/report.txt | grep -e 'err_report_id' > /dev/null 2>&1; then
# echo "check report filed" echo "check report filed"
# exit 1 exit 1
# fi fi
# - uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
# if: always() if: always()
# with: with:
# name: jmeter_logs_report name: jmeter_logs_report
# path: ./jmeter_logs path: ./jmeter_logs
#
# terraform_destroy: terraform_destroy:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# needs: [master_control] needs: [master_control]
# steps: steps:
# - name: Checkout tf-test-automation - name: Checkout tf-test-automation
# uses: actions/checkout@v2 uses: actions/checkout@v2
# with: with:
# repository: emqx/tf-test-automation repository: emqx/tf-test-automation
# ref: cluster ref: cluster
# path: tf-test-automation path: tf-test-automation
# - name: Setup Terraform - name: Setup Terraform
# uses: hashicorp/setup-terraform@v1.3.2 uses: hashicorp/setup-terraform@v1.3.2
# with: with:
# terraform_wrapper: false terraform_wrapper: false
# - uses: actions/download-artifact@v2 - uses: actions/download-artifact@v2
# with: with:
# name: tfstate name: tfstate
# path: ./tf-test-automation/services path: ./tf-test-automation/services
# - name: Terraform Init mysql - name: Terraform Init mysql
# working-directory: ./tf-test-automation/services working-directory: ./tf-test-automation/services
# run: | run: |
# cp mysql.tfstate ./mysql/terraform.tfstate cp mysql.tfstate ./mysql/terraform.tfstate
# cd ./mysql cd ./mysql
# 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 }}" 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 mysql - name: Terraform Destroy mysql
# working-directory: ./tf-test-automation/services/mysql working-directory: ./tf-test-automation/services/mysql
# run: | 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 }}" 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 emqx - name: Terraform Init emqx
# working-directory: ./tf-test-automation/services working-directory: ./tf-test-automation/services
# run: | run: |
# cp emqx.tfstate ./emqx/terraform.tfstate cp emqx.tfstate ./emqx/terraform.tfstate
# cd ./emqx cd ./emqx
# 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 }}" 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 emqx - name: Terraform Destroy emqx
# working-directory: ./tf-test-automation/services/emqx working-directory: ./tf-test-automation/services/emqx
# run: | run: |
# terraform destroy -auto-approve -var="region=ap-southeast-1" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" terraform destroy -auto-approve -var="region=ap-southeast-1" -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 redis - name: Terraform Init redis
# working-directory: ./tf-test-automation/services working-directory: ./tf-test-automation/services
# run: | run: |
# cp redis.tfstate ./redis/terraform.tfstate cp redis.tfstate ./redis/terraform.tfstate
# cd ./redis cd ./redis
# 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 }}" 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 redis - name: Terraform Destroy redis
# working-directory: ./tf-test-automation/services/redis working-directory: ./tf-test-automation/services/redis
# run: | 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 }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" 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 }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}"
# - name: Terraform Init pgsql - name: Terraform Init pgsql
# working-directory: ./tf-test-automation/services working-directory: ./tf-test-automation/services
# run: | run: |
# cp pgsql.tfstate ./pgsql/terraform.tfstate cp pgsql.tfstate ./pgsql/terraform.tfstate
# cd ./pgsql cd ./pgsql
# 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 }}" 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 pgsql - name: Terraform Destroy pgsql
# working-directory: ./tf-test-automation/services/pgsql working-directory: ./tf-test-automation/services/pgsql
# run: | 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 }}" 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 mongo - name: Terraform Init mongo
# working-directory: ./tf-test-automation/services working-directory: ./tf-test-automation/services
# run: | run: |
# cp mongo.tfstate ./mongodb/terraform.tfstate cp mongo.tfstate ./mongodb/terraform.tfstate
# cd ./mongodb cd ./mongodb
# 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 }}" 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 mongo - name: Terraform Destroy mongo
# working-directory: ./tf-test-automation/services/mongodb working-directory: ./tf-test-automation/services/mongodb
# run: | 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 }}" 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 - name: Terraform Init Webhook
# working-directory: ./tf-test-automation/services working-directory: ./tf-test-automation/services
# run: | run: |
# cp webhook.tfstate ./webhook/terraform.tfstate cp webhook.tfstate ./webhook/terraform.tfstate
# cd ./webhook 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 }}" 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 - name: Terraform Destroy Webhook
# working-directory: ./tf-test-automation/services/webhook working-directory: ./tf-test-automation/services/webhook
# run: | 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 }}" 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: xmeter_stop:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# needs: [terraform_destroy] needs: [terraform_destroy]
# steps: steps:
# - name: Configure AWS Credentials - name: Configure AWS Credentials
# uses: aws-actions/configure-aws-credentials@v1 uses: aws-actions/configure-aws-credentials@v1
# with: with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }} aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}
# aws-region: ap-southeast-1 aws-region: ap-southeast-1
# - name: Start Xmeter Services - name: Start Xmeter Services
# run: | run: |
# aws ec2 stop-instances --instance-ids i-0dd6d99916baaa1a8 aws ec2 stop-instances --instance-ids i-0dd6d99916baaa1a8
# aws ec2 stop-instances --instance-ids i-05222103df01eb2d7 aws ec2 stop-instances --instance-ids i-05222103df01eb2d7
# aws ec2 stop-instances --instance-ids i-0c5dccd394ed9be18 aws ec2 stop-instances --instance-ids i-0c5dccd394ed9be18
# aws ec2 stop-instances --instance-ids i-04c1c50b3e4952266 aws ec2 stop-instances --instance-ids i-04c1c50b3e4952266