continuous-integration - AWS Codepipeline 不更新我的 ECS 集群

标签 continuous-integration aws-cloudformation devops continuous-delivery aws-codepipeline

我使用 CloudFormation 创建了两个堆栈。 第一个堆栈使用所需资源创建一个集群:

  • 负载均衡器
  • 自动扩缩组
  • 目标群体
  • 听众
  • EC2 实例
  • 任务定义和服务
  • 等等...

第二个堆栈用于创建 CodePipeline 堆栈,以配置持续交付管道。

流程应如下所示:

  • 用户将代码推送到 Github
  • CodePipeline 被触发,执行以下阶段:
    • Source Stage:从 Github 提取代码
    • 构建阶段:构建镜像并将其推送到 ECR
    • 部署阶段:在上述第一个 CloudFormation 堆栈上触发 STACK_UPDATE
  • ECS 集群服务通过 CloudFormation 堆栈更新进行更新

一切正常,但我遇到了问题。我正在更新代码,应用程序似乎正在使用旧代码运行,我的意思是,管道以绿色运行,但每当我访问负载均衡器 URL 时,代码都不会更新。我想这是因为 CloudFormation 脚本没有改变,但我的代码确实改变了!

有什么办法可以强制 CloudFormation 堆栈更新吗?或者我应该在部署阶段部署到 ECS Cluster 而不是 CloudFormation ?

最佳答案

据我所知,您缺少部署应用程序阶段。您似乎只更新基础设施,而没有在部署阶段部署应用程序代码?

我习惯如何设置:

  • codepipeline 和基础设施模板与代码一起使用
  • 代码推送触发代码管道
  • 第一阶段:从 codecommit(或者在您的情况下为 github)查看代码
  • (可选)codepipeline 更新自身以处理 codepipeline 模板的更改
  • 构建阶段:构建镜像并推送至 ECR
  • 部署基础设施阶段:触发基础设施堆栈的 cloudformation 堆栈更新
  • 部署应用阶段:将应用程序代码部署到基础架构(您似乎缺少的内容)

在 cloudformation 模板中部署 ECS 应用程序阶段将如下所示:

...
Stages:
    - Name: deploy-app
      Actions:
        - Name: Deploy
          ActionTypeId:
            Category: Deploy
            Owner: AWS
            Provider: ECS
            Version: 1
          InputArtifacts:
            - Name: build-output-artifact
          Configuration:
            ClusterName: 'my-cluster'
            ServiceName: 'my-service'
            FileName: 'imagedefinitions.json' (optional)

在构建阶段,将镜像推送到 ECR 后,将 ECR url 写入 ECS imagedefinitions.json。 imagedefinitions.json 必须是构建阶段的输出工件和部署应用阶段的输入工件。

更多信息:

关于continuous-integration - AWS Codepipeline 不更新我的 ECS 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52099682/

相关文章:

continuous-integration - 将数组作为输入传递给 Azure DevOps YAML 任务

ios - Jenkins 的 Xcode 插件//复制 Pods 资源失败

amazon-web-services - 使用图像响应卡时出现 AWS LexV2 CDK/CloudFormation 错误

docker swarm 模式多个服务同一个端口

amazon-web-services - 无法将 EFS 访问点安装到 ECS 卷

performance - 无法在 Bamboo 中自动化 Jmeter 负载测试

GitHub Action 定期更新工具链版本?

amazon-web-services - AWS - 如何使用 CDK/CloudFormation 将服务链接角色传递给自动缩放组?

amazon-web-services - AWS Cloudformation 创建堆栈模板错误

git - 停止将代码直接 checkin VSTS 中的 master 分支的权限