我试图在我的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")会的。然后它就像一个魅力

07-24 09:38
查看更多