chore(autotest): start test resources

This commit is contained in:
mengzhenyu 2022-02-11 09:58:54 +08:00
parent 50510d4e01
commit 5c39e0eca5
1 changed files with 330 additions and 330 deletions

View File

@ -9,104 +9,104 @@ on:
# workflow_dispatch: # workflow_dispatch:
jobs: jobs:
build: # build:
runs-on: ubuntu-20.04 # runs-on: ubuntu-20.04
#
strategy: # strategy:
fail-fast: false # fail-fast: false
matrix: # matrix:
profile: # profile:
- emqx # - emqx
otp: # otp:
- 24.1.5-3 # - 24.1.5-3
os: # os:
- ubuntu20.04 # - ubuntu20.04
#
container: "ghcr.io/emqx/emqx-builder/5.0-3:${{ matrix.otp }}-${{ matrix.os }}" # container: "ghcr.io/emqx/emqx-builder/5.0-3:${{ matrix.otp }}-${{ matrix.os }}"
#
steps: # steps:
- uses: actions/checkout@v1 # - uses: actions/checkout@v1
- name: build zip packages # - name: build zip packages
run: make ${{ matrix.profile }}-zip # run: make ${{ matrix.profile }}-zip
- name: packages test # - name: packages test
run: | # run: |
export CODE_PATH=$GITHUB_WORKSPACE # export CODE_PATH=$GITHUB_WORKSPACE
EMQX_NAME=${{ matrix.profile }} .ci/build_packages/tests.sh # EMQX_NAME=${{ matrix.profile }} .ci/build_packages/tests.sh
- uses: actions/upload-artifact@v2 # - uses: actions/upload-artifact@v2
with: # with:
name: ${{ matrix.os}} # name: ${{ matrix.os}}
path: _packages/**/*.zip # path: _packages/**/*.zip
#
terraform_emqx: # terraform_emqx:
runs-on: ubuntu-latest # runs-on: ubuntu-latest
#
needs: [build] # needs: [build]
outputs: # outputs:
emqx_public_ip: ${{ steps.emqx_private_ip.outputs.emqx_public_ip }} # emqx_public_ip: ${{ steps.emqx_private_ip.outputs.emqx_public_ip }}
emqx_node_ip1: ${{ steps.emqx_private_ip.outputs.emqx_node_ip1 }} # emqx_node_ip1: ${{ steps.emqx_private_ip.outputs.emqx_node_ip1 }}
emqx_node_ip2: ${{ steps.emqx_private_ip.outputs.emqx_node_ip2 }} # emqx_node_ip2: ${{ steps.emqx_private_ip.outputs.emqx_node_ip2 }}
emqx_node_ip3: ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }} # emqx_node_ip3: ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }}
steps: # steps:
- uses: actions/checkout@v2 # - uses: actions/checkout@v2
- uses: actions/download-artifact@v2 # - uses: actions/download-artifact@v2
with: # with:
name: ubuntu20.04 # name: ubuntu20.04
path: /tmp # path: /tmp
- name: Download emqx package # - name: Download emqx package
run: | # run: |
sudo cp /tmp/emqx/*.zip /tmp/emqx.zip # sudo cp /tmp/emqx/*.zip /tmp/emqx.zip
- 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/emqx # working-directory: ./tf-test-automation/services/emqx
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/emqx # working-directory: ./tf-test-automation/services/emqx
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/emqx # working-directory: ./tf-test-automation/services/emqx
id: server_ip # id: server_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 }}" -var="emqx_package=/tmp/emqx.zip" # 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_private_ips::$(terraform output emqx_private_ips)"
echo "::set-output name=emqx_public_ips::$(terraform output emqx_public_ips)" # echo "::set-output name=emqx_public_ips::$(terraform output emqx_public_ips)"
- name: Rename and upload emqx tfstate # - name: Rename and upload emqx tfstate
working-directory: ./tf-test-automation/services/emqx # working-directory: ./tf-test-automation/services/emqx
run: | # run: |
mv ./terraform.tfstate ./emqx.tfstate # mv ./terraform.tfstate ./emqx.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/emqx/emqx.tfstate # path: ./tf-test-automation/services/emqx/emqx.tfstate
- name: Show emqx_private_ips # - name: Show emqx_private_ips
id: emqx_private_ip # id: emqx_private_ip
run: | # run: |
ip1=`echo "${{ steps.server_ip.outputs.emqx_private_ips }}"|awk -F ',' '{print $1}'` # 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}'` # 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}'` # 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}'` # 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_ip1::$ip1"
echo "::set-output name=emqx_node_ip2::$ip2" # echo "::set-output name=emqx_node_ip2::$ip2"
echo "::set-output name=emqx_node_ip3::$ip3" # echo "::set-output name=emqx_node_ip3::$ip3"
echo "::set-output name=emqx_public_ip::$emqx_public_ip" # echo "::set-output name=emqx_public_ip::$emqx_public_ip"
- name: Show emqx node ip # - name: Show emqx node ip
run: | # run: |
echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip1 }} # 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_ip2 }}
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
@ -126,240 +126,240 @@ jobs:
# 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:
# mysql_ip: ${{ steps.mysql_ip.outputs.mysql_ip }}
# mysql_url: ${{ steps.mysql_url.outputs.mysql_url }}
# 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/mysql
# 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/mysql
# id: validate1
# run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/mysql
# id: mysql_url
# 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 }}"
# echo "::set-output name=mysql_url::$(terraform output endpoint)"
# - name: Rename and upload mysql tfstate
# working-directory: ./tf-test-automation/services/mysql
# run: |
# mv ./terraform.tfstate ./mysql.tfstate
# - uses: actions/upload-artifact@v2
# if: always()
# with:
# name: tfstate
# path: ./tf-test-automation/services/mysql/mysql.tfstate
# - name: Show mysql url
# id: mysql_ip
# run: |
# ip=`echo "${{ steps.mysql_url.outputs.mysql_url }}"|awk -F ':' '{print $1}'`
# echo "::set-output name=mysql_ip::$ip"
# - name: Show mysql ip
# run: |
# echo ${{ steps.mysql_url.outputs.mysql_url }}
# echo ${{ steps.mysql_ip.outputs.mysql_ip }}
##
# terraform_redis:
# runs-on: ubuntu-latest
#
# outputs:
# redis_ip: ${{ steps.redis_ip.outputs.redis_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/redis
# 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/redis
# id: validate
# run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/redis
# id: redis_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=redis_ip::$(terraform output redis_private_ips)"
# - name: Rename and upload redis server tfstate
# working-directory: ./tf-test-automation/services/redis
# run: |
# mv ./terraform.tfstate ./redis.tfstate
# - uses: actions/upload-artifact@v2
# if: always()
# with:
# name: tfstate
# path: ./tf-test-automation/services/redis/redis.tfstate
# - name: Show redis ip
# run: |
# echo ${{ steps.redis_ip.outputs.redis_ip }}
#
# terraform_pgsql:
# runs-on: ubuntu-latest
#
# outputs:
# pgsql_url: ${{ steps.pgsql_url.outputs.pgsql_url }}
# pgsql_ip: ${{ steps.pgsql_ip.outputs.pgsql_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/pgsql
# 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/pgsql
# id: validate
# run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/pgsql
# id: pgsql_url
# 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 }}"
# echo "::set-output name=pgsql_url::$(terraform output endpoint)"
# - name: Rename and upload pgsql server tfstate
# working-directory: ./tf-test-automation/services/pgsql
# run: |
# mv ./terraform.tfstate ./pgsql.tfstate
# - uses: actions/upload-artifact@v2
# if: always()
# with:
# name: tfstate
# path: ./tf-test-automation/services/pgsql/pgsql.tfstate
# - name: Show pgsql url
# id: pgsql_ip
# run: |
# ip=`echo "${{ steps.pgsql_url.outputs.pgsql_url }}"|awk -F ':' '{print $1}'`
# echo "::set-output name=pgsql_ip::$ip"
# - name: Show pgsql ip
# run: |
# echo ${{ steps.pgsql_url.outputs.pgsql_url }}
# echo ${{ steps.pgsql_ip.outputs.pgsql_ip }}
#
# terraform_mongo:
# runs-on: ubuntu-latest
#
# outputs:
# mongo_ip: ${{ steps.mongo_ip.outputs.mongo_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/mongodb
# 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/mongodb
# id: validate
# run: terraform validate -no-color
# - name: Terraform Apply tf-test-automation
# working-directory: ./tf-test-automation/services/mongodb
# id: mongo_ip
# 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 }}"
# echo "::set-output name=mongo_ip::$(terraform output mongo_private_ips)"
# - name: Rename and upload mongo server tfstate
# working-directory: ./tf-test-automation/services/mongodb
# run: |
# mv ./terraform.tfstate ./mongo.tfstate
# - uses: actions/upload-artifact@v2
# if: always()
# with:
# name: tfstate
# path: ./tf-test-automation/services/mongodb/mongo.tfstate
# - name: Show mongo ip
# run: |
# echo ${{ steps.mongo_ip.outputs.mongo_ip }}
# terraform_webhook: outputs:
# runs-on: ubuntu-latest mysql_ip: ${{ steps.mysql_ip.outputs.mysql_ip }}
# mysql_url: ${{ steps.mysql_url.outputs.mysql_url }}
# outputs: steps:
# webhook_ip: ${{ steps.webhook_ip.outputs.webhook_ip }} - name: Checkout tf-test-automation
# steps: uses: actions/checkout@v2
# - name: Checkout tf-test-automation with:
# uses: actions/checkout@v2 repository: emqx/tf-test-automation
# with: ref: emqx-broker
# repository: emqx/tf-test-automation path: tf-test-automation
# ref: emqx-broker - name: Setup Terraform
# path: tf-test-automation uses: hashicorp/setup-terraform@v1.3.2
# - name: Setup Terraform with:
# uses: hashicorp/setup-terraform@v1.3.2 terraform_wrapper: false
# with: - name: Terraform Init tf-test-automation
# terraform_wrapper: false working-directory: ./tf-test-automation/services/mysql
# - name: Terraform Init tf-test-automation id: init1
# working-directory: ./tf-test-automation/services/webhook run: |
# id: init 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 }}"
# run: | - name: Terraform Validate tf-test-automation
# 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 }}" working-directory: ./tf-test-automation/services/mysql
# - name: Terraform Validate tf-test-automation id: validate1
# working-directory: ./tf-test-automation/services/webhook run: terraform validate -no-color
# id: validate - name: Terraform Apply tf-test-automation
# run: terraform validate -no-color working-directory: ./tf-test-automation/services/mysql
# - name: Terraform Apply tf-test-automation id: mysql_url
# working-directory: ./tf-test-automation/services/webhook run: |
# id: webhook_ip 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 }}"
# run: | echo "::set-output name=mysql_url::$(terraform output endpoint)"
# 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 }}" - name: Rename and upload mysql tfstate
# echo "::set-output name=webhook_ip::$(terraform output webhook_private_ips)" working-directory: ./tf-test-automation/services/mysql
# - name: Rename and upload webhook server tfstate run: |
# working-directory: ./tf-test-automation/services/webhook mv ./terraform.tfstate ./mysql.tfstate
# run: | - uses: actions/upload-artifact@v2
# mv ./terraform.tfstate ./webhook.tfstate if: always()
# - uses: actions/upload-artifact@v2 with:
# if: always() name: tfstate
# with: path: ./tf-test-automation/services/mysql/mysql.tfstate
# name: tfstate - name: Show mysql url
# path: ./tf-test-automation/services/webhook/webhook.tfstate id: mysql_ip
# - name: Show webhook ip run: |
# run: | ip=`echo "${{ steps.mysql_url.outputs.mysql_url }}"|awk -F ':' '{print $1}'`
# echo ${{ steps.webhook_ip.outputs.webhook_ip }} echo "::set-output name=mysql_ip::$ip"
- name: Show mysql ip
run: |
echo ${{ steps.mysql_url.outputs.mysql_url }}
echo ${{ steps.mysql_ip.outputs.mysql_ip }}
# #
terraform_redis:
runs-on: ubuntu-latest
outputs:
redis_ip: ${{ steps.redis_ip.outputs.redis_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/redis
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/redis
id: validate
run: terraform validate -no-color
- name: Terraform Apply tf-test-automation
working-directory: ./tf-test-automation/services/redis
id: redis_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=redis_ip::$(terraform output redis_private_ips)"
- name: Rename and upload redis server tfstate
working-directory: ./tf-test-automation/services/redis
run: |
mv ./terraform.tfstate ./redis.tfstate
- uses: actions/upload-artifact@v2
if: always()
with:
name: tfstate
path: ./tf-test-automation/services/redis/redis.tfstate
- name: Show redis ip
run: |
echo ${{ steps.redis_ip.outputs.redis_ip }}
terraform_pgsql:
runs-on: ubuntu-latest
outputs:
pgsql_url: ${{ steps.pgsql_url.outputs.pgsql_url }}
pgsql_ip: ${{ steps.pgsql_ip.outputs.pgsql_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/pgsql
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/pgsql
id: validate
run: terraform validate -no-color
- name: Terraform Apply tf-test-automation
working-directory: ./tf-test-automation/services/pgsql
id: pgsql_url
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 }}"
echo "::set-output name=pgsql_url::$(terraform output endpoint)"
- name: Rename and upload pgsql server tfstate
working-directory: ./tf-test-automation/services/pgsql
run: |
mv ./terraform.tfstate ./pgsql.tfstate
- uses: actions/upload-artifact@v2
if: always()
with:
name: tfstate
path: ./tf-test-automation/services/pgsql/pgsql.tfstate
- name: Show pgsql url
id: pgsql_ip
run: |
ip=`echo "${{ steps.pgsql_url.outputs.pgsql_url }}"|awk -F ':' '{print $1}'`
echo "::set-output name=pgsql_ip::$ip"
- name: Show pgsql ip
run: |
echo ${{ steps.pgsql_url.outputs.pgsql_url }}
echo ${{ steps.pgsql_ip.outputs.pgsql_ip }}
terraform_mongo:
runs-on: ubuntu-latest
outputs:
mongo_ip: ${{ steps.mongo_ip.outputs.mongo_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/mongodb
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/mongodb
id: validate
run: terraform validate -no-color
- name: Terraform Apply tf-test-automation
working-directory: ./tf-test-automation/services/mongodb
id: mongo_ip
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 }}"
echo "::set-output name=mongo_ip::$(terraform output mongo_private_ips)"
- name: Rename and upload mongo server tfstate
working-directory: ./tf-test-automation/services/mongodb
run: |
mv ./terraform.tfstate ./mongo.tfstate
- uses: actions/upload-artifact@v2
if: always()
with:
name: tfstate
path: ./tf-test-automation/services/mongodb/mongo.tfstate
- 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: # master_control:
# runs-on: ubuntu-latest # runs-on: ubuntu-latest
# #