问题标签 [buildspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
425 浏览

amazon-web-services - 如何使用 Webpack 配置 AWS Codebuild

我创建了一个分四个阶段运行的 AWS Codepipeline。1) 来自 github 的源代码,2) 将后端部署到 Elastic Beanstalk,3) 使用 Codebuild 构建前端代码(使用下面的 buildspec 文件),以及 4) 将 webpack 的结果部署到 S3。

到目前为止,除了第 3 阶段的结果外,一切都按预期工作。Codebuild 似乎将工件设置为源文件,而不是 webpack 构建的结果。当我在存储桶和文件夹中查找已部署的代码时,我期望看到一系列 js 资产文件和 manifest.json。相反,我看到了项目文件。不太确定我在这里配置错了什么。

构建规范.yml

webpack 构建配置 在此处输入图像描述

webpack-部署配置 在此处输入图像描述

0 投票
1 回答
329 浏览

amazon-web-services - AWS CodeBuild 可以同时构建两个 Docker 映像吗?

我有两个 Dockerfile。在 Cloudformation 中,我希望 CodeBuild 从两个 Dockerfile 构建两个映像。为此,我可能需要两个不同的 buildspec 文件和一个 CodeBuild。这可能吗?

0 投票
1 回答
667 浏览

amazon-web-services - 如何将 S3 存储桶中的文件添加到 AWS CodePipeline 中的输出工件?(NodeJS)

我正在使用 AWS CodePipeline,它从我的 git 存储库中获取源,使用CodeBuildbuildSpec 构建输出工件并将其保存到 S3 存储桶,最终部署到Elastic BeanStalk(NodeJS 环境)。

一切正常,但我需要管道从我的一个AWS S3存储桶中复制 1 个特定文件并将其添加output artifactsEB

可以使用 buildSpec 完成吗?

0 投票
1 回答
104 浏览

continuous-integration - 如何在 AWS CodeBuild 中设置自定义构建版本

我正在尝试以YYYY.MM.DD.BuildId用于版本控制二进制文件的格式设置环境变量,但我似乎无法弄清楚如何做到这一点。我需要从 buildspec.yml 文件中获得它以在编译器命令中引用。看起来它不应该这么困难,但我似乎无法用任何类型的动态逻辑更新环境变量。

我在 yaml 文件中尝试了这个主题的变体:

...但它始终将构建版本视为文字值。没有替换发生。

我不可能是唯一一个试图做这种事情的人。我怎样才能使这项工作?这在 Azure Devops 中非常简单,在 Jenkins 中也是微不足道的,所以令人惊讶的是我在这方面做了多久。

0 投票
0 回答
92 浏览

amazon-web-services - AWS 在构建过程中动态读取 buildspec.yml 文件中的参数存储值

我们有一个多租户 AWS 环境,其中我们在单个 Document Db 实例中有多个生产数据库。

对于每个租户(或客户),我们都有自己的 lambda 函数,它们连接到各自客户端的数据库。

在除了全局管理员用户之外的文档数据库中,我们为每个客户端数据库创建了一个特定用户,我们希望在其各自 lambda 的查询字符串中使用该用户。

我已将所有用户名和密码作为加密字符串存储在 AWS 参数存储中。

目标是从参数存储中获取正确的数据库凭据,并在构建过程中将它们替换到查询字符串中的 db config json 文件中。

我的 buildspec.yml 看起来像这样:

如您所见,我使用 CODEBUILD_WEBHOOK_HEAD_REF 环境变量获取生产环境的名称。

我的参数存储中的数据库凭据命名为

dbUser_customer1 dbPwd_customer1

dbUser_customer2 dbPwd_customer2

dbUser_customer3 dbPwd_customer3

只需将 customer1,2,3 替换为我从上面 buildspec 中的 env 变量中获得的值

我正在寻找的是根据我得到的“env”值在 config.db.json 替换中动态使用正确的参数存储变量。

因此,我不想在参数存储部分的参数存储中定义所有数据库凭据,而只想为其进行构建。

这可能吗?如果没有,还有其他选择吗?

先感谢您。

0 投票
2 回答
1002 浏览

amazon-web-services - AWS CodeBuild - BuildSpec.yml - 导出的变量不解析值

我正在尝试从 AWS 代码管道的 CodeBuild 阶段导出变量值,但该值未解析

注意:Windows 容器的 PowerShell 正在执行 buildspec.yml 的命令

示例:我在 AWS CodeBuild 项目中设置了一个名为 Client 的输入环境变量,如下所示

在此处输入图像描述

并导出相同的值,我修改了我的 buildspec.yml,如下所示

版本:0.2

但导出的值是表达式而不是解析值

在此处输入图像描述

我也尝试过传递变量,但似乎不起作用。

在这种情况下如何将环境变量传递给导出变量

提前致谢。

0 投票
2 回答
311 浏览

reactjs - 部署阶段出错。在 AWS 代码管道的日志中未发现错误

我的 bitbucket 中有 reactjs 项目。我正在尝试将其部署在我的 EC2 服务器中,但在部署阶段遇到错误。并且在检查错误时......它没有如图所示部署......我正在分享文件和错误......你们可以帮帮我吗?

构建规范.yml

应用规范.yml

before_install.sh

after_install.sh

app_start.sh

指定位置的错误 脚本:scripts/app_start.sh 未能在 300 秒内完成

0 投票
0 回答
198 浏览

node.js - npm-run-all -p build:* sh: 1: npm-run-all: not found npm ERR! 代码生命周期

[Container] 2021/05/28 16:28:06 进入阶段 BUILD [Container] 2021/05/28 16:28:06 运行命令 npm run build

settl-me@1.3.0 build /codebuild/output/src979787175/src npm-run-all -p build:*

sh:1:npm-run-all:未找到 npm ERR!代码 ELIFECYCLE npm 错误!系统调用产生 npm 错误!文件 sh npm 错误!errno ENOENT npm 错误!settl-me@1.3.0 构建:npm-run-all -p build:* npm 错误!产生 ENOENT npm 错误!npm 错误!在 settl-me@1.3.0 构建脚本中失败。npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。npm WARN 本地 package.json 存在,但缺少 node_modules,你的意思是要安装吗?

npm 错误!可以在以下位置找到此运行的完整日志:npm ERR!/root/.npm/_logs/2021-05-28T16_28_10_049Z-debug.log

[Container] 2021/05/28 16:28:10 命令未成功退出 npm run build exit status 1 [Container] 2021/05/28 16:28:10 阶段完成:BUILD State: FAILED [Container] 2021/05 /28 16:28:10 阶段上下文状态代码:COMMAND_EXECUTION_ERROR 消息:执行命令时出错:npm run build。原因:退出状态1

0 投票
3 回答
999 浏览

amazon-web-services - 推送到 ECR 的 buildspec.yml 抛出此错误“命令未成功退出 $(aws ecr get-login --no-include-email --region us-east-1)”

我正在学习使用 CodeBuild 将构建推送到 ECR 的代码管道。下面是我的 buildspec.yml 文件和 Codebuild 日志中的错误。谁能阐明我做错了什么?提前致谢。

构建规范.yml

版本:0.2

阶段:

预构建:

建造:

post_build:

工件:文件:imagedefinitions.json

错误日志: [容器] 2021/07/13 11:13:22 运行命令 aws --version aws-cli/2.1.38 Python/3.8.8 Linux/4.14.225-121.362.amzn1.x86_64 exec-env/AWS_ECS_EC2 exe/x86_64.ubuntu.20 提示/关闭

[容器] 2021/07/13 11:13:26 运行命令 $(aws ecr get-login --no-include-email --region us-east-1)

用法:aws [options] [ ...] [parameters] 要查看帮助文本,您可以运行:

aws 帮助 aws 帮助 aws 帮助

aws:错误:参数操作:无效的选择,有效的选择是:

批量检查层可用性 | 批量删除图像
批量获取图像 | 完成层上传
创建存储库 | 删除生命周期策略
删除注册表策略 | 删除存储库
删除存储库策略 | 描述图像扫描结果
描述图像 | 描述注册表
描述存储库| get-authorization-token
get-download-url-for-layer | 获取生命周期策略
获取生命周期策略预览 | 获取注册表策略
获取存储库策略 | 启动层上传
列表图像 | 资源标签列表
放图像 | put-image-scanning-configuration
put-image-tag-mutability | put-lifecycle-policy
put-registry-policy | put-replication-configuration
设置存储库策略 | 开始图像扫描
开始生命周期策略预览 | 标签资源
untag-resource | 上传层部分
获取登录密码 | 等待
帮助

[容器] 2021/07/13 11:13:26 命令未成功退出 $(aws ecr get-login --no-include-email --region us-east-1) 退出状态 252 [容器] 2021/07 /13 11:13:26 阶段完成:PRE_BUILD 状态:失败 [容器] 2021/07/13 11:13:26 阶段上下文状态代码:COMMAND_EXECUTION_ERROR 消息:执行命令时出错:$(aws ecr get-login --no -include-email --region us-east-1)。原因:退出状态252

0 投票
0 回答
105 浏览

aws-codebuild - 在 codebuild 中运行并行构建

我正在尝试使用批处理列表功能在代码构建中并行运行命令,但是,我无法让它按预期工作。这些命令是按顺序执行的,而不是并行执行的。下面是构建规范文件。

谁能指导我我做错了什么或我在这里错过了什么。

PS:这只是一个示例构建规范。