У меня возникла проблема при запуске TeamCity с тремя шагами градации.Перекодировка избыточного исходного кода
Этапы: сборка, тестирование, загрузка архивов.
Gradle перекомпилирует исходный код при каждом выполнении шага (кажется, что он должен - каждый запуск выполняется отдельно) - который заканчивается в общей сложности минут. Когда задачи выполняются за один шаг, задача только минут.
Большая часть выхода журнала в «Test» и «Загрузить архив» шаги уточненного
:project-api:compileJava UP-TO-DATE
, но она все еще занимает 2 минуты, чтобы сделать все излишние действия в «шаге Загрузить», перед тем он действительно начинает загружать артефакты.
Я не могу просто настроить задачи «зависит от», потому что иногда «Загрузить» можно сделать без «теста» и т. Д. Я попытался увеличить resolutionStrategy.cacheChangingModulesFor, но кажется, что это не вариант.
Есть ли способ избежать этих накладных расходов из раскола выполнения задачи?
Я думаю, что проблема заключается в трех этапах сборки TC. Я считаю, что TC создает новый рабочий каталог для каждого шага сборки, эффективно отрицая любую поддержку инкрементной сборки, предоставляемую Gradle. Почему бы не объединиться в один шаг сборки TC, который выполняет все три задачи? По существу, создайте шаг сборки, аналогичный выполнению команды «gradle assemble test uploadArchives» из командной строки. –
@MarkVieira проблема Gradle не соответствует порядку исполнения в моем случае. У меня многопроектная градиентная сборка. Когда я выполняю эти команды за один шаг, я вижу, что содержимое некоторых модулей загружается до тестирования других модулей и так далее. Вероятно, это вызвано параллельным выполнением градиента. – AdamSkywalker
Это связано с тем, как Gradle создает график зависимости задачи. Если вы хотите, чтобы все протестированные проекты были загружены, вы можете сделать это через зависимости задач. Посмотрите на [эту тему] (http://forums.gradle.org/gradle/topics/how-do-i-run-tests-in-all-subprojects-before-uploading-any) для решения. –