mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
This removes the need for two distinct users. Git pushes and dokku commands are sent using the same user.
45 lines
1.4 KiB
Bash
Executable File
45 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
KEYNAME="$1"
|
|
indent() { sed "s/^/ /"; }
|
|
echo "-----> Booting EC2 instance..."
|
|
start=$(ec2-run-instances -k $1 ami-f3d1bb9a 2>&1 )
|
|
if [[ $? > 0 ]]; then
|
|
echo "$start" | indent
|
|
exit 3
|
|
fi
|
|
INSTANCE=$(echo "$start" | awk '/^INSTANCE/ {print $2}')
|
|
terminate() {
|
|
echo "-----> Terminating $INSTANCE..."
|
|
ec2-terminate-instances $INSTANCE &>/dev/null && echo " Shutting down"
|
|
}
|
|
[[ $NOCLEANUP ]] || trap "terminate" EXIT
|
|
sleep 30
|
|
status=""
|
|
while [[ "$status" != "running" ]]; do
|
|
info=$(ec2-describe-instances 2>/dev/null | grep $INSTANCE)
|
|
status=$(echo "$info" | cut -f 6 | grep run)
|
|
echo " Waiting..."
|
|
sleep 5
|
|
if [[ $status == "running" ]]; then
|
|
echo "-----> $INSTANCE has succesfully booted!"
|
|
break
|
|
fi
|
|
done
|
|
PUBLIC_IP=$(echo "$info" | awk '{print $14}')
|
|
echo "-----> Waiting for SSH at $PUBLIC_IP..."
|
|
while [[ ! $(echo | nc $PUBLIC_IP 22) ]]; do
|
|
sleep 5
|
|
echo " Waiting..."
|
|
done
|
|
set -e
|
|
echo "-----> Connecting and running bootstrap script..."
|
|
cat ../bootstrap.sh | ssh -o "StrictHostKeyChecking=no" ubuntu@$PUBLIC_IP "HOSTNAME=$PUBLIC_IP sudo bash" 2>&1 | indent
|
|
echo "-----> Installing SSH public keys..."
|
|
cat ~/.ssh/id_rsa.pub | ssh -o "StrictHostKeyChecking=no" ubuntu@$PUBLIC_IP "sudo sshcommand acl-add dokku test" > /dev/null
|
|
for app_path in apps/*; do
|
|
app=$(basename $app_path)
|
|
echo "-----> Running test deploy of $app..."
|
|
./test_deploy $app_path $PUBLIC_IP
|
|
done
|