使用Atlassian Bamboo的Android CI

时间:2014-09-12 02:54:39

标签: android junit continuous-integration bamboo

有没有人有任何好的资源来设置Bamboo与Android项目进行CI?我有我的设置来拉源并用ant编译它。但我很想知道如何设置JUnit测试,测试是在一个单独的项目中。

由于

2 个答案:

答案 0 :(得分:2)

我已经弄清楚如何使用Bamboo CI和带有gradle的新Android Studio项目来实现它。 Bamboo没有很好的下降任务,但你可以利用脚本运行器来完成它。我们按如下方式设置基本构建任务:

源代码检查。 脚本任务:

  • 脚本位置:内联
  • 脚本正文:gradlew.bat assembleDebug test(我们的Bamboo服务器是Windows所以我们使用bat文件,linux使用./gradlew assembleDebug测试命令)

然后我们添加JUnit解析器的最终任务,并使用结果目录行:** / test-results / debug / *。xml

对于测试,我们使用Robolectric Gradle测试,它生成JUnit测试结果。

我希望这可以帮助其他正在研究如何使用Android设置Bamboo的人,希望有一天他们会像.NET一样添加支持,只需要构建和测试一个任务。脚本命令有点像黑客。

如果有人正在寻找Ant风格测试,我也可以分享它,但希望现在每个人都从eclipse转移到Android Studio。我会说Ant和Instrumentation所需的步骤需要花费更多的时间来设置,我不得不使用在服​​务器上运行的模拟器来进行测试。

答案 1 :(得分:0)

除了使用Bamboo为我的Android项目构建APK之外,我还想使用Bamboo来针对Android模拟器运行基于JUnit的测试。经过相当多的尝试和错误后#34;主要围绕找到启动和停止Android模拟器的可靠方式,这是我为Bamboo构建计划提出的。有关我采用下述方法的原因的其他背景信息,请参阅Bamboo waits for script task to terminate, although it is run in the background

我的Bamboo计划有一个阶段有两个工作。作业使用在同一系统上执行的两个代理程序运行。这两个工作并行开始和运行。一项工作使用Android SDK模拟器命令启动Android模拟器。另一个作业等待模拟器启动,构建移动应用程序,针对模拟器运行测试,然后使用始终执行的最终任务停止正在运行的模拟器,即使构建作业中的先前任务失败也是如此。

模拟器工作确实会被卡住"启动模拟器后,因为它正在等待模拟器进程完成。构建作业运行时,构建作业中的最后一个任务会停止模拟器,从而导致模拟器作业完成,因为模拟器进程不再运行。

以下是构建作业的关键任务详细信息:

第一个任务是等待模拟器启动的脚本任务。如果模拟器无法启动,则下面的adb -s命令将失败,导致此任务失败。

echo "Waiting 60 seconds for the Android emulator to start"
sleep 60
echo "See if Emulator is up and running"
${bamboo.ANDROID_HOME}/platform-tools/adb -s emulator-5554 shell getprop dev.bootcomplete

第二个和第三个任务检查源并使用Gradle构建应用程序。构建针对正在运行的模拟器运行JUnit测试。

配置为最终任务的第四个任务是停止模拟器的脚本任务。

echo "Stopping the Android emulator"
${bamboo.ANDROID_HOME}/platform-tools/adb -s emulator-5554 emu kill