【问题标题】:An AWS CI/CD Pipeline that allows manual deploy by commit允许通过提交手动部署的 AWS CI/CD 管道
【发布时间】:2022-02-07 21:02:15
【问题描述】:

背景

我想在 AWS 和 Github 中为使用 Amplify 的反应应用程序创建以下 CI/CD 流程:

  1. 单个 main 分支,具有短期功能分支和 PR 到 main
  2. 每个 PR 都会在 Amplify 中触发其自己的测试环境,具有自己的临时子域,当 PR 合并时,该子域会被拆除,如 here 所述。
  3. 合并到main 不会自动触发部署到生产环境。
  4. 相反,有一个单独的机制(网页、放大命令,甚至是基于 git 标签的触发器)用于从 main 手动选择提交以部署到生产环境。

问题

我不清楚是否...

  1. Amplify 已经内置了对此流程的支持(根据我阅读的文档,我认为答案是否定的,但我不确定)。
  2. AWS CodePipeline 中已经内置了对该流程的支持,或者如果可以在其中进行配置。
  3. 还有另一个 AWS 工具可以解决这个问题。

我正在寻找这些问题的答案,或解决这些问题的文档中的具体参考资料。

【问题讨论】:

    标签: amazon-web-services aws-amplify aws-codepipeline


    【解决方案1】:

    Amplify 的答案是是,是,是,部分

    (1) 单个主分支,具有短暂的功能分支和 PR 进入主分支。

    是的。 Feature branch deploys。可以定义您希望自动部署的分支模式,例如feature*/

    (2) 每个 PR 在 Amplify 中触发自己的测试环境,有自己的临时子域,

    是的。 Web Previews for PRs“Web 预览会将向您的 GitHub 存储库发出的每个拉取请求部署到一个唯一的预览 URL,该 URL 与您的主站点使用的 URL 完全不同。”

    (3) 合并到 main 中不会自动触发部署到生产环境。

    是的。 Disable automatic builds main

    (4) 相反,有一个单独的机制......用于手动选择从 main 提交以部署到生产。

    部分(仅HEAD?)。调用 StartJob API 以手动触发构建,例如 Lambda。作业类型RELEASE 使用指定分支的最新更改启动新作业。我不确定jobType: MANUALcommitId 是否从任意提交哈希开始工作。

    3+4 的另一种解决方法是发送至skip the build for an arbitrary commit。如果[skip-cd] 出现在提交消息的末尾,Amplify 将跳过构建。

    【讨论】:

      【解决方案2】:

      根据我的经验,我认为没有任何简单的方法可以满足您的要求。

      如果您使用的是 Gitlab,您可以尝试使用 Gitlab Review Apps 来实现(我之前尝试过使用一些脚本)

      【讨论】:

      • 以编程方式告诉 Amplify“接受这个提交 SHA 并将其发布到生产环境”怎么样?如果只是这样,我不介意编写脚本来完成其余的工作。
      • 关于您的问题 3 和 4,我使用 CodeBuild 来完成完整的 CI/CD 流程。您可以选择要拉取的分支或标签。所以在我看来,如果你想构建和部署特定的提交,你可以让它成为一个标签,编辑 CodeBuild 来拉那个分支并启动它
      【解决方案3】:
      • Amplify 已经内置了对此流程的支持(根据我阅读的文档,我认为答案是否定的,但我不确定)。

      如果有帮助,请查看以下链接:

      https://www.youtube.com/watch?v=QV2WS535nyI

      https://dev.to/rajandmr/deploying-react-app-using-aws-amplify-with-ci-cd-pipeline-setup-3lid

      • AWS CodePipeline 中已经内置了对该流程的支持,或者如果可以在其中进行配置。

      为此,您需要创建一个完整的自己的管道。是的,您可以配置您的管道。

      • 还有另一个 AWS 工具可以解决这个问题。

      如果您对 Jenkins 满意,那么 Jenkins 将帮助您实现这一目标。 您可以在 AWS EC2 中部署 Jenkins docker 并创建您的管道。您还可以使用 parameterised 选项来选择您的环境和 git 分支。

      【讨论】:

        猜你喜欢
        • 2020-01-10
        • 2021-11-30
        • 1970-01-01
        • 2020-04-11
        • 2023-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多