【问题标题】:Use two sources in an AWS-CodePipeline pipeline在 AWS-CodePipeline 管道中使用两个源
【发布时间】:2018-04-19 16:15:01
【问题描述】:

我有一个特定的案例,我不确定 AWS CodePipeline 是否可行,并且我没有通过谷歌搜索在文档和事件中找到任何有关它的信息......

所以我想知道我是否可以在管道中设置两个源(可以在同一阶段或不同阶段)。

这是我的用例:

  • 我希望我的管道在我的 s3 存储桶中的文件(特定对象)被修改时启动
  • 当此文件更改并触发管道时,我想克隆一个 codecommit 存储库,然后处理构建和其他阶段...
  • 另一方面,当我的 codecommit 存储库的 master 分支上存在提交时,我希望管道启动并构建我的源代码。
  • 因此,当更改来自 s3 或 codecommit 时,应该触发管道
  • 我不想在我的 codecommit 存储库中对 s3 文件进行版本控制,因为它应该被加密并由其他团队使用,而不是使用 git 存储库的开发团队
  • 每当我的管道启动时,无论是来自 s3 存储桶更改还是 codecommit 推送,我都应该从存储库中获取提交以用于构建目的...

我不知道我的目标规范是否明确,如果是,是否可以如上所述在管道中使用两个源操作以及如何实现?

提前谢谢你。

干杯, 尤金·吴

【问题讨论】:

    标签: amazon-web-services continuous-integration continuous-delivery aws-codepipeline


    【解决方案1】:

    是的。 AWS CodePipeline 可以有两个源。或者很多。这两个来源必须处于您的第一阶段。

    然后在您的构建阶段属性中,您需要告诉它您期待两个来源。

    然后告诉构建项目哪个是您的主要来源。这将是您希望构建项目执行代码构建的那个。

    从您的构建规范或您调用的任何脚本中,您可以通过引用访问源目录:

    • $CODEBUILD_SRC_DIR_SourceOutput1

    • $CODEBUILD_SRC_DIR_SourceOutput2

    只需将上面的 SourceOutputX 替换为您在源阶段调用的输出即可。

    我找到了以下链接,其中包含更多信息: https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html

    【讨论】:

    • 如果您没有在第二个 GitHub 存储库上看到 CodePipeline 触发器,请检查是否在存储库中创建了 GitHub Webhook。我发现这很困难。您用于向 AWS 进行身份验证的 GitHub 用户必须在您设置管道时添加的第二个存储库具有管理员权限
    【解决方案2】:

    是的,CodePipeline 允许在单个管道中执行多个源操作。任一源的更改都将触发管道执行。要知道的是,每个管道执行都会为这两个操作提取最新的源(不仅仅是一个触发管道执行的更改)。

    【讨论】:

    • 我可以这样继续吗?: - 创建我的第一个管道阶段:源 - 在该源阶段:使用我的第一个源创建一个源操作类型(比如说 s3 存储桶) - 创建第二个源与我的第二个源(codecommit 存储库)相同的源阶段的操作类型 - 然后创建构建阶段,它将使用最后一个输出工件 - 并遵循管道执行的其余部分的标准工作流程这可行吗?按什么顺序?
    • 是的,您可以将操作和阶段逐步添加到管道中,但要遵守两个约束:阶段不能为空,并且 CodePipeline 需要两个或更多阶段。
    • 我无法使用 CDK 在 codepipeline 中获得两个源代码...... build 只能看到主要源代码的内容。
    • 其中一个来源不能触发管道吗?
    • @jenson-button-event 是的,您必须在源操作中取消选中“启动源代码更改管道”
    猜你喜欢
    • 2019-09-16
    • 2020-11-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2020-10-18
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多