Разрешаване на нестабилни версии на Android Gradle на Jenkins

Здравейте, настроих проекта си за Android на Jenkins, за да предоставя CI. Работи добре, провежда тестове на свързан телефон с Android. Тестовете се изпълняват на Android Test Framework, който разширява jUnit3.

За съжаление компилацията се маркира като неуспешна, ако има неуспешни тестове. Бих искал да мога да подобря това по два начина:

  1. Разрешаване на нестабилни компилации
  2. Да можеш да маркираш известни неуспешни тестове

За елемент 1 се опитах да добавя това към проекта build.gradle:

connectedCheck {
    ignoreFailures = true
}

Но ефект няма. Разглеждайки регистрационния файл за изграждане, разбрах, че действителната тестова задача се наричаconnectedInstrumentTest, но тази задача не е намерена:

connectedInstrumentTest {
    ignoreFailures = true
}

причини:

Не може да се намери методconnectedInstrumentTest() за аргументи [build_4ldpah0qgf0ukktofecsq41r98$_run_closure3@9cd826] на проект „:Playtime“.

Това ли ми липсва?

Благодаря

РЕДАКТИРАНЕ: Ето моя проект build.gradle, нищо особено:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
        testPackageName "com.bb.pt.test"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }
}

connectedCheck {
    ignoreFailures = true
}

Моите настройки на gradle в jenkins:

switches: --stacktrace --info
tasks: :pt:assembleDebug :pt:assembleTest :pt:connectedCheck

РЕДАКТИРАНЕ:

Създадох gradlew и опитах това. Същият изход. Не искам компилацията да е НЕУСПЕШНА, ако има неуспешни тестове:

:pt:connectedInstrumentTest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pt:connectedInstrumentTest'.
> There were failing tests. See the report at: file:///home/simon/WorkingCopies/bb/code/trunk/pt/pt/build/reports/instrumentTests/connected/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

Опитах се да квалифицирам името на задачата в build.gradle:

task connectedCheck {
    ignoreFailures = true
}

Но смята, че се опитвам да добавя нова задача, вместо да променя съществуващата.

FAILURE: Build failed with an exception.

* Where:
Build file '/home/simon/WorkingCopies/bb/code/trunk/pt/pt/build.gradle' line: 31

* What went wrong:
A problem occurred evaluating project ':pt'.
> Cannot add task ':pt:connectedCheck' as a task with that name already exists.

person sipickles    schedule 18.08.2013    source източник
comment
1. използвате някои свободни работни места, нали? 2. каква е вашата команда gradle? 3. опитвали ли сте gradle -debug ...?   -  person coffeebreaks    schedule 18.08.2013
comment
@coffeebreaks 1) не, само заданията, зададени от приставката за Android. 2) подробности за gradle, публикувани по-горе, 3) --debug изглежда не помогна, просто повече информация за други неща.   -  person sipickles    schedule 19.08.2013
comment
Съжалявам, това не отговаря на въпроса ви, но бих ви препоръчал да разгледате използването на Genymotion. Това е емулатор, който работи и всъщност е по-бърз от тестването на устройство. За съжаление моите компилации на Jenkin все още работят въз основа на емулатора и maven, така че все още не мога да ви дам подробности   -  person Corey Scott    schedule 19.08.2013
comment
@Simon 1) за да бъде ясно, плъгинът за android gradle е прикрепен към компилация на gradle, управлявана от плъгина за gradle на Jenkins, свързан със задача на freestyle jenkins. 2) не казвате дали изпълнявате gradle или обвивката на gradle. Пробвал ли си и двете? 3) не съм сигурен какви са вашите :pt: префикси. 4) Бих ви препоръчал да изпълните вашата команда gradle извън jenkins, от същата машина (поради изискванията на вашето свързано устройство), с опцията --debug, може би просто gradle --debugconnectedCheck или gradlew --debugconnectedCheck и проверете какъв вид изходен код получавате.   -  person coffeebreaks    schedule 19.08.2013
comment
@coffeebreaks Благодаря за съвета. Опитах gradlew, същият проблем. Изходът е идентичен. Префиксите pt са името на проекта pt. Получавам същия резултат от командния ред, а не от jenkins. ИЗГРАЖДАНЕТО Е НЕУСПЕШНО, защото 1 тест е неуспешен. Искам BUILD SUCCEEDED, след което junit може да го маркира като нестабилен.   -  person sipickles    schedule 20.08.2013


Отговори (1)


След нашия разговор смятам, че:

  • проблемът е само в конфигурацията на gradle и не е свързан с jenkins. Накарайте го да работи в gradle.
  • в gradle вярвам (въпреки че не съм експерт) трябва да накарате ConnectedInstrumentTest да игнорира грешките, но опитът ви да използвате следното се провали

    connectedInstrumentTest {
        ignoreFailures = true
    }
    
  • може би решението е да обвиете този конфигурационен възел така:

    project.gradle.taskGraph.whenReady {
      connectedInstrumentTest {
        ignoreFailures = true
      }
    }
    

https://github.com/stanfy/hotandroid/blob/master/part0/build.gradle

person coffeebreaks    schedule 21.08.2013
comment
Вашето решение за обвиване на конфигурационния възел работи! Много благодаря! Имам нестабилно телосложение (не е задължително нещо, с което да се гордея!). Предполагам, че това отлага конфигурацията, докато не бъде изградена цялата графика на зависимости? - person sipickles; 21.08.2013
comment
@SimonPickles Да. Изглежда, че gradle има по-динамична конфигурация от maven: gradle.org/docs/ current/userguide/build_lifecycle.html - person coffeebreaks; 21.08.2013
comment
Това не променя нищо за мен, компилацията все още е неуспешна (код за изход = 1), когато прилагам вашето решение. Имате ли други съвети? (Използвам Gradle 0.6.+ с Android SDK версия 19 и инструменти за изграждане v. 19.0.0) - person clemp6r; 09.12.2013
comment
@coffeebreaks Работи за мен - Благодаря! - person Sean; 24.01.2014
comment
Трябваше да използвам:connectedInstrumentTestDefaultFlavorDebug - person alaeri; 28.03.2014
comment
Не можах да намеряconnectedInstrumentTest иconnectedInstrumentTestDefaultFlavorDebug, така че това решение вече не работи :( - person Janusz; 24.07.2014
comment
Тъй като Google актуализира името на задачата, най-новият формат трябва да е такъв:connectedAndroidTest[YourFlavor][Debug]. Ако работите върху разновидност (като демо, платена и т.н.), трябва да включите разновидността в името на задачата (camel case). - person Better Shao; 18.12.2014
comment
Синтаксисът отново се промени, сега е connected[Flavor][BuildType]AndroidTest - person Gabor; 19.02.2016