问题标签 [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.
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?
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
amazon-web-services - AWS CodePipeline - 如何创建变更集跨账户
我想在账户 A 中运行一个代码管道,为账户 B 中的堆栈创建一个变更集。有没有办法做到这一点?
Obs.:A和B在同一个root帐户下
谢谢
aws-lambda - 在 CodePipeline 阶段或操作失败时调用 Lambda 函数
当 CodePipeline 创建生产资产时,我们需要提交变更请求。
在进入生产阶段时打开 RFC 并在成功的生产构建/测试时关闭 RFC 很容易通过触发 Lambdas。当 CodePipeline 阶段或测试操作失败时,问题就出现了。
当 CodePipeline 阶段失败时如何触发 Lambda?同样,当 CodePipeline 测试操作失败时如何触发 Lambda?
php - 在 Elastic Beanstalk 中安装 Wordpress 时如何解决 HTTP 500 错误?
使用 Codepipeline 和 Github 在 AWS Elastic Beanstalk 中安装 Wordpress 时出现 HTTP 500 错误。
我正在使用一个新下载的 WordPress,在配置文件中做了一些细微的更改,我用一个测试 index.php 文件测试了 Beanstalk,它工作正常,当我用 Wordpress 文件替换文件时出现错误。
node.js - .ebextensions 与 CodePipeline 和 Elastic Beanstalk
我开始使用托管在 github 上的 node.js 应用程序开发我的第一个 CodePipeline。我想创建如下简单的管道:
- Github repo 触发管道
- 测试环境(Elastic Beanstalk 应用程序)由 S3 .zip 文件构建
- 测试环境运行
npm test
和npm lint
- 如果一切正常,则构建 QA env(另一个 EB 应用程序)
对于上面的管道,我在.config
目录下创建了文件.ebextensions
:
- 我想
npm install --production
用于 QA 和 PROD 环境,但似乎 EC2 找不到节点或 npm。我检查了临时文件夹中默认触发的日志和 EC2npm 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
- 是否可以在没有詹金斯的情况下运行单元测试和 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 的示例。提前致谢!
amazon-web-services - AWS codebuild 没有传递环境变量?
我们在代码构建过程中需要环境变量。Codebuild 允许您在高级设置中设置环境变量,我已经这样做了。
现在,当codebuild运行时,它似乎并没有将这些环境变量向下传递。
我打印出process.env & 这里是我得到的:
没有我的环境变量。
我设置了 DB_PASS、DB_USER、DB_NAME、DB_HOST - 这些都没有打印出来。
我尝试创建一个新的代码构建并添加环境变量,但没有运气。
请注意,它正在构建一个 docker 容器,当我尝试连接到我的 postgres 数据库时它失败了,因为没有传递环境变量(密码、主机等)
编辑
在我的 Dockerfile 中,我正在运行以下 bash 文件:
这样做是运行 knex 迁移(一个 js 脚本)——如果失败,我们将回滚迁移并退出构建。
shell - 如何在 AWS Codepipeline 中运行 shell 脚本?
我在 Github 中托管了一个 PHP 项目,我尝试使用 AWS Codepipeline 和 ElasticBeanstalk 设置持续集成。
到目前为止,我能够从 github 获取存储库内容并将其部署到 ElasticBeanstalk。但我需要在部署之前运行一个 shell 脚本,该脚本将更新 config.json 文件并更新环境变量。
这就是我试图在管道中完成的事情:
- 从 Github 获取项目文件(完成)
- 运行将更新项目中的 config.json 文件的 shell 脚本
- 运行将在 ElasticBeanstalk 中设置环境变量的 shell 脚本
- 部署到 ElasticBeanstalk(完成)
关于如何让这个工作的任何想法?
谢谢
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 来做到这一点?这里的最佳做法是什么?
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。
如果需要,我可以提供更多细节。