-
Notifications
You must be signed in to change notification settings - Fork 2
/
buildspec.yml
92 lines (89 loc) · 3.99 KB
/
buildspec.yml
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
version: 0.2
environment_variables:
plaintext:
CHILD_TEMPLATES: |
vpc-stack.yml
security-stack.yml
ecs-stack.yml
rds-stack.yml
TEMPLATE_FILES: |
WPECSStack.yml
CONFIG_FILES: |
config-params.json
phases:
install:
runtime-versions:
docker: 18
nodejs: 10
commands:
npm install cfn-create-or-update jsonlint -g
pre_build:
commands:
- echo "Validating CFN templates"
- |
for cfn_template in $TEMPLATE_FILES; do
echo "Validating CloudFormation template file $cfn_template"
aws cloudformation validate-template --template-body file://$cfn_template
done
- |
for cfn_template in $CHILD_TEMPLATES; do
echo "Validating CloudFormation template file $cfn_template"
aws cloudformation validate-template --template-body file://$cfn_template
done
- |
for conf in $CONFIG_FILES; do
echo "Validating CFN parameters config file $conf"
jsonlint -q $conf
done
build:
commands:
- echo "Copying child stack templates to S3"
- |
for child_template in $CHILD_TEMPLATES; do
if [ "X$TEMPLATE_PREFIX" = "X" ]; then
aws s3 cp "$child_template" "s3://$TEMPLATE_BUCKET/$child_template"
else
aws s3 cp "$child_template" "s3://$TEMPLATE_BUCKET/$TEMPLATE_PREFIX/$child_template"
fi
done
- echo "Updating template configuration files to use the appropriate values"
- |
for conf in $CONFIG_FILES; do
if [ "X$TEMPLATE_PREFIX" = "X" ]; then
echo "Replacing \"TEMPLATE_PATH_PLACEHOLDER\" for \"$TEMPLATE_BUCKET\" in $conf"
sed -i -e "s/TEMPLATE_PATH_PLACEHOLDER/$TEMPLATE_BUCKET/" $conf
else
echo "Replacing \"TEMPLATE_PATH_PLACEHOLDER\" for \"$TEMPLATE_BUCKET/$TEMPLATE_PREFIX\" in $conf"
sed -i -e "s/TEMPLATE_PATH_PLACEHOLDER/$TEMPLATE_BUCKET\/$TEMPLATE_PREFIX/" $conf
fi
done
- echo "Updating parameter values in config-params.json"
- sed -i -e "s|S3_BUCKET_PATH|$TEMPLATE_BUCKET/$TEMPLATE_PREFIX|" config-params.json
#- sed -i -e "s|___ENVIRONMENT_PREFIX|$TEMPLATE_PREFIX|" config-params.json
- sed -i -e "s|ENVIRONMENT_PLACEHOLDER|$TEMPLATE_PREFIX|" config-params.json
- cat config-params.json
#- checking stack exits
#- aws cloudformation stack-exists --stack-name WPECSStack
- echo "Start Creating stacks"
- aws cloudformation validate-template --template-body file://WPECSStack.yml
- cfn-create-or-update --stack-name WPECSStack-$TEMPLATE_PREFIX --template-body file://WPECSStack.yml --parameters file://config-params.json --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND
# echo 'WPECSStack-$TEMPLATE_PREFIX Stack created successfully'
# else
# echo 'Starting to delete existing stacks'
# aws cloudformation delete-stack --stack-name WPECSStack-$TEMPLATE_PREFIX
# aws cloudformation wait stack-delete-complete --stack-name WPECSStack-$TEMPLATE_PREFIX
# echo "Start Creating stacks"]
# cfn-create-or-update --stack-name WPECSStack-$TEMPLATE_PREFIX --template-body file://WPECSStack.yml --parameters file://config-params.json --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND
# fi
#- (aws cloudformation deploy \
# --template-file WPECSStack.yml \
# --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \
# --parameters file://config-params.json
# --stack-name WPECSStack > /dev/null & \
# ) && watch "aws cloudformation describe-stack-events \
# --stack-name WPECSStack | \
# jq -r '.StackEvents[] | \"\\(.Timestamp | sub(\"\\\\.[0-9]+Z$\"; \"Z\") | fromdate | strftime(\"%H:%M:%S\") ) \\(.LogicalResourceId) \\(.ResourceType) \\(.ResourceStatus)\"' | column -t"
artifacts:
files:
- master-stack.yml
- config-*.json