我通常根据构建工件的提交来命名它们。基于此文档,CODEBUILD_WEBHOOK_PREV_COMMIT
是我在AWS代码构建中寻找的内容
这是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
Build可以工作,但提交不会显示在最终的.car
名称中。我想知道为什么。
假设n°1:VAR
s需要明确来源
我尝试了以下操作,但没有太大成功
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的官方镜像maven:3.6.3-jdk-8
,而不是亚马逊的通用构建镜像。VAR
是否可用于自定义图像?我找不到任何明确的迹象表明他们不是。
我为此损失了整个下午,对于任何带着同样问题来这里的人来说,以下是我解决问题的方法:
首先,我把printenv
放在命令中,看看发生了什么,$CODEBUILD_WEBHOOK_PREV_COMMIT
env变量完全丢失了。但是您可以使用$CODEBUILD_RESOLVED_SOURCE_VERSION
,它就在那里!