Bug: Sam build hanging in github-actions
Jdldeveloper opened this issue · 3 comments
Description:
I previously opened an issue (#7429) which seemed to be resolved with --use-container
as part of the same build process.
However, as I tried to use a github action to build, it will consistently hang on Mounting ... inside runtime container
step.
I've seen varying issues within the issue history but nothing really came of this that got resolved.
Steps to reproduce:
My repository sam-numpy-example contains merely this:
- A scaffold hello world sam application
- Added numpy as a dependency inside the codeuri as
requirements.txt
- Added a github-actions.yml which checks out the code, sets up python, sets up sam (aws-actions/setup-sam@v2), configures AWS credentials from a repository secret and finally tries to run
sam build --use-container --debug
You can see this actions workflow which hung on this step for 8 minutes before I cancelled it. In contrast, it builds in 15 seconds locally.
Observed result:
Run sam build --use-container --debug
SAM CLI now collects telemetry to better understand customer needs.
You can OPT OUT and disable telemetry collection by setting the
environment variable SAM_CLI_TELEMETRY=0 in your shell.
Thanks for your help!
Learn More: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-telemetry.html
2024-09-07 16:37:10,590 | Config file location: /home/runner/work/sam-numpy-example/sam-numpy-example/samconfig.toml
2024-09-07 16:37:10,590 | Loading configuration values from [default.['build'].parameters] (env.command_name.section) in config file at '/home/runner/work/sam-numpy-example/sam-numpy-example/samconfig.toml'...
2024-09-07 16:37:10,591 | Configuration values successfully loaded.
2024-09-07 16:37:10,591 | Configuration values are: {'stack_name': 'sam-numpy-example', 'cached': True, 'parallel': True}
2024-09-07 16:37:10,595 | Using SAM Template at /home/runner/work/sam-numpy-example/sam-numpy-example/template.yaml
2024-09-07 16:37:10,615 | Using config file: samconfig.toml, config environment: default
2024-09-07 16:37:10,615 | Expand command line arguments to:
2024-09-07 16:37:10,615 | --template_file=/home/runner/work/sam-numpy-example/sam-numpy-example/template.yaml --use_container --parallel --mount_with=READ --build_dir=.aws-sam/build --cache_dir=.aws-sam/cache --cached
2024-09-07 16:37:10,650 | 'build' command is called
2024-09-07 16:37:10,650 | Starting Build use cache
2024-09-07 16:37:10,650 | Starting Build inside a container
2024-09-07 16:37:10,654 | No Parameters detected in the template
2024-09-07 16:37:10,697 | There is no customer defined id or cdk path defined for resource MyLambdaLayer, so we will use the resource logical id as the resource id
2024-09-07 16:37:10,697 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource logical id as the resource id
2024-09-07 16:37:10,697 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource logical id as the resource id
2024-09-07 16:37:10,698 | 0 stacks found in the template
2024-09-07 16:37:10,698 | No Parameters detected in the template
2024-09-07 16:37:10,715 | There is no customer defined id or cdk path defined for resource MyLambdaLayer, so we will use the resource logical id as the resource id
2024-09-07 16:37:10,715 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource logical id as the resource id
2024-09-07 16:37:10,715 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource logical id as the resource id
2024-09-07 16:37:10,716 | 3 resources found in the stack
2024-09-07 16:37:10,716 | --base-dir is not presented, adjusting uri layers/ relative to /home/runner/work/sam-numpy-example/sam-numpy-example/template.yaml
2024-09-07 16:37:10,716 | Found Serverless function with name='HelloWorldFunction' and CodeUri='hello_world/'
2024-09-07 16:37:10,716 | --base-dir is not presented, adjusting uri hello_world/ relative to /home/runner/work/sam-numpy-example/sam-numpy-example/template.yaml
2024-09-07 16:37:10,716 | --base-dir is not presented, adjusting uri layers/ relative to /home/runner/work/sam-numpy-example/sam-numpy-example/template.yaml
2024-09-07 16:37:10,720 | 3 resources found in the stack
2024-09-07 16:37:10,720 | Found Serverless function with name='HelloWorldFunction' and CodeUri='hello_world/'
2024-09-07 16:37:10,720 | Skip building layer without a build method: MyLambdaLayer
2024-09-07 16:37:10,721 | Skip building layer without a build method: MyLambdaLayer
2024-09-07 16:37:10,721 | Skip building layer without a build method: MyLambdaLayer
2024-09-07 16:37:10,721 | Skip building layer without a build method: MyLambdaLayer
2024-09-07 16:37:10,721 | Instantiating build definitions
2024-09-07 16:37:10,721 | No previous build graph found, generating new one
2024-09-07 16:37:10,721 | Unique function build definition found, adding as new (Function Build Definition: BuildDefinition(python3.[12](https://github.com/Jdldeveloper/sam-numpy-example/actions/runs/10752897450/job/29821731327#step:6:13), /home/runner/work/sam-numpy-example/sam-numpy-example/hello_world, Zip, , 061a6000-e522-4905-ad2f-34e7fcfb8036, {}, {}, arm64, []), Function: Function({'function_id': 'HelloWorldFunction', 'name': 'HelloWorldFunction', 'functionname': 'HelloWorldFunction', 'runtime': 'python3.12', 'memory': None, 'timeout': 3, 'handler': 'app.lambda_handler', 'imageuri': None, 'packagetype': 'Zip', 'imageconfig': None, 'codeuri': '/home/runner/work/sam-numpy-example/sam-numpy-example/hello_world', 'environment': None, 'rolearn': None, 'layers': [<samcli.lib.providers.provider.LayerVersion object at 0x7fd2a5021210>], 'events': {'HelloWorld': {'Type': 'Api', 'Properties': {'Path': '/hello', 'Method': 'get', 'RestApiId': 'ServerlessRestApi'}}}, 'metadata': {'SamResourceId': 'HelloWorldFunction'}, 'inlinecode': None, 'codesign_config_arn': None, 'architectures': ['arm64'], 'function_url_config':
2024-09-07 16:37:10,723 | Async execution started
2024-09-07 16:37:10,723 | Invoking function functools.partial(<bound method ParallelBuildStrategy.build_single_function_definition of <samcli.lib.build.build_strategy.ParallelBuildStrategy object at 0x7fd2a5023450>>, <samcli.lib.build.build_graph.FunctionBuildDefinition object at 0x7fd2a502[13](https://github.com/Jdldeveloper/sam-numpy-example/actions/runs/10752897450/job/29821731327#step:6:14)90>)
2024-09-07 16:37:10,723 | Running incremental build for runtime python3.12 for following resources (HelloWorldFunction)
2024-09-07 [16](https://github.com/Jdldeveloper/sam-numpy-example/actions/runs/10752897450/job/29821731327#step:6:17):37:10,724 | Waiting for async results
2024-09-07 16:37:10,724 | Cache is invalid, running build and copying resources for following functions (HelloWorldFunction)
2024-09-07 16:37:10,724 | Building codeuri: /home/runner/work/sam-numpy-example/sam-numpy-example/hello_world runtime: python3.12 architecture: arm64 functions: HelloWorldFunction
2024-09-07 16:37:10,724 | Building to following folder /home/runner/work/sam-numpy-example/sam-numpy-example/.aws-sam/build/HelloWorldFunction
2024-09-07 16:37:10,730 | Checking free port on 127.0.0.1:8364
Fetching public.ecr.aws/sam/build-python3.12:latest-arm64 Docker container image............................................................................................................................................................................................................................................................................................................................................................................................................................................................................
[20](https://github.com/Jdldeveloper/sam-numpy-example/actions/runs/10752897450/job/29821731327#step:6:21)24-09-07 16:37:41,347 | Mounting /home/runner/work/sam-numpy-example/sam-numpy-example/hello_world as /tmp/samcli/source:ro,delegated, inside runtime container
Expected result:
I'd expect this build to complete or provide any update as to what's going on.
Additional environment details (Ex: Windows, Mac, Amazon Linux etc)
This is on an ubuntu-latest
github-hosted runner
Hi @Jdldeveloper, thanks for reporting the issue. I believe what's happening here is since the architecture is set to arm64
in the template.yaml
file, sam build -u
is trying to pull the arm64
based image on a x86
based ubuntu
github runner which is really slow. Could you try changing the architecture to x86_64
here instead and see if it makes a difference. I tried changing the architecture and the build here was much faster.
@hnnasit great catch, thanks so much! That was in fact the issue and it built much faster.
⚠️ COMMENT VISIBILITY WARNING⚠️
Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.