red*_* 87 14 amazon-web-services npm gitlab docker
我正在尝试运行一个 Gitlab 管道,通过 cdk-synth 命令构建 AWS-CDK 项目。我遵循了网上关于应该在 Gitlab 运行程序中使用哪些图像的建议,但遇到了以下错误:
错误:spawnSync docker ENOENT
我不确定这个错误到底意味着什么,我猜它正在尝试启动 docker (由命令使用cdk synth)但未能这样做。同样,我在网上找到的所有内容都建议使用我当前拥有的设置:
image: node:16.3.0-alpine
stages:
- build
- test
- .post
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .npm
- node_modules
build:
tags:
- mytag
environment: ${CI_COMMIT_BRANCH}
stage: build
script:
- npm i
- cdk synth --no-staging > template.yaml
artifacts:
paths:
- cdk.out
expire_in: 30 mins
Run Code Online (Sandbox Code Playgroud)
我真的对这个迷失了,它可能正盯着我看,但有人可以给我指出正确的方向,为什么当我使用的图像本身就是一个 docker 容器时我会收到此错误?
Dus*_*tin 25
我也被困在这个问题上,但能够通过在我的inesbuild中添加 as 来解决它。devDependenciespackage.json
经过大约10天左右的时间摆弄docker内部的docker等...以及基于同一问题的其他解决方案的大量试验和错误,例如 这个
我得出了以下解决方案。
如果您使用NodejsFunction函数,您似乎需要在 gitlab-ci 模板(before_script/script)中包含以下内容:
- apk 添加 bash(来源:此处)
- npm i -g esbuild
esbuild用于将基于 JavaScript 的 lambda 函数代码及其依赖项打包到单个文件中。这对我有用:
cdk_synth:
image: node:16-alpine
stage: validate
before_script:
- apk add bash
- npm i -g esbuild
- npm install
- npm i -g aws-cdk
- npm i -g aws-cdk-lib
script:
- cdk bootstrap aws://$AWS_ACCOUNT_ID/$AWS_REGION
- cdk synth
Run Code Online (Sandbox Code Playgroud)
添加这些行解决了我的问题!
script:
- apt-get update
- apt-get install -y ca-certificates curl gnupg lsb-release
- mkdir -p /etc/apt/keyrings
- curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
- apt-get update
- apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
- npm i
- npm run synth
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9353 次 |
| 最近记录: |