49
49
parser .add_argument ('--build-docker-repo' , dest = 'build_docker_repo' , required = False , default = "lambci/lambda" ,
50
50
help = "Use custom lambci/lambda build docker repository" )
51
51
52
+ parser .add_argument ('--build-docker-image' , dest = 'build_docker_image' , required = False , default = None ,
53
+ help = "Build custom docker image tag (if not provided, will use build-{[python|node][runtime-version]})" )
54
+
52
55
args = parser .parse_args ()
53
56
54
57
# Validation
@@ -108,6 +111,7 @@ def wrapper(*args, **kwargs):
108
111
FUNCTION_REGION = FUNCTION_LATEST_CONFIG ["FunctionArn" ].split (":" )[3 ]
109
112
FUNCTION_LATEST_VERSION = FUNCTION_LATEST_CONFIG ["Version" ]
110
113
FUNCTION_LATEST_CODE_SHA = FUNCTION_LATEST_CONFIG ["CodeSha256" ]
114
+ FUNCTION_LATEST_LAYERS = FUNCTION_LATEST_CONFIG .get ("Layers" , [])
111
115
FUNCTION_CURRENT_GIT_VERSION = FUNCTION_LATEST_CONFIG ["Description" ] if FUNCTION_LATEST_CONFIG else "Virgin"
112
116
FUNCTION_LATEST_LAYER_CONFIG = lam .list_layer_versions (LayerName = FUNCTION_LAYER_NAME , MaxItems = 1 )["LayerVersions" ]
113
117
FUNCTION_LATEST_LAYER_VERSION = FUNCTION_LATEST_LAYER_CONFIG [0 ]["Version" ] if FUNCTION_LATEST_LAYER_CONFIG else 0
@@ -142,6 +146,7 @@ def wrapper(*args, **kwargs):
142
146
143
147
# Build repo
144
148
BUILD_DOCKER_REPO = args .build_docker_repo
149
+ BUILD_DOCKER_IMAGE = args .build_docker_image
145
150
146
151
COL_BLU = "\033 [94m"
147
152
COL_GRN = "\033 [92m"
@@ -168,6 +173,10 @@ def build():
168
173
if found_cache :
169
174
deps_changed = application_dependencies_changed ()
170
175
176
+ # Force Rebuild deps if there is no Layer attached to the lambda
177
+ if not FUNCTION_LATEST_LAYERS :
178
+ deps_changed = True
179
+
171
180
if deps_changed :
172
181
# FETCH/PACKAGE DEPENDENCIES
173
182
fetch_dependencies ()
@@ -340,9 +349,13 @@ def npm():
340
349
341
350
342
351
def docker_run (install_cmd ):
352
+ if BUILD_DOCKER_IMAGE :
353
+ image_tag = BUILD_DOCKER_IMAGE
354
+ else :
355
+ image_tag = f"build-{ FUNCTION_RUNTIME } "
343
356
docker_cmd = (
344
357
"docker" , "run" , f'-v "{ WORKING_DIR } ":/var/task' ,
345
- f"--rm { BUILD_DOCKER_REPO } :build- { FUNCTION_RUNTIME } " ,
358
+ f"--rm { BUILD_DOCKER_REPO } :{ image_tag } " ,
346
359
f'/bin/sh -c "{ install_cmd } "'
347
360
)
348
361
try :
@@ -474,7 +487,7 @@ def ci():
474
487
summary (
475
488
lambda_published_version , layer_published_version or FUNCTION_LATEST_LAYER_VERSION ,
476
489
code_changed = code_changed , deps_changed = deps_changed ,
477
- )
490
+ )
478
491
479
492
480
493
# EntryPoint
0 commit comments