Gradle не может получить переменную CODEBUILD_SRC_DIR_source1 из AWS CodePipeline - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь использовать несколько источников CodeCommit в моей сборке CodePipeline.Я определил вторичный источник, указывающий на проект в CodeCommit в CodeBuild, и назначил ему идентификатор «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_sourceIdentifer.

похоже, я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Глядя на ваш код:

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"
}
0 голосов
/ 15 сентября 2018

Вот решение.Оказывается, 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") будет.Тогда это работает как шарм

...