问题标签 [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.
git - 来自 Bitbucket 和 CodePipeline 的 AWS S3 Gitpull
我正在使用 Bitbucket、Jenkins 和 AWS Elastic Beanstalk 设置一个持续交付系统。
我遇到了一个问题,我在本文之后设置的 Bitbucket 集成似乎只是构建了 master 分支。如果没有像 Github 和 AWS CodeCommit 这样的 Code Pipeline 的直接支持,我不确定如何使用特定分支(例如开发或发布候选分支)设置构建。
是否可以从存储库的 S3 zip 中指出应该在 CodePipeline 中构建哪个分支?
amazon-web-services - AWS 中 Docker 的简单持续交付过程
我正在使用 AWS Code Pipeline、Code Build 创建一个新的 Docker 容器并将其推送到 ECR。
我的应用程序是一个简单直接的基于单个容器的应用程序。有什么方法可以减少当前运行的容器并从 ECS 注册表中重新启动一个新容器(通过代码管道生成代码的输出)。
我尝试了使用 EC2 用户数据的 CloudFormation,一侧是自定义脚本,另一侧是使用 ECS 和任务定义的 CloudFormation(尚未成功)。我强烈认为必须有更明显和更简单的方法。
jenkins - 使用 AWS CodePipeline 与 Jenkins 的优缺点是什么
使用 AWS CodePipeline 与 Jenkins 的优缺点是什么?
我在互联网上看不到很多信息(除了https://stackshare.io/stackups/jenkins-vs-aws-codepipeline)。据我所见,它们如下:
AWS CodePipeline 专业人士
- 基于网络
- 与 AWS 集成
- 易于设置(基于网络)
AWS CodePipeline 缺点
- 不能用于在本地设置代码仓库
詹金斯专业人士
- 独立软件
- 可用于许多系统(AWS 除外)
- 许多设置选项(例如插件)
- 可用于在本地设置代码仓库
人们可以用来做出明智选择的任何其他主要差异?
github - 使用 CloudFormation 供应 GitHub 支持的 CodePipeline
我正在尝试使用 CloudFormation 创建我的 CodePipeline。我遇到的问题是,一旦它被创建并尝试运行,它立即给我错误:
操作配置无效 GitHub 存储库“ MyOrg / MyRepo ”或分支“ MyBranch ”不存在。
事实上,他们都这样做了。我可以单击编辑,选择我的源代码控制,连接到 GitHub,然后选择确切的存储库和分支,它工作正常。但是当直接在管道的 CloudFormation 配置之后启动管道时,它总是给我这个错误。
我aws codepipeline get-pipeline
使用 CloudFormation 使用新配置的管道导出了管道配置 JSON,然后在使用“连接到 GitHub”更新控制台中的配置后立即再次这样做,两者都是相同的。
amazon-web-services - AWS CodeBuild GetAuthorizationToken 失败
我正在尝试构建我的测试项目,但每次它都在pre_build中失败。我检查了错误日志,它说:
[容器] 2017/03/26 19:28:21 调用 GetAuthorizationToken 操作时发生错误(AccessDeniedException):用户:arn:aws:sts::074181202020:assumed-role/codebuild-Testing-project-service-role/ AWSCodeBuild 无权执行:ecr:GetAuthorizationToken on resource:*
我已尝试附加以下政策:
- IAMSelfManageServiceSpecificCredentials
- IAM完全访问
- AmazonS3ReadOnlyAccess
- CodeBuildPolicy-Testing-project-1490555003058
- IAM只读访问
- AWSCodeBuildAdminAccess
- IAM用户SSH密钥
- AWSCodeCommitFullAccess
- IAM完全访问
- AmazonS3FullAccess
- 管理员访问
- AWSElasticBeanstalkFullAccess
- AWSCodePipelineFullAccess
- WSCodeBuildAdminAccess
但它仍然给我同样的错误
任何帮助,将不胜感激!谢谢!
credentials - 在 AWS CodePipeline 中处理运行时间和构建时间密钥
我们正在处理为使用 AWS CodePipeline 构建并部署到 ECS 的应用程序提供构建时间和运行时间机密的问题。
最终,我们的愿景是为我们的每个应用程序创建一个通用管道,以实现以下目标:
- 访问完全分离
- app-a-pipeline 中的服务无法访问任何凭据或使用 app-b-pipeline 中使用的任何密钥,反之亦然
- 指定开发人员的秘密管理
- 只有负责 app-a 的开发人员才能读取和写入 app-a 的机密
以下是手头的问题:
- 我们的一些应用程序需要在构建时访问私有存储库以解决依赖关系例如,我们的 java 应用程序需要访问私有 maven 存储库才能成功构建
- 我们的一些应用程序在运行时需要数据库访问凭据 例如,运行我们应用程序的 servlet 容器需要一个包含凭据的 .xml 配置文件来查找和访问数据库
除了一些警告:
- 我们的代码库位于公共存储库中。我们不想通过将秘密的明文或密文放在我们的存储库中来暴露秘密
- 即使 ECR 访问受到限制,我们也不希望将运行时机密烘焙到在 CodeBuild 中创建的 Docker 映像中
- ECS 资源的 Cloudformation 模板及其关联的参数文件以明文形式驻留在公共存储库中。这消除了通过参数将运行时机密传递给 ECS Cloudformation 模板的可能性(据我了解)
我们已经考虑使用credstash等工具来帮助管理凭据。此解决方案要求 CodeBuild 和 ECS 任务实例都能够使用 AWS CLI。为了避免更换更多凭证,我们决定最好将特权角色分配给需要使用 AWS CLI 的实例。这样,CLI 可以从实例元数据中的角色推断凭据
鉴于这些限制,我们试图设计一种方法来管理我们的秘密。对于每个应用程序,我们创建一个管道。使用 Cloudformation 模板,我们创建:
4 资源:
- DynamoDB 凭证表
- KMS 凭证密钥
- ECR 回购
- CodePipeline(构建、部署等)
3个角色:
- CodeBuildRole 对 DynamoDB 凭证表的读取权限 使用 KMS 密钥解密权限 写入 ECR 存储库
- ECSTaskRole 对 DynamoDB 凭证表的读取权限 使用 KMS 密钥解密权限 从 ECR 存储库读取
- DeveloperRole 对 DynamoDB 凭证表的读写权限 使用 KMS 密钥加密和解密权限
CodePipeline 的 CodeBuild 步骤假定 CodeBuildRole 允许它从凭证表中读取构建时间机密。CodeBuild 然后构建项目并生成一个 Docker 映像,并将其推送到 ECR。最终,部署步骤使用 Cloudformation 模板和项目公共存储库中存在的随附参数文件创建 ECS 服务 ECS 任务定义包括假设 ECSTaskRole 以允许任务从凭证表中读取运行时机密并提取所需的图像来自 ECR。
我们目前提出的解决方案存在以下问题:
- 角色重
- 在我们的组织中,创建角色是一项特权行动。并非所有尝试创建上述管道的开发人员都有权创建必要的角色
- 手动假设 DeveloperRole:
- 就目前而言,开发人员需要手动承担 DeveloperRole。我们玩弄了将开发人员用户 ARN 列表作为参数传递给管道 Cloudformation 模板的想法。Cloudformation 是否具有将角色或策略分配给指定用户的机制?
有没有更完善的方法可以在 CodePipeline 中传递我们可能忽略的秘密,或者这是我们能得到的最好的方法?
amazon-web-services - AWS CodePipeline 以比单独运行步骤不太有用的格式向 S3 添加工件
我已经建立了一个 CodePipeline,最终目标是让核心服务驻留在 S3 上,作为其他管道依赖的私有 maven 存储库。当核心服务更新并推送到 AWS CodeCommit 时,管道应该运行、测试它,使用 maven docker 映像构建一个 jar,然后将生成的 jar 推送到 S3,其他应用程序可以根据需要对其进行访问。
不幸的是,虽然 CodeBuild 服务完全按照我的意愿工作,将 XYZCore.jar 上传到存储桶上的 /release,但自动化管道本身却没有。相反,它会上传到“XYZCorePipeline”文件夹,其中包含构建的输入和输出工件。输出工件本身是一个 zip 文件,它只是一个随机字符串。我检查了管道,它正确使用了服务,但管道特定的构建总是在那里输出,而 CodeBuild 服务的独立构建输出我想要的方式,让我可以利用诸如版本控制之类的东西。我修复设置以使两个版本匹配的最佳方法是什么?
aws-codepipeline - 我们可以在代码管道线中使用动态参数吗?
我想在配置代码管道时使用动态参数。就像在配置阶段时使用 ssn 参数存储变量一样。可能吗 ?
示例:我在代码管道中有一个云形成阶段,我想在运行管道之前更改我每次创建的堆栈名称,而不实际编辑管道。
amazon-web-services - AWS Codepipeline 与 Codebuild 在 ap-southeast-2 中失败在 eu-west-1 中工作
我执行命令
aws cloudformation deploy
在创建要在同一模板AWS::CodeBuild::Project
中的资源中使用的AWS::CodePipeline::Pipeline
资源的模板上但我收到以下错误:
CREATE_FAILED AWS::CloudFormation::Stack xyz Template format error: Unrecognized resource types: [AWS::CodeBuild::Project]
如果我将区域切换到已使用 CodeBuild 一段时间的 eu-west-1,则模板可以正常工作。我已经运行了很多次。
我已在 AWS 开发论坛上发帖,但还没有任何答案。
可以提供的任何帮助将不胜感激。谢谢。
amazon-web-services - 如何在 ElasticBeanstalk 中提取 AWS CodeBuild 的输出 zip?
我正在尝试让 AWS CodePipeline 与 S3 源、CodeBuild 和 Elastic Beanstalk(nodejs 环境)一起使用
我的问题在于 CodeBuild 和 Beanstalk 之间。
我让 CodeBuild 通过工件输出最终 nodeJS 应用程序的 zip 文件。这是我的 CodeBuild buildspec.yml
当我手动运行 CodeBuild 时,它成功地将 zip 放入 S3。当我运行 CodePipeline 时,它会将 /var/app/current 中的每个 Elastic Beanstalk 实例上的 zip 作为 app-api.zip
我想要的是它将 app-api.zip 提取为 /var/app/current。就像通过 Elastic Beanstalk 控制台界面进行手动部署一样。