问题标签 [aws-codepipeline]

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

amazon-web-services - 如何使用 aws code commit + aws code build + elastic beanstalk 设置 aws codepipeline?没有 jenkins、teamcity 或任何其他 3rd 方工具?

如何在不使用 jenkins、teamcity 或任何其他 3rd 方工具的情况下使用 aws code commit + aws code build + elastic beanstalk 设置 aws codepipeline?

0 投票
1 回答
4281 浏览

amazon-web-services - 使用多个 UserParameters 从 CodePipeline 调用 Lambda

本教程展示了如何通过传递单个参数的 CodePipeline 调用 Lambda:

http://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-lambda-integration.html

我已经构建了一个需要获取 2 个参数的 slackhook lambda:

  • webhook_url
  • 信息

通过 CodePipeline 编辑器传入 JSON 会导致 JSON 块以“ ”形式发送,因此无法直接解析。

传入的用户参数:

事件负载中的用户参数

当尝试像这样直接在 CLoudFormation 中应用多个 UserParameters 时:

创建错误 - 配置只能包含简单的对象或字符串。

任何关于如何将多个 UserParameters 从 CloudFormation 模板传递到 Lambda 的猜测都将不胜感激。

这是供参考的 lambda 代码: https ://github.com/byu-oit-appdev/aws-codepipeline-lambda-slack-webhook

0 投票
1 回答
373 浏览

amazon-web-services - AWS CodePipeline - 如何创建变更集跨账户

我想在账户 A 中运行一个代码管道,为账户 B 中的堆栈创建一个变更集。有没有办法做到这一点?

Obs.:A和B在同一个root帐户下

谢谢

0 投票
3 回答
2527 浏览

aws-lambda - 在 CodePipeline 阶段或操作失败时调用 Lambda 函数

当 CodePipeline 创建生产资产时,我们需要提交变更请求。

在进入生产阶段时打开 RFC 并在成功的生产构建/测试时关闭 RFC 很容易通过触发 Lambdas。当 CodePipeline 阶段或测试操作失败时,问题就出现了。

当 CodePipeline 阶段失败时如何触发 Lambda?同样,当 CodePipeline 测试操作失败时如何触发 Lambda?

云形成示例

0 投票
1 回答
238 浏览

php - 在 Elastic Beanstalk 中安装 Wordpress 时如何解决 HTTP 500 错误?

使用 Codepipeline 和 Github 在 AWS Elastic Beanstalk 中安装 Wordpress 时出现 HTTP 500 错误。

我正在使用一个新下载的 WordPress,在配置文件中做了一些细微的更改,我用一个测试 index.php 文件测试了 Beanstalk,它工作正常,当我用 Wordpress 文件替换文件时出现错误。

0 投票
2 回答
1209 浏览

node.js - .ebextensions 与 CodePipeline 和 Elastic Beanstalk

我开始使用托管在 github 上的 node.js 应用程序开发我的第一个 CodePipeline。我想创建如下简单的管道:

  1. Github repo 触发管道
  2. 测试环境(Elastic Beanstalk 应用程序)由 S3 .zip 文件构建
  3. 测试环境运行npm testnpm lint
  4. 如果一切正常,则构建 QA env(另一个 EB 应用程序)

对于上面的管道,我在.config目录下创建了文件.ebextensions

  1. 我想npm install --production用于 QA 和 PROD 环境,但似乎 EC2 找不到节点或 npm。我检查了临时文件夹中默认触发的日志和 EC2 npm install,然后它在我的第一个脚本上失败并且应用程序目录始终为空。

container_commands: install-dev: command: "npm install" test: "[ \"$NODE_ENV\" = \"TEST\" ]" ignoreErrors: false install-prod: command: "npm install --production" test: "[ \"$NODE_ENV\" != \"TEST\" ]" ignoreErrors: false

  1. 是否可以在没有詹金斯的情况下运行单元测试和 linting?

container_commands: lint: command: "npm run lint" test: "[ \"$NODE_ENV\" = \"TEST\" ]" ignoreErrors: false test: command: "npm run test" test: "[ \"$NODE_ENV\" = \"TEST\" ]" ignoreErrors: false

NODE_ENV为每个 Elastic Beanstalk 实例设置。不管每次我的管道因为什么而失败时我会做什么npm is not recognized,但是如果我使用 node.js 运行 64 位 Amazon Linux 怎么可能呢?更重要的是,我在 AWS Docs 中找不到任何关于带有 node.js 的 CodePipeline 的示例。提前致谢!

0 投票
2 回答
2665 浏览

amazon-web-services - AWS codebuild 没有传递环境变量?

我们在代码构建过程中需要环境变量。Codebuild 允许您在高级设置中设置环境变量,我已经这样做了。

现在,当codebuild运行时,它似乎并没有将这些环境变量向下传递。

我打印出process.env & 这里是我得到的:

没有我的环境变量。

我设置了 DB_PASS、DB_USER、DB_NAME、DB_HOST - 这些都没有打印出来。

我尝试创建一个新的代码构建并添加环境变量,但没有运气。

请注意,它正在构建一个 docker 容器,当我尝试连接到我的 postgres 数据库时它失败了,因为没有传递环境变量(密码、主机等)

编辑

在我的 Dockerfile 中,我正在运行以下 bash 文件:

这样做是运行 knex 迁移(一个 js 脚本)——如果失败,我们将回滚迁移并退出构建。

0 投票
1 回答
4854 浏览

shell - 如何在 AWS Codepipeline 中运行 shell 脚本?

我在 Github 中托管了一个 PHP 项目,我尝试使用 AWS Codepipeline 和 ElasticBeanstalk 设置持续集成。

到目前为止,我能够从 github 获取存储库内容并将其部署到 ElasticBeanstalk。但我需要在部署之前运行一个 shell 脚本,该脚本将更新 config.json 文件并更新环境变量。

这就是我试图在管道中完成的事情:

  1. 从 Github 获取项目文件(完成)
  2. 运行将更新项目中的 config.json 文件的 shell 脚本
  3. 运行将在 ElasticBeanstalk 中设置环境变量的 shell 脚本
  4. 部署到 ElasticBeanstalk(完成)

关于如何让这个工作的任何想法?

谢谢

0 投票
2 回答
3845 浏览

amazon-web-services - 通过 Cloudformation、CodeBuild 和 CodePipeline 将 python 包部署到 AWS Lambda

我想为我的 AWS 基础设施和 AWS Lambda 函数设置 CI/CD 管道。这个想法是让一切都在代码中,版本控制和自动化。我只想到git push一个存储库并让 CodePipeline 从那里接管,更新我的基础设施,运行测试,如果成功,使用最新代码更新我的 Lambda 函数。

我的 CloudFormation 模板基于这个出色的示例。它看起来像这样:

所以我有一个包含 3 个阶段的 CodePipeline - Source,它从 CodeCommit 存储库中获取代码,PipelineDeploy如果需要,它会更新我的 CloudFormation 堆栈Build,它运行配置的 CodeBuild 项目。

我的 buildspec.yml 在这里:

它只是安装必要的库,通过 pytest 运行测试并创建一个部署 zip。这个 zip 文件然后是OutputArtifact阶段的Build,并存储在ArtifactsBucket. 但是,每次它都有一个唯一的名称(例如dfVV6Uh),这是有道理的,但我不知道如何在 LambdaFunction -> Properties -> Code -> S3Key 字段中引用它。

所以我的问题是,如何创建一个堆栈/管道,在完成所有步骤后,将最新版本部署到我的 AWS Lambda 函数?有没有办法使用 CodeDeploy 来做到这一点?这里的最佳做法是什么?

0 投票
1 回答
930 浏览

aws-code-deploy - CodeDeploy 在 DownloadBundle 中失败,说 Broken pipe @ io_write -

我正在使用 CloudFormation、CodePipeline、CodeDeploy 和 CodeCommit 将 Rails 应用程序部署到 EC2 实例。

构建堆栈后,CodePipeline 启动,第一次部署成功,没有问题,但之后的每个部署都在 DownloadBundle 步骤失败。如果我在 EC2 实例上重新启动 codedeploy-agent ,则下一次部署将成功,但以下部署将像以前一样失败。

在 AWS 仪表板中,CodeDeploy 抱怨“可用的健康实例太少”(错误代码:HEALTH_CONSTRAINTS)

在 CodeDeploy 的“查看事件”链接下,它显示:

这是 codedeploy-agent.log 的输出:

我见过其他人有类似的问题,但不是我在这里看到的具体问题。

我遇到的一些解决方案:

配置 cron 以定期重新启动 codedeploy 代理。# 重启代理不是一个实际的解决方案。

其他问题似乎与如何从 S3 或 GitHub 中提取代码有关。# 此部署使用 CodeCommit 而不是 S3 或 GitHub。

如果需要,我可以提供更多细节。