首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CommitID作为一个变量贯穿整个CodePipeline - AWS

CommitID作为一个变量贯穿整个CodePipeline - AWS
EN

Stack Overflow用户
提问于 2018-12-04 10:59:13
回答 3查看 1.1K关注 0票数 4

我有一个管道,它创建对接图像并将其推送到ECR。因为我想使用AWS提供的构建环境,所以我使用了两个构建阶段。

这条管道共有三个阶段。

  1. 从GitHub : source获取源代码
  2. 安装依赖项并创建一个.war文件: Build : aws/codebuild/java:openjdk-9
  3. 构建码头映像并将其推送到ECR : Build : aws/codebuild/ docker :17.09.0

我想用提交ID (通常是CODEBUILD_RESOLVED_SOURCE_VERSION )标记对接者的图像。但是,我注意到,这个变量仅在我的第二阶段可用,第二阶段紧接源代码之后。

我发现的最坏的情况是将这个变量写入第二阶段的文件中,并将该文件包含在工件中,这是第三阶段的输入。

是否有更好的方法来使用这个在我的第三阶段或整个管道?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-06 23:46:27

我设法用jq和海绵做了一些事情,如这个文件buildspec.yaml所示。

我在每次提交时修改我的config.json文件,并将其传递到下一阶段。

票数 1
EN

Stack Overflow用户

发布于 2018-12-11 19:48:03

您能否将提交ID写入位于CodePipeline工件中的WAR文件旁边的文件中?

还有几个相关的想法:

  • CodeBuild可以在CodePipeline中配置为具有多个输入工件,因此我假设CODEBUILD_RESOLVED_SOURCE_VERSION引用了主要工件。我不知道如何将提交ID概括为第三个操作(发布到ECR),因为扇入(具有不同提交id的多个源)可以在两个CodeBuild操作中发生。
  • 通过提交ID进行标记意味着多个管道执行可以生成一个具有相同标记的图像。理想情况下,我希望每个管道执行都是孤立的,这样我就不必担心通过并发管道执行或以后使用不同的依赖关系闭包来更改标记。
票数 2
EN

Stack Overflow用户

发布于 2018-12-10 21:36:14

我使用的是codepipeline + jq的组合。这不是最好的方法,但这是我到目前为止最好的方法。

代码语言:javascript
复制
commit=$(aws codepipeline get-pipeline-state --name PIPELINE_NAME | jq '.stageStates[0].actionStates[0].currentRevision.revisionId' | tr -d '"'))

然后用新标签推送对接者图像。您需要首先安装jq,如果您不喜欢jq,可以自己解析响应。

这“可能”是另一个问题的副本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53611417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档