1
- # Copyright 2019 (c) Andrea Scuderi - https://github.com/swift-sprinter
1
+ # Copyright 2023 (c) Andrea Scuderi - https://github.com/swift-sprinter
2
2
3
3
# Licensed under the Apache License, Version 2.0 (the "License");
4
4
# you may not use this file except in compliance with the License.
12
12
# See the License for the specific language governing permissions and
13
13
# limitations under the License.
14
14
15
- # Use this tag to build a customized local image
15
+ SWIFT_VERSION =5.7.3
16
16
17
- SWIFT_VERSION? =5.7.2-amazonlinux2
18
- LAYER_VERSION? =5.7.2-amazonlinux2
19
- DOCKER_OS? =amazonlinux2
20
-
21
- # SWIFT_VERSION?=nightly-master-amazonlinux2
22
- # LAYER_VERSION?=nightly-master-amazonlinux2
23
- # DOCKER_OS?=amazonlinux2
24
-
25
- # SWIFT_VERSION?=5.2.4-bionic
26
- # LAYER_VERSION?=5-2-4-bionic
27
- # DOCKER_OS=bionic
28
-
29
- DOCKER_TAG =nio-swift:$(SWIFT_VERSION )
30
- SWIFT_DOCKER_IMAGE =$(DOCKER_TAG )
31
- SWIFT_LAMBDA_LIBRARY =nio-swift-lambda-runtime-$(LAYER_VERSION )
17
+ SWIFT_DOCKER_IMAGE =swift-amazonlinux2-builder:$(SWIFT_VERSION )
32
18
SWIFT_CONFIGURATION =release
33
19
34
- BUILD_PATH =.build
35
- SERVERLESS_BUILD =build
36
- SERVERLESS_LAYER =swift-lambda-runtime
37
-
38
- # Configuration
39
-
40
- # HelloWorld Example Configuration
41
- SWIFT_EXECUTABLE? =Products
42
- SWIFT_PROJECT_PATH? =Products
43
- LAMBDA_FUNCTION_NAME? =Products
44
- LAMBDA_HANDLER? =$(SWIFT_EXECUTABLE ) .handler
45
-
46
20
# Internals
47
- LAMBDA_ZIP =lambda.zip
48
- SHARED_LIBS_FOLDER =swift-shared-libs
49
- LAYER_ZIP =swift-lambda-runtime-$(LAYER_VERSION ) .zip
50
- ROOT_BUILD_PATH =./build
51
- LAYER_BUILD_PATH =$(ROOT_BUILD_PATH )
52
- LAMBDA_BUILD_PATH =$(ROOT_BUILD_PATH )
21
+ LAMBDA_ARCHIVE_PATH =./$(DOCKER_BUILD_PATH )
53
22
54
- # use this for local development
55
23
MOUNT_ROOT =$(shell pwd)
56
- DOCKER_PROJECT_PATH =$(SWIFT_PROJECT_PATH )
57
- ROOT_BUILD_PATH =./.build
58
- LAYER_BUILD_PATH =$(ROOT_BUILD_PATH ) /layer
59
- LAMBDA_BUILD_PATH =$(ROOT_BUILD_PATH ) /lambda
60
- LOCAL_LAMBDA_PATH =$(ROOT_BUILD_PATH ) /local
61
- LOCALSTACK_TMP =$(ROOT_BUILD_PATH ) /.tmp
62
- TMP_BUILD_PATH =$(ROOT_BUILD_PATH ) /tmp
63
- DATETIME =$(shell date +'% y% m% d-% H% M% S')
64
- DOCKER_FOLDER =docker
65
- BOOTSTRAP =$(DOCKER_FOLDER ) /$(SWIFT_VERSION ) /bootstrap
24
+ DOCKER_BUILD_PATH =build
25
+ DOCKER_PROJECT_PATH =Products
66
26
67
27
docker_build :
68
- docker build --tag $(DOCKER_TAG ) docker/ $( SWIFT_VERSION ) / .
28
+ docker build --tag $(SWIFT_DOCKER_IMAGE ) .
69
29
70
- build_lambda :
30
+ archive_lambda : create_build_directory
71
31
docker run \
72
32
--rm \
73
33
--volume " $( MOUNT_ROOT) /:/src" \
74
34
--volume " $( MOUNT_ROOT) /../Breeze:/Breeze" \
75
35
--workdir " /src/$( DOCKER_PROJECT_PATH) " \
76
36
$(SWIFT_DOCKER_IMAGE ) \
77
- /bin/bash -c " swift build -c $( SWIFT_CONFIGURATION) -Xswiftc -g "
37
+ /bin/bash -c " swift package archive -c $( SWIFT_CONFIGURATION) --verbose --output-path /src/ $( DOCKER_BUILD_PATH ) "
78
38
79
39
docker_bash :
80
40
docker run \
@@ -86,61 +46,5 @@ docker_bash:
86
46
$(SWIFT_DOCKER_IMAGE ) \
87
47
/bin/bash
88
48
89
- cp_lambda_to_sls_build_local : create_build_directory
90
- docker run \
91
- --rm \
92
- --volume " $( MOUNT_ROOT) /:/src" \
93
- --workdir " /src/$( DOCKER_PROJECT_PATH) " \
94
- $(SWIFT_DOCKER_IMAGE ) \
95
- /bin/bash -c " swift build -c $( SWIFT_CONFIGURATION) --show-bin-path | tr '\n' '/' > $( BUILD_PATH) /path.txt; echo '$( SWIFT_EXECUTABLE) ' >> $( BUILD_PATH) /path.txt | cat $( BUILD_PATH) /path.txt | xargs cp -t ../$( SERVERLESS_BUILD) ; rm $( BUILD_PATH) /path.txt"
96
-
97
49
create_build_directory :
98
- if [ ! -d " $( LAMBDA_BUILD_PATH) " ]; then mkdir -p $( LAMBDA_BUILD_PATH) ; fi
99
- if [ ! -d " $( LAYER_BUILD_PATH) " ]; then mkdir -p $( LAYER_BUILD_PATH) ; fi
100
- if [ ! -d " $( SERVERLESS_BUILD) " ]; then mkdir -p $( SERVERLESS_BUILD) ; fi
101
-
102
- extract_libraries :
103
- docker run \
104
- -it \
105
- --rm \
106
- --volume " $( MOUNT_ROOT) /:/src" \
107
- --workdir " /src" \
108
- $(SWIFT_DOCKER_IMAGE ) \
109
- /bin/bash -c " ldd $( SWIFT_PROJECT_PATH) /.build/$( SWIFT_CONFIGURATION) /$( SWIFT_EXECUTABLE) | grep swift | ./extract.sh > docker/$( SWIFT_VERSION) /swift-shared-libraries.txt"
110
-
111
- package_lambda : create_build_directory build_lambda
112
- zip -r -j $(LAMBDA_BUILD_PATH ) /$(LAMBDA_ZIP ) $(SWIFT_PROJECT_PATH ) /$(BUILD_PATH ) /$(SWIFT_CONFIGURATION ) /$(SWIFT_EXECUTABLE )
113
-
114
- package_layer : create_build_directory
115
- $(eval SHARED_LIBRARIES := $(shell cat docker/$(SWIFT_VERSION ) /swift-shared-libraries.txt | tr '\n' ' ') )
116
- mkdir -p $(SHARED_LIBS_FOLDER ) /lib
117
- ifeq '$(DOCKER_OS ) ' 'bionic'
118
- docker run \
119
- --rm \
120
- --volume "$(shell pwd)/:/src" \
121
- --workdir "/src" \
122
- $(SWIFT_DOCKER_IMAGE) \
123
- cp /lib64/ld-linux-x86-64.so.2 $(SHARED_LIBS_FOLDER)
124
- endif
125
- docker run \
126
- --rm \
127
- --volume "$(shell pwd)/:/src" \
128
- --workdir "/src" \
129
- $(SWIFT_DOCKER_IMAGE) \
130
- cp -t $(SHARED_LIBS_FOLDER)/lib $(SHARED_LIBRARIES)
131
- cp $(BOOTSTRAP) $(SHARED_LIBS_FOLDER)
132
- cd $(SHARED_LIBS_FOLDER); pwd; zip -r ../$(LAYER_BUILD_PATH)/$(LAYER_ZIP) bootstrap lib
133
-
134
- cp_layer_to_sls_build_local : create_build_directory
135
- if [ ! -d " ./$( SERVERLESS_BUILD) /$( SERVERLESS_LAYER) " ]; then mkdir -p ./$( SERVERLESS_BUILD) /$( SERVERLESS_LAYER) ; fi
136
- cp -R ./$(SHARED_LIBS_FOLDER ) /. ./$(SERVERLESS_BUILD ) /$(SERVERLESS_LAYER )
137
-
138
- # test_api:
139
- # curl -X POST https://$(API_ID).execute-api.us-east-1.amazonaws.com/products -H 'Content-Type: application/json' -d '{"updatedAt":"2022-06-27T20:27:03.030Z","name":"Hello","description":"Hello","sku":"4","createdAt":"2022-06-27T20:27:03.030Z"}'
140
- # curl -X POST https://$(API_ID).execute-api.us-east-1.amazonaws.com/products -H 'Content-Type: application/json' -d '{"updatedAt":"2022-06-27T20:27:03.030Z","name":"Hello","description":"Hello","sku":"5","createdAt":"2022-06-27T20:27:03.030Z"}'
141
- # curl https://$(API_ID).execute-api.us-east-1.amazonaws.com/products/4
142
- # curl https://$(API_ID).execute-api.us-east-1.amazonaws.com/products
143
- # curl -X DEL https://$(API_ID).execute-api.us-east-1.amazonaws.com/products/4
144
- # curl -PUT https://$(API_ID).execute-api.us-east-1.amazonaws.com/products -H 'Content-Type: application/json' -d '{"createdAt":"2022-06-27T20:27:03.030Z","description":"Hello 3","updatedAt":"2022-06-27T20:27:03.030Z","name":"Hello","sku":"3"}'
145
- # curl -X DEL https://$(API_ID).execute-api.us-east-1.amazonaws.com/products/5
146
- # curl https://$(API_ID).execute-api.us-east-1.amazonaws.com/products
50
+ if [ ! -d " $( LAMBDA_ARCHIVE_PATH) " ]; then mkdir -p $( LAMBDA_ARCHIVE_PATH) ; fi
0 commit comments