【问题标题】:AWS Code Build: environment variables not found during CI jobsAWS 代码构建:CI 作业期间未找到环境变量
【发布时间】:2020-08-18 22:12:18
【问题描述】:

我通常根据构建它们的提交来命名工件。 基于this documentationCODEBUILD_WEBHOOK_PREV_COMMIT是我在AWS Code Build中寻找的东西

这里是buildspec.yml

phases:
  install: 
    commands:
      - apt-get update -y
  build:
    commands:
      - export $CODEBUILD_WEBHOOK_PREV_COMMIT
      - echo Entered the build phase...
      - echo Build started on `date`
      - mvn clean install -Dmaven.test.skip=true
      - for f in ./target/*.car;do mv -- "$f" $(echo $f | sed -E "s/.car$/_${CODEBUILD_WEBHOOK_PREV_COMMIT}.car/") ;done

artifacts:
  files:
    - ./target/*.car

构建工作,但 commit 未显示在最终的 .car 名称中。我想了解为什么。

假设 n°1:VARs 需要明确来源

我尝试了以下但没有成功

env: 
  variable: 
    - COMMIT="${CODEBUILD_WEBHOOK_PREV_COMMIT}"

phases:
  install: 
    commands:
      - apt-get update -y
  build:
    commands:
      - echo Entered the build phase...
      - echo Build started on `date`
      - mvn clean install -Dmaven.test.skip=true
      - carpath=./*_CA/target/*.car
      - for f in $carpath;do mv -- "$f" $(echo $f | sed -E "s/.car$/_${COMMIT}.car/") ;done

VARs 仅适用于 AWS 默认构建容器

我使用的是Maven's official imagemaven:3.6.3-jdk-8,而不是亚马逊的通用构建映像。 VARs 是否可用于自定义图像?我找不到任何明确的迹象表明它们不是。

【问题讨论】:

  • 您解决了吗?我遇到了同样的问题,我不知道为什么它不起作用。
  • 很遗憾,此迁移项目已被客户推迟。从那以后就没有太多的机会去工作了。我会尽快更新它(天知道什么时候......)
  • 嘿,所以我在写完初步评论后就想通了。我将printenv 放入命令中以查看发生了什么,而$CODEBUILD_WEBHOOK_PREV_COMMIT 完全丢失了。改用$CODEBUILD_RESOLVED_SOURCE_VERSION,就在那里!

标签: amazon-web-services continuous-integration environment-variables aws-codepipeline aws-codecommit


【解决方案1】:

我在这个问题上迷失了整个下午,对于任何来到这里遇到同样问题的人,我是这样解决的:

首先,我将printenv 放入命令中以查看发生了什么,而$CODEBUILD_WEBHOOK_PREV_COMMIT env 变量完全丢失了。但是您可以改用$CODEBUILD_RESOLVED_SOURCE_VERSION,它就在那里!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 2017-10-04
    • 2013-08-14
    • 2021-01-25
    • 2020-11-22
    • 2021-07-28
    相关资源
    最近更新 更多