我通常根据构建的提交来命名工件。
基于this documentation,CODEBUILD_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
的最终名称中。我想知道为什么。
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
是否可用于自定义图像?我找不到明显的迹象表明它们不是。
答案 0 :(得分:1)
我在整个下午都为此迷失了方向,对于任何来这里遇到同样问题的人,这是我的解决方法:
首先,我将printenv
放入命令中以查看发生了什么,$CODEBUILD_WEBHOOK_PREV_COMMIT
env变量完全丢失了。但是您可以改用$CODEBUILD_RESOLVED_SOURCE_VERSION
,在那里!