AWS Code Build:CI作业期间找不到环境变量

时间:2020-05-04 13:10:34

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

我通常根据构建的提交来命名工件。 基于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的最终名称中。我想知道为什么。

假设1:VAR必须明确来源

我尝试了以下方法,但没有成功

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

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

我使用的是Maven's official image maven:3.6.3-jdk-8而不是Amazon的通用构建映像。 VAR是否可用于自定义图像?我找不到明显的迹象表明它们不是。

1 个答案:

答案 0 :(得分:1)

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

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