X Tutup
#!/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
X Tutup