diff --git a/Examples/LambdaFunctions/Dockerfile b/Examples/LambdaFunctions/Dockerfile index 7c1df8e5..d5315703 100644 --- a/Examples/LambdaFunctions/Dockerfile +++ b/Examples/LambdaFunctions/Dockerfile @@ -1,3 +1,3 @@ -FROM swiftlang/swift:nightly-master-amazonlinux2 +FROM swift:5.2-amazonlinux2 RUN yum -y install zip diff --git a/Examples/LambdaFunctions/scripts/build-and-package.sh b/Examples/LambdaFunctions/scripts/build-and-package.sh index b59f2314..4e45c486 100755 --- a/Examples/LambdaFunctions/scripts/build-and-package.sh +++ b/Examples/LambdaFunctions/scripts/build-and-package.sh @@ -18,13 +18,22 @@ set -eu executable=$1 workspace="$(pwd)/../.." +echo "-------------------------------------------------------------------------" +echo "preparing docker build image" +echo "-------------------------------------------------------------------------" +docker build . -t builder +echo "done" + echo "-------------------------------------------------------------------------" echo "building \"$executable\" lambda" echo "-------------------------------------------------------------------------" -docker run --rm -v "$workspace":/workspace -w /workspace/Examples/LambdaFunctions builder bash -cl "swift build --product $executable -c release -Xswiftc -g" +docker run --rm -v "$workspace":/workspace -w /workspace/Examples/LambdaFunctions builder \ + bash -cl "swift build --product $executable -c release" echo "done" echo "-------------------------------------------------------------------------" echo "packaging \"$executable\" lambda" echo "-------------------------------------------------------------------------" -docker run --rm -v "$workspace":/workspace -w /workspace/Examples/LambdaFunctions builder bash -cl "./scripts/package.sh $executable" +docker run --rm -v "$workspace":/workspace -w /workspace/Examples/LambdaFunctions builder \ + bash -cl "./scripts/package.sh $executable" +echo "done" diff --git a/Examples/LambdaFunctions/scripts/config.sh b/Examples/LambdaFunctions/scripts/config.sh index d6ec4b7f..d4ab9f6f 100755 --- a/Examples/LambdaFunctions/scripts/config.sh +++ b/Examples/LambdaFunctions/scripts/config.sh @@ -14,7 +14,6 @@ ##===----------------------------------------------------------------------===## DIR="$(cd "$(dirname "$0")" && pwd)" - executables=( $(swift package dump-package | sed -e 's|: null|: ""|g' | jq '.products[] | (select(.type.executable)) | .name' | sed -e 's|"||g') ) if [[ ${#executables[@]} = 0 ]]; then @@ -32,8 +31,8 @@ elif [[ ${#executables[@]} > 1 ]]; then fi echo "-------------------------------------------------------------------------" -echo "CONFIG" +echo "configuration" echo "-------------------------------------------------------------------------" -echo "DIR: $DIR" +echo "current dir: $DIR" echo "executable: $executable" -echo "-------------------------------------------------------------------------" \ No newline at end of file +echo "-------------------------------------------------------------------------" diff --git a/Examples/LambdaFunctions/scripts/deploy.sh b/Examples/LambdaFunctions/scripts/deploy.sh index 619826eb..3720b4d0 100755 --- a/Examples/LambdaFunctions/scripts/deploy.sh +++ b/Examples/LambdaFunctions/scripts/deploy.sh @@ -15,44 +15,29 @@ set -eu -# Lambda Function name (must exist in AWS Lambda) -lambda_name=SwiftSample - -# S3 bucket name to upload zip file (must exist in AWS S3) -s3_bucket=swift-lambda-test - -workspace="$(pwd)/../.." - DIR="$(cd "$(dirname "$0")" && pwd)" source $DIR/config.sh +workspace="$DIR/../.." + echo -e "\ndeploying $executable" -echo "-------------------------------------------------------------------------" -echo "preparing docker build image" -echo "-------------------------------------------------------------------------" -docker build . -t builder +$DIR/build-and-package.sh "$executable" echo "-------------------------------------------------------------------------" -echo "building \"$executable\" lambda" +echo "uploading \"$executable\" lambda to AWS S3" echo "-------------------------------------------------------------------------" -docker run --rm -v $workspace:/workspace -w /workspace builder \ - bash -cl "cd Examples/LambdaFunctions && \ - swift build --product $executable -c release -Xswiftc -g" -echo "done" -echo "-------------------------------------------------------------------------" -echo "packaging \"$executable\" lambda" -echo "-------------------------------------------------------------------------" -docker run --rm -v `pwd`:/workspace -w /workspace builder bash -cl "./scripts/package.sh $executable" +read -p "S3 bucket name to upload zip file (must exist in AWS S3): " s3_bucket +s3_bucket=${s3_bucket:-swift-lambda-test} # default for easy testing + +aws s3 cp ".build/lambda/$executable/lambda.zip" "s3://$s3_bucket/" echo "-------------------------------------------------------------------------" -echo "uploading \"$executable\" lambda to s3" +echo "updating AWS Lambda to use \"$executable\"" echo "-------------------------------------------------------------------------" -aws s3 cp .build/lambda/$executable/lambda.zip s3://$s3_bucket/ +read -p "Lambda Function name (must exist in AWS Lambda): " lambda_name +lambda_name=${lambda_name:-SwiftSample} # default for easy testing -echo "-------------------------------------------------------------------------" -echo "updating \"$lambda_name\" to latest \"$executable\"" -echo "-------------------------------------------------------------------------" -aws lambda update-function-code --function $lambda_name --s3-bucket $s3_bucket --s3-key lambda.zip +aws lambda update-function-code --function "$lambda_name" --s3-bucket "$s3_bucket" --s3-key lambda.zip diff --git a/Examples/LambdaFunctions/scripts/package.sh b/Examples/LambdaFunctions/scripts/package.sh index 190be3f8..17d5853b 100755 --- a/Examples/LambdaFunctions/scripts/package.sh +++ b/Examples/LambdaFunctions/scripts/package.sh @@ -17,11 +17,12 @@ set -eu executable=$1 -target=.build/lambda/$executable +target=".build/lambda/$executable" rm -rf "$target" mkdir -p "$target" cp ".build/release/$executable" "$target/" -cp -Pv /usr/lib/swift/linux/lib*so* "$target" +# add the target deps based on ldd +ldd ".build/release/$executable" | grep swift | awk '{print $3}' | xargs cp -Lv -t "$target" cd "$target" ln -s "$executable" "bootstrap" zip --symlinks lambda.zip * diff --git a/Examples/LambdaFunctions/scripts/sam-deploy.sh b/Examples/LambdaFunctions/scripts/sam-deploy.sh index 779ed0e9..d87d966d 100755 --- a/Examples/LambdaFunctions/scripts/sam-deploy.sh +++ b/Examples/LambdaFunctions/scripts/sam-deploy.sh @@ -18,15 +18,10 @@ source $DIR/config.sh echo -e "\ndeploying $executable" -echo "-------------------------------------------------------------------------" -echo "preparing docker build image" -echo "-------------------------------------------------------------------------" -docker build . -q -t builder - -$DIR/build-and-package.sh ${executable} +$DIR/build-and-package.sh "$executable" echo "-------------------------------------------------------------------------" echo "deploying using SAM" echo "-------------------------------------------------------------------------" -sam deploy --template "./scripts/SAM/${executable}-template.yml" $@ \ No newline at end of file +sam deploy --template "./scripts/SAM/$executable-template.yml" $@ diff --git a/Examples/LambdaFunctions/scripts/serverless-deploy.sh b/Examples/LambdaFunctions/scripts/serverless-deploy.sh index 7e2d7cb0..241ee7bf 100755 --- a/Examples/LambdaFunctions/scripts/serverless-deploy.sh +++ b/Examples/LambdaFunctions/scripts/serverless-deploy.sh @@ -13,20 +13,17 @@ ## ##===----------------------------------------------------------------------===## +set -eu + DIR="$(cd "$(dirname "$0")" && pwd)" source $DIR/config.sh echo -e "\ndeploying $executable" -echo "-------------------------------------------------------------------------" -echo "preparing docker build image" -echo "-------------------------------------------------------------------------" -docker build . -q -t builder - -$DIR/build-and-package.sh ${executable} +$DIR/build-and-package.sh "$executable" echo "-------------------------------------------------------------------------" echo "deploying using Serverless" echo "-------------------------------------------------------------------------" -serverless deploy --config "./scripts/serverless/${executable}-template.yml" --stage dev -v \ No newline at end of file +serverless deploy --config "./scripts/serverless/$executable-template.yml" --stage dev -v diff --git a/Examples/LambdaFunctions/scripts/serverless-remove.sh b/Examples/LambdaFunctions/scripts/serverless-remove.sh index f6b228c5..262c07cb 100755 --- a/Examples/LambdaFunctions/scripts/serverless-remove.sh +++ b/Examples/LambdaFunctions/scripts/serverless-remove.sh @@ -13,6 +13,8 @@ ## ##===----------------------------------------------------------------------===## +set -eu + DIR="$(cd "$(dirname "$0")" && pwd)" source $DIR/config.sh @@ -22,4 +24,4 @@ echo "-------------------------------------------------------------------------" echo "removing using Serverless" echo "-------------------------------------------------------------------------" -serverless remove --config "./scripts/serverless/${executable}-template.yml" --stage dev -v \ No newline at end of file +serverless remove --config "./scripts/serverless/$executable-template.yml" --stage dev -v diff --git a/Examples/LocalDebugging/MyLambda/Dockerfile b/Examples/LocalDebugging/MyLambda/Dockerfile index 7c1df8e5..d5315703 100644 --- a/Examples/LocalDebugging/MyLambda/Dockerfile +++ b/Examples/LocalDebugging/MyLambda/Dockerfile @@ -1,3 +1,3 @@ -FROM swiftlang/swift:nightly-master-amazonlinux2 +FROM swift:5.2-amazonlinux2 RUN yum -y install zip diff --git a/Examples/LocalDebugging/MyLambda/scripts/deploy.sh b/Examples/LocalDebugging/MyLambda/scripts/deploy.sh index 8c137d60..75be0ceb 100755 --- a/Examples/LocalDebugging/MyLambda/scripts/deploy.sh +++ b/Examples/LocalDebugging/MyLambda/scripts/deploy.sh @@ -15,23 +15,9 @@ set -eu +executable=MyLambda lambda_name=SwiftSample s3_bucket=swift-lambda-test -executables=( $(swift package dump-package | sed -e 's|: null|: ""|g' | jq '.products[] | (select(.type.executable)) | .name' | sed -e 's|"||g') ) - -if [[ ${#executables[@]} = 0 ]]; then - echo "no executables found" - exit 1 -elif [[ ${#executables[@]} = 1 ]]; then - executable=${executables[0]} -elif [[ ${#executables[@]} > 1 ]]; then - echo "multiple executables found:" - for executable in ${executables[@]}; do - echo " * $executable" - done - echo "" - read -p "select which executables to deploy: " executable -fi echo -e "\ndeploying $executable" @@ -39,19 +25,21 @@ echo "-------------------------------------------------------------------------" echo "preparing docker build image" echo "-------------------------------------------------------------------------" docker build . -t builder +echo "done" echo "-------------------------------------------------------------------------" echo "building \"$executable\" lambda" echo "-------------------------------------------------------------------------" -docker run --rm -v `pwd`/../../..:/workspace -w /workspace builder \ - bash -cl "cd Examples/EndToEndDebugging/MyLambda && - swift build --product $executable -c release -Xswiftc -g" +docker run --rm -v `pwd`/../../..:/workspace -w /workspace/Examples/LocalDebugging/MyLambda builder \ + bash -cl "swift build --product $executable -c release" echo "done" echo "-------------------------------------------------------------------------" echo "packaging \"$executable\" lambda" echo "-------------------------------------------------------------------------" -docker run --rm -v `pwd`:/workspace -w /workspace builder bash -cl "./scripts/package.sh $executable" +docker run --rm -v `pwd`:/workspace -w /workspace builder \ + bash -cl "./scripts/package.sh $executable" +echo "done" echo "-------------------------------------------------------------------------" echo "uploading \"$executable\" lambda to s3" diff --git a/Examples/LocalDebugging/MyLambda/scripts/package.sh b/Examples/LocalDebugging/MyLambda/scripts/package.sh index 190be3f8..17d5853b 100755 --- a/Examples/LocalDebugging/MyLambda/scripts/package.sh +++ b/Examples/LocalDebugging/MyLambda/scripts/package.sh @@ -17,11 +17,12 @@ set -eu executable=$1 -target=.build/lambda/$executable +target=".build/lambda/$executable" rm -rf "$target" mkdir -p "$target" cp ".build/release/$executable" "$target/" -cp -Pv /usr/lib/swift/linux/lib*so* "$target" +# add the target deps based on ldd +ldd ".build/release/$executable" | grep swift | awk '{print $3}' | xargs cp -Lv -t "$target" cd "$target" ln -s "$executable" "bootstrap" zip --symlinks lambda.zip *