forked from kilna/python-lambda-docker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_dockerfiles
More file actions
87 lines (70 loc) · 2.15 KB
/
test_dockerfiles
File metadata and controls
87 lines (70 loc) · 2.15 KB
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
#!/bin/bash
set -e -o pipefail
TMPDIR=${TMPDIR:-/tmp}
docker_dir="$PWD"
base_image="python-lambda"
example_image="example-lambda-image"
header() { printf '=%.0s' {1..79}; echo; echo $@; printf '=%.0s' {1..79}; echo; }
declare -a dockerfiles=( "$@" )
if [[ $# == 0 ]]; then
dockerfiles=( Dockerfile-* )
fi
for dockerfile in "${dockerfiles[@]}"; do
ver=$(echo "$dockerfile" | cut -d '-' -f 2)
tag="$ver-test"
base_image_tag="$base_image:$tag"
example_image_tag="$example_image:$tag"
example_image_tmp="$TMPDIR/$example_image-$tag"
header "Build base image - $ver"
set -x
cd $docker_dir
docker build --tag $base_image_tag --file $dockerfile .
set +x
header "Copy derived project - $ver"
set -x
rm -rvf $example_image_tmp &>/dev/null || true
cp -rv $docker_dir/example/ $example_image_tmp/
cd $example_image_tmp
sed -i "1s/.*/FROM $base_image_tag/" Dockerfile
sed -i "s/runtime: .*/runtime: python$ver/" config.yaml
test -d ~/.aws && cp -rv ~/.aws $example_image_tmp
set +x
header "Build derived docker - $ver"
set -x
docker build --tag $example_image_tag .
set +x
header "Invoke lambda in container - $ver"
set -x
docker run $example_image_tag lambda invoke
set +x
header "Run tests - $ver"
set -x
docker run $example_image_tag ./run_tests
set +x
header "Build lambda - $ver"
set -x
docker run $example_image_tag lambda build
set +x
header "Deploy lambda - $ver"
set -x
docker run --rm $example_image_tag lambda deploy
set +x
header "Invoke lambda on AWS - $ver"
set -x
aws lambda invoke --function-name=example-lambda --payload "`cat event.json`" output.json 2>result.json
cat result.json
cat output.json
[[ `grep Error result.json | wc -l` -ne 0 ]] && exit 1
if [[ `cat output.json | md5sum | cut -d ' ' -f 1` != 'f5fc1910251a0497f1edf58cccbfc7b6' ]]; then
echo 'ERROR: md5sum of output returned by lambda invoke on AWS did not match expected results' 1&>2
exit 2
fi
aws lambda delete-function --function-name=example-lambda
set +x
header "Cleanup - $ver"
set -x
docker rmi -f $example_image_tag
docker rmi -f $base_image_tag
rm -rvf $example_image_tmp
set +x
done