问题标签 [aws-codebuild]

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 回答
2539 浏览

logging - 如何通过电子邮件发送 Cloudwatch 日志

我正在使用aws codebuildaws codepipeline

如果 aws codebuild 阶段失败,我想通过电子邮件发送详细信息。

是否可以通过电子邮件发送 cloudwatch 日志?

0 投票
1 回答
1360 浏览

aws-lambda - 从 CodePipeline 调用的 AWS CodeBuild 会产生无法用于 AWS Lambda 的伪影

我想自动部署用 java 开发的 AWS Lambda。为此,我创建了 CodePipeline,它在git push命令上触发到 CodeCommit 存储库。CodePipeline 的下一步是 CodeBuild 项目。CodeBuild 使用以下 buildspec.yml 文件:

当手动运行 CodeBuild 项目时,它会将 jar 文件上传到 s3 存储桶。这个 jar 文件可以毫无问题地用于更新 lambda,并且一切都按预期工作。但如果 CodeBuild 是通过 CodePipeline 运行的,则结果是包装在 zip 中的 jar 文件。由于这个 zip 不能用于更新 lambda 函数,我不确定我应该在这里做什么,因为 CodePipeline 会覆盖 CodeBuild 项目的任何打包集。

想法是 CodePipeline 触发 CodeBuild 生成输出,附加 lambda 将采用该输出并使用它更新 lambda 函数。从 CodePipeline 调用的 CodeBuild 的输出是否有可能是 jar 而不是 zip ?如果没有,那我应该在这里做什么?

任何帮助表示赞赏。

0 投票
2 回答
7503 浏览

amazon-web-services - CodePipeline 构建规范和多个构建操作

一个简单的构建规范,例如:

当我在构建阶段执行一项操作时工作正常。但是如果我想有更多的构建操作,例如:我想并行构建我的 api 服务器和前端文件。我该如何建模?

更新

在 CodePipeline 中,我可以创建并行运行的操作,如下所示,这是如何在 buildspec 中建模的?还是不可能?

在此处输入图像描述

0 投票
1 回答
4707 浏览

amazon-s3 - 如何向基本 S3 CodeBuild 部署添加回滚功能

我已按照此说明在 aws 中获得了一个非常基本的 ci 工作流程。它完美无缺,但我想要一个额外的功能,回滚。首先我虽然它可以“开箱即用”,但在我的情况下,如果我在 CodeBuild 中选择我想要回滚到的上一个作业并点击“重试”,我会收到以下错误消息:“错误使用工件类型 CodePipelines 时必须设置 ArtifactsOverride。我还尝试使用管道历史页面再次重新运行整个管道,但它只是一个没有任何功能的构建列表。

我的问题是:如何在我的工作流程中添加回滚功能。它不必在同一个管道中等。但它不应该触及 git。

0 投票
3 回答
7150 浏览

amazon-web-services - 代码部署到 S3

我在 S3 存储桶中有一个站点,配置为用于 Web 访问,aws s3 sync每次推送特定的 git 存储库时我都会运行一个命令(我目前正在使用 Gitlab)。

因此,如果我推送到stable分支,Gitlab 运行器会执行npm start build构建站点的命令,然后aws s3 sync同步到特定的存储桶。

我想迁移到 CodeCommit 并使用纯 AWS 工具来做同样的事情。


到目前为止,我能够成功设置存储库,创建用于构建工件的CodeBuild,并且工件被存储(未部署)到 S3 存储桶。不同之处在于我无法将其部署到存储桶的根文件夹而不是子文件夹,似乎该过程不是为此而设计的。由于 Web 访问的配置方式,我需要它位于根文件夹中。

对于部署过程,我查看了CodeDeploy,但它实际上并没有让我部署到 S3 存储桶,它只使用存储桶作为部署到 EC2 实例的中介。到目前为止,我觉得CodeDeploy仅对涉及 EC2 的部署有用。

本教程与我的要求相似,使用CodePipelineCodeBuild,但部署步骤实际上是一个命令(与我在 Gitlab 上所做的相同),并且CodePipelineaws s3 sync上的实际部署步骤被禁用。

我正在寻找一种解决方案,其中涉及使用为此特定目的而制作的 AWS 功能,但我找不到任何解决方案。

我也知道LambCI,但对我来说看起来像CodePipeline / CodeBuild正在做的事情,存储工件(不部署到存储桶的根文件夹)。另外,我正在寻找一个不需要我学习或部署新配置文件(AWS 配置文件之外)的选项。

AWS 功能的当前状态是否可以做到这一点?

0 投票
1 回答
1622 浏览

continuous-integration - 尽管测试用例失败,AWS CodeBuild 仍将构建确定为成功

我是 AWS CodeBuild 的新手。我正在尝试使用 CodeBuild 运行一些 cucumber-js 测试用例。执行测试后,我会在控制台和日志 (CloudWatch) 中打印出测试用例的结果。

我观察到的是,无论测试结果如何,buildStatus 始终显示为成功,并且在日志中显示“阶段完成:构建成功:真”。这是不希望的,因为我需要构建阶段失败。

这是日志文件输出的一部分:

46 个场景(4 个失败,42 个通过) 317 个步骤(4 个失败,4 个跳过,309 个通过) 0m24.718s 要杀死进程测试已完成

[容器]阶段完成:构建成功:真

如您所见,构建显示成功:尽管某些测试失败,但确实如此。

我没有使用 buildspec.yml,因为它是可选的。我使用 shell 脚本来做这样的测试:

节点 ./node_modules/.bin/cucumber-js --format-options '{"colorsEnabled":false}'

任何帮助将不胜感激..谢谢!

0 投票
1 回答
212 浏览

amazon-web-services - 在我的 AWS,codebuild 构建中,当我尝试在我的 yml 文件中指定我的端点时,我收到一个错误“没有指定工件文件”。

我在 stackoverflow 中搜索和搜索并找到了一些建议,但仍然没有成功。我在 AWS Codebuild 中的构建过程运行并给了我一个成功的输出,但在日志中显示 -> '未指定工件文件',因此没有文件被复制到我的 S3 中。任何人都可以帮我解决这个问题。在这里我分享我的 yml 设置:

0 投票
1 回答
4403 浏览

amazon-web-services - CloudFormation 设置 CodePipeline/CodeBuild 以部署 SAM 应用程序

我已成功设置 CodePipeline 和 CodeBuild 来部署我的 SAM 应用程序。但现在我想将其转换为 CloudFormation。我该怎么做呢?我按照这里的步骤http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html

我被困在 CloudFormation 模板的 CodeBuild 部分......

0 投票
1 回答
7438 浏览

amazon-web-services - CodeBuild 无法创建日志

我的 CodeBuild 服务具有以下角色,通过 CloudFormation 生成

有什么问题

为什么 CodeBuild 不能写入日志?

服务角色 arn:aws:iam::598xxx:role/skynet-codebuild 不允许 AWS CodeBuild 为构建 arn:aws:codebuild:ap-southeast-1:598xxx:build/skynet-lambda 创建 Amazon CloudWatch Logs 日志流: 544xxx-aa88945844fa。错误消息:用户:arn:aws:sts::598xxx:assumed-role/skynet-codebuild/AWSCodeBuild-544xxx-aa88945844fa 无权执行:logs:CreateLogStream on resource:arn:aws:logs:ap-southeast-1 :598xxx:log-group:/aws/codebuild/skynet-lambda:log-stream:544xxx-aa88945844fa。服务角色 arn:aws:iam::598xxx:role/skynet-codebuild 不允许 AWS CodeBuild 为构建 arn:aws:codebuild:ap-southeast-1:598xxx:build/skynet-lambda 创建 Amazon CloudWatch Logs 日志流: 544xxx-aa88945844fa。错误消息:用户:arn:aws:sts::598xxx:

更新:完整的 cloudformation 模板供参考

0 投票
2 回答
3881 浏览

amazon-web-services - 具有无服务器框架的 AWS codeBuild/codePipeline

我正在尝试为我的应用程序自动化部署管道。这是自动化架构,我想出了: 自动化架构

如您所见,我正在使用codePipelinecodeBuild来自动化我的部署。我的后端基于无服务器框架sls deploy,它在触发命令时部署 lambda 函数。这就是原因,我没有使用codeDeploy来做传统的部署。buildspec.yml文件如下所示:

现在,我有3 个关于CodeBuildServerless的问题:

问题1:该命令sls deploy依赖于一个名为的文件,该文件config.yml包含数据库密码等机密。该文件不会被检入 git。您认为包含config.yml在 codeBuild 中的最佳方式是什么?

问题 2: 如果我们必须使用codeDeploy部署传统的 EC2 应用程序,可以使用 AWS 完成回滚。在 serverless 的情况下,我们不使用codeDeploy并且 serverless 也支持回滚功能。我们如何在codePipeline中利用无服务器回滚?

问题 3:Pull Request发生时触发 codePipeline 。我看到一些帖子说,codePipeline 不支持。但是这些帖子是去年的,codePipeline 现在是否支持 Pull Request?

破解答案(不正确,但有效。需要您提供更好的答案。)

答案 1:config.yml文件可以保存在私有S3 存储桶中,并且可以作为设置的一部分拉到 codeBuild,pre-build或者我们可以将所有机密添加到 codeBuild 的 Env 变量。我不喜欢第二种选择,因为我希望在所有环境中保持一致。这个问题有更好的解决方案吗?

答案 2:我想不出有什么破解之法。期待你的答案。

答案 3:我看到一些博客文章使用[APIGateway + Lambda + S3]来触发codePipeline以进行拉取请求。但我觉得,这个功能必须作为开箱即用的功能提供。此功能的 codePipeline 是否有任何更新?