代码之家  ›  专栏  ›  技术社区  ›  Bostone

Gradle无法从AWS CodePipeline获取CODEBUILD\u SRC\u DIR\u source1变量

  •  0
  • Bostone  · 技术社区  · 6 年前

    我正在尝试在代码管道构建中使用多个CodeCommit源。我在CodeBuild中定义了一个指向CodeCommit中的项目的辅助源代码,并为其分配了“secu 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.
    

    我试着用下面的语法来强制它 buildspec.yml

    phases:
      build:
        commands:
          - ./gradlew -i -d -S build -DCODEBUILD_SRC_DIR_sec_proj=$CODEBUILD_SRC_DIR_sec_proj
    

    您的主要源是在source属性下定义的。所有其他 源称为辅助源,并显示在 次要来源。所有辅助源都安装在自己的系统中 目录。此目录存储在内置环境中 变量CODEBUILD\u SRC\u DIR\u sourceIdentifer。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Bostone    6 年前

    这是解决办法。结果是 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") 威尔。然后它就像一个符咒

        2
  •  0
  •   Matthew Sainsbury Thanga    6 年前

    查看您的代码:

    System.getProperty("CODEBUILD_SRC_DIR_sec_proj", CODEBUILD_SRC_DIR_sec_proj)

    方法签名:

    System.getProperty(String key, String defaultValue)

    我认为错误消息实际上返回到变量 CODEBUILD_SRC_DIR_sec_proj 可能没有定义。(也许你在别的地方定义过,我不确定)

    copy {
        from System.getProperty("CODEBUILD_SRC_DIR_sec_proj")
        into "$buildDir/sec_proj"
    }