influxdb/scripts/ci/perf_test.sh

60 lines
2.3 KiB
Bash
Executable File

set -ex -o pipefail
source vars.sh
# get latest ubuntu 21.10 ami for us-west-2
ami_id=$(aws --region us-west-2 ssm get-parameters --names /aws/service/canonical/ubuntu/server/22.04/stable/current/amd64/hvm/ebs-gp2/ami-id --query 'Parameters[0].[Value]' --output text)
# launch ec2 instance
datestring=$(date +%Y%m%d)
instance_info=$(aws --region us-west-2 ec2 run-instances \
--image-id $ami_id \
--instance-type $DATA_I_TYPE \
--block-device-mappings DeviceName=/dev/sda1,Ebs={VolumeSize=200} \
--key-name circleci-oss-test \
--security-group-ids sg-03004366a38eccc97 \
--subnet-id subnet-0c079d746f27ede5e \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=oss-perftest-$datestring-${CIRCLE_BRANCH}-${CIRCLE_SHA1}}]")
# get instance info
ec2_instance_id=$(echo $instance_info | jq -r .Instances[].InstanceId)
echo "export EC2_INSTANCE_ID=$ec2_instance_id" >> vars.sh
ec2_ip=""
while [ -z $ec2_ip ]; do
sleep 5
ec2_ip=$(aws \
--region us-west-2 \
ec2 describe-instances \
--instance-ids $ec2_instance_id \
--query "Reservations[].Instances[].PublicIpAddress" \
--output text)
done
echo "export EC2_IP=$ec2_ip" >> vars.sh
# push binary and script to instance
debname=$(find /tmp/workspace/artifacts/influxdb2*amd64.deb)
base_debname=$(basename $debname)
source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# On the first try, add the host key to the list of known hosts
until ssh -o StrictHostKeyChecking=no ubuntu@$ec2_ip echo Connected ; do
echo Tried to ssh to ec2 instance, will retry
sleep 5
done
scp $debname ubuntu@$ec2_ip:/home/ubuntu/$base_debname
scp ${source_dir}/run_perftest.sh ubuntu@$ec2_ip:/home/ubuntu/run_perftest.sh
scp -r ${source_dir}/perf-tests ubuntu@$ec2_ip:/home/ubuntu/perf-tests
echo "export TEST_COMMIT_TIME=$(git show -s --format=%ct)" >> vars.sh
echo "export CIRCLE_TEARDOWN=true" >> vars.sh
echo "export CIRCLE_TOKEN=${CIRCLE_API_CALLBACK_TOKEN}" >> vars.sh
echo "export CLOUD2_BUCKET=${CLOUD2_PERFTEST_BUCKET}" >> vars.sh
echo "export CLOUD2_ORG=${CLOUD2_PERFTEST_ORG}" >> vars.sh
echo "export DB_TOKEN=${CLOUD2_PERFTEST_TOKEN}" >> vars.sh
echo "export INFLUXDB_VERSION=${CIRCLE_BRANCH}" >> vars.sh
echo "export NGINX_HOST=localhost" >> vars.sh
echo "export TEST_COMMIT=${CIRCLE_SHA1}" >> vars.sh
scp vars.sh ubuntu@$ec2_ip:/home/ubuntu/vars.sh