1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CicleCIからでCodeDeployを回すときに30分以上かかるときの対策

Posted at

CircleCIからDodeDeployを実行するときに30分以上かかると watch_application_deployment でエラーになる。
サポートに問い合わせてもいい回答得られなかったので自分でシェル作った

# !/bin/bash

set -eu

usage()
{
	cat <<EOF
$(basename ${0}) is deploy tool on CodeDeploy

Usage:
	$(basename ${0}) <parameters>

Parameters:
	--application-name		application name
	--deployment-group-name	deployment group
	--bucket				bucket name
	--key					file key
	--region				aws region (default: ap-northeast-1)
	--debug					debug
Options:
	--help, -h print this
EOF
}

watch_deployment()
{
	deployment_id="$1"
	region="$2"
	deploy_info=`aws deploy get-deployment --region ${region} --deployment-id "$deployment_id"`
	deploy_status=`ruby -e "require 'json'; d = JSON.parse('$deploy_info'); puts d['deploymentInfo']['status']"`

	case "$deploy_status" in
		Succeeded)
			echo "status is Succeeded"
			exit 0
			;;
		Created|Queued|InProgress)
			ruby -e "require 'json'; d = JSON.parse('$deploy_info'); puts Time.now.strftime('%Y-%m-%d %H:%M:%S') + ' ' + d['deploymentInfo']['deploymentOverview'].to_s"
			sleep 5
			watch_deployment $deployment_id $region
			;;
		Failed)
			echo "status is Failed"
			exit 1
			;;
		*)
			echo "get unknown status ${deploy_status}"
			exit 1
			;;
	esac
}


APP_NAME=''
BUCKET=''
DEPLOYMENT_GROUP_NAME=''
KEY=''
REGION='ap-northeast-1'
DEBUG=''

while [ $# -gt 0 ];
do
	case ${1} in
		--application-name)
			APP_NAME=${2}
			shift
		;;
		--bucket)
			BUCKET="${2}"
			shift
		;;
		--key)
			KEY="${2}"
			shift
		;;
		--deployment-group-name)
			DEPLOYMENT_GROUP_NAME="${2}"
			shift
		;;
		--region)
			REGION="${2}"
			shift
		;;
		--debug)
			DEBUG='--debug'
		;;
		--help|-h)
			usage
			exit 0
		;;
		*)
			echo "[ERROR] invalid option ${1}"
			usage
			exit 1
		;;
	esac
	shift
done

# デプロイ実行&ステータスを確認する
if [ -z "$APP_NAME" -o -z "$BUCKET" -o -z "${KEY}" -o -z "$DEPLOYMENT_GROUP_NAME" ]; then
	echo "[ERROR] parameter invalid"
	usage
	exit 1
fi

S3_LOCATION="${BUCKET}/${KEY}"
echo "${APP_NAME} deploy to ${S3_LOCATION}"

aws deploy push ${DEBUG} --ignore-hidden-files \
	--region ${REGION} \
	--application-name ${APP_NAME} \
	--s3-location s3://${S3_LOCATION}

response=`aws deploy create-deployment ${DEBUG} \
	--region ${REGION} \
	--application-name ${APP_NAME} \
	--deployment-group-name ${DEPLOYMENT_GROUP_NAME} \
	--s3-location bucket=${BUCKET},bundleType=zip,key=${KEY}`
deployment_id=`ruby -e "require 'json'; d = JSON.parse('$response'); puts d['deploymentId']"`

watch_deployment $deployment_id $REGION

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?