Задача очистки Gradle с bmuschko/gradle-docker-plugin

Я пытаюсь создать задачу Gradle, которая будет запускать очистку, сборку, а затем запускать задачу buildDockerImage из плагина bmuschko/gradle-docker-plugin. Я могу успешно запустить чистую задачу, задачу сборки и задачу buildDockerImage в отдельных командах в командной строке, но когда я пытаюсь создать одну задачу, которая выполняет все три, я получаю сообщение об ошибке:

.../config-server/build/docker/state/DockerBuildImage_Decorated (No such file or directory)

Похоже, что gradle-docker-plugin пытается добавить какой-то файл журнала в каталог /build/docker/state, но этот каталог отсутствует, когда я запускаю clean, build и buildDockerImage в одной задаче. Однако каталог присутствует, когда я запускаю их как отдельные команды в CLI.


Это работает

Если я не пытаюсь очистить... он работает правильно, и создается образ докера:

import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
task buildDockerImage(type: DockerBuildImage) {
  doFirst {
    copy {
      from 'src/main/resources/docker/Dockerfile'
      into 'build/libs'
    }
  }

  inputDir = project.file('build/libs')
  tag = alexFabian + "/" + jar.baseName
}

task myBuildDockerImage(type: Task, dependsOn: ['build' ,'buildDockerImage']) {
  buildDockerImage.mustRunAfter build
}

Мой каталог сборки выглядит так:

/classes
/dependency-cache
/docker
/libs
/reports
/resources
/test-results
/tmp 

Это не удается

Но когда я добавляю зависимость от «чистой» задачи... задача buildDockerImage завершается сбоем, потому что не может найти каталог /build/docker

import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
task buildDockerImage(type: DockerBuildImage) {
  doFirst {
    copy {
      from 'src/main/resources/docker/Dockerfile'
      into 'build/libs'
    }
  }

  inputDir = project.file('build/libs')
  tag = afabian + "/" + jar.baseName
}

task myBuildDockerImage(type: Task, dependsOn: ['clean', 'build' ,'buildDockerImage']) {
  build.mustRunAfter clean
  buildDockerImage.mustRunAfter build
}

Теперь мой каталог build/ выглядит так (отсутствует каталог /docker):

/classes
/dependency-cache
/libs
/reports
/resources
/test-results
/tmp

И я получаю эту ошибку:

Execution failed for task ':buildDockerImage'.
> .../config-server/build/docker/state/DockerBuildImage_Decorated (No such file or directory)

Я использовал Maven в прошлом и новичок в Gradle, поэтому мое текущее понимание ограничено.

  • Использование градиента (обертки): 2.11
  • Использование gradle-docker-plugin: com.bmuschko:gradle-docker-plugin:2.6.6

Любая помощь приветствуется!


person Fabian    schedule 09.03.2016    source источник
comment
Почему у вас есть doFirst в вашей задаче?   -  person RaGe    schedule 09.03.2016
comment
предположение: может быть, ваш раздел copy выполняется до задачи очистки? Попробуйте удалить doFirst из копии.   -  person RaGe    schedule 09.03.2016
comment
Хорошая мысль @RaGe. Я попытался удалить doFirst, но сборка завершилась неудачно, и я получил Directory .../build/docker specified for property 'inputDir' does not exist.. Поэтому я предполагаю, что без do сначала выполняется строка inputDir до завершения копирования.   -  person Fabian    schedule 29.03.2016


Ответы (1)


Это была ошибка в более ранней версии плагина bmuschko. Попробуйте с новой версией. Я столкнулся с той же проблемой в более старой версии ('com.bmuschko:gradle-docker-plugin:2.6.6'), но когда я обновился до версии: com.bmuschko:gradle-docker-plugin:2.6.8, она был исправлен.

https://github.com/bmuschko/gradle-docker-plugin/issues/168

person akshaya pandey    schedule 22.06.2016