-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathcodeship_aws_codedeploy_deploy
executable file
·53 lines (38 loc) · 2.09 KB
/
codeship_aws_codedeploy_deploy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash
set -e
set -o pipefail
# This script also uses an environment variable called CODEDEPLOY_CLI_INPUT_JSON which when supplied, it
# will be passed into the --cli-input-json argument for 'aws deploy create-deployment'
APPLICATION_FOLDER=${1:?'You need to provide the directory with your code as the second parameter'}
APPLICATION_NAME=${2:?'You need to provide the CodeDeploy application name'}
DEPLOYMENT_GROUP_NAME=${3:?'You need to provide the Deployment Group name'}
S3_BUCKET=${4:?'You need to provide the S3 Bucket to upload the artefact to'}
DEPLOYMENT_CONFIG_NAME=$5
CODEDEPLOY_CLI_INPUT_JSON=${6:? 'You need to provide the JSON file for custom overrides'}
source utils
S3_BUCKET_SUBFOLDER_PATH=$(s3_bucket_subfolder_path $S3_BUCKET)
S3_BUCKET=$(s3_bucket_name $S3_BUCKET)
echo "Starting CodeDeploy deployment to $APPLICATION_NAME:$DEPLOYMENT_GROUP_NAME"
VERSION_NAME=${CI_COMMIT_ID}-${CI_BUILD_ID}-$(date +%Y-%m-%d.%H:%M:%S)
FILE_NAME=$VERSION_NAME.zip
if [[ -z $S3_BUCKET_SUBFOLDER_PATH ]]; then
S3_KEY=$FILE_NAME
S3_PATH="s3://$S3_BUCKET/$FILE_NAME"
else
S3_KEY="$S3_BUCKET_SUBFOLDER_PATH/$FILE_NAME"
S3_PATH="s3://$S3_BUCKET/$S3_BUCKET_SUBFOLDER_PATH/$FILE_NAME"
fi
DESCRIPTION="${CI_COMMIT_MESSAGE:0:512}"
aws deploy push --application-name "$APPLICATION_NAME" --description "$DESCRIPTION" --ignore-hidden-files --s3-location "$S3_PATH" --source "$APPLICATION_FOLDER" > /dev/null
echo "Creating new Deployment: $VERSION_NAME"
deployment=("--application-name" "$APPLICATION_NAME" "--deployment-group-name" "$DEPLOYMENT_GROUP_NAME" "--description" "$DESCRIPTION" "--s3-location" "bucket=$S3_BUCKET,key=$S3_KEY,bundleType=zip")
if [ ! -z "$DEPLOYMENT_CONFIG_NAME" ]; then
deployment+=("--deployment-config-name" "$DEPLOYMENT_CONFIG_NAME")
fi
if [ ! -z "$CODEDEPLOY_CLI_INPUT_JSON" ]; then
deployment+=("--cli-input-json" "$CODEDEPLOY_CLI_INPUT_JSON")
fi
echo "Deployment Command: ${deployment[@]}"
deployment_id=$(aws deploy create-deployment "${deployment[@]}" | jq -r .deploymentId)
echo "Validating deployment: $deployment_id"
codeship_aws codedeploy_deploy_validation "$deployment_id"