我通常根据构建工件的提交来命名工件。
基于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
构建工作正常,但提交未显示在最终的.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
是否可用于自定义图像?我找不到任何明确的迹象表明它们不是。
最佳答案
我为此浪费了整个下午的时间,对于任何遇到同样问题的人来说,以下是我的解决方法:
首先,我将 printenv
放入命令中以查看发生了什么,并且 $CODEBUILD_WEBHOOK_PREV_COMMIT
env 变量完全丢失。但您可以使用 $CODEBUILD_RESOLVED_SOURCE_VERSION
来代替,它就在那里!
关于amazon-web-services - AWS 代码构建 : environment variables not found during CI jobs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61593006/