我试图在我的CodePipeline版本中使用多个CodeCommit源。我在CodeBuild的CodeCommit中定义了一个指向项目的辅助源,并为其分配了“sec_proj”标识符。在我的主项目中,我有一个Gradle构建,其中包含以下代码
copy {
from System.getProperty("CODEBUILD_SRC_DIR_sec_proj", CODEBUILD_SRC_DIR_sec_proj)
into "$buildDir/sec_proj"
}
当我在本地环境中定义
CODEBUILD_SRC_DIR_sec_proj
时,所有内容均按预期运行,第二个项目中的文件被复制并构建完成。但是,当我尝试在管道中运行它时,出现以下错误:17:50:26.092 [ERROR]
[org.gradle.internal.buildevents.BuildExceptionReporter] Caused by:
groovy.lang.MissingPropertyException: Could not get unknown property
'CODEBUILD_SRC_DIR_sec_proj' for object of type
org.gradle.api.internal.file.copy.CopySpecWrapper_Decorated.
因此,很明显,我的gradle进程没有可用的变量。
我尝试在
buildspec.yml
中使用以下语法强制使用phases:
build:
commands:
- ./gradlew -i -d -S build -DCODEBUILD_SRC_DIR_sec_proj=$CODEBUILD_SRC_DIR_sec_proj
它以相同的消息失败。而且由于根据文档
好像我缺少什么?
最佳答案
这是解决方案。原来CODEBUILD_SRC_DIR_sec_proj
存在,但System.getProperty("CODEBUILD_SRC_DIR_sec_proj", CODEBUILD_SRC_DIR_sec_proj)
无法得到它。但是System.getProperties().getProperty("CODEBUILD_SRC_DIR_sec_proj")
会的。然后它就像一个魅力