【发布时间】:2015-07-14 12:22:22
【问题描述】:
我正在尝试设置我的第一个 Android 项目以在 Jenkins 上构建。
我正在运行带有 1.24 版 Gradle 插件的 Jenkins 1.6.2。在 Windows 7 Professional SP1 上运行。
我已经在我的构建机器上安装了 Android Studio 和 Java7 JDK,并且通过 Android Studio 或从命令行运行 gradlew.bat 时,软件的签出版本构建得很好。但在我的 Jenkins 工作中,我无法让 Invoke Gradle 脚本构建任务工作。
在配置项目页面上有一对单选按钮:
- 调用 Gradle
- 使用 Gradle 包装器
如果我选择“Invoke Gradle”,系统会要求我选择一个“Gradle 版本”,这是我在配置系统中设置的。
我创建了一个 GRADLE_HOME 设置为“D:\Program Files\Android Studio\gradle\gradle-2.2.1”的 gradle 安装。这给了我一个警告,“D:\Program Files\Android Studio\gradle\gradle-2.2.1 不是 Jenkins master 上的目录....”
当我运行构建时,我收到一个错误“无法检索 Gradle 可执行文件”。
这可能与抱怨目录的 gradle 插件有关。但是目录是正确的。我试过用'/'代替'\',没有任何区别。
由于这不起作用,我尝试了替代方案,“使用 Gradle Wrapper”。有一个复选框:“从根构建脚本目录”。无论我检查与否,我都会收到“java.lang.IllegalArgumentException: android.compileSdkVersion is missing!”
我已经设置了 JAVA_HOME 和 ANDROID_HOME,所以这不是问题。
有什么想法吗?
作为后续,我删除了 gradle 任务,并添加了一个 Execute Windows 批处理命令任务:
SET ANDROID_HOME=d:\Program Files\Android\sdk
SET JAVA_HOME=d:\Program Files\Java\jdk1.7.0_79
.\gradlew.bat clean
当我运行它时,我仍然得到那个错误。
但是当我从构建机器上的命令行运行这些命令时,它们工作得很好。
从 Jenkins 运行 gradlew.bat 时,与从命令行运行时有什么不同?当我从命令行运行时,Jenkins 服务被配置为使用与我登录时相同的用户。我已经尝试明确设置我在命令行中设置的每个环境变量,在 Jenkins 任务中,我仍然看到错误。
有什么想法吗?
【问题讨论】:
-
我建议不要使用包装器。警告可能是问题所在。您是否已经尝试过 Jenkins 自动安装 gradle? (作业配置中的 gradle 版本可能只是“默认”。)
-
我正在尝试使用作为 Android Studio 一部分安装的 gradle。正如我所说,我在作业配置中指定的 gradle 版本是我创建的指向作为 Android Studio 一部分安装的 gradle 的版本。
-
我尝试过自动安装 Gradle,但在 Gradle Installations 配置中,版本下拉列表为空
-
您的 build.gradle 中是否设置了
compileSdkVersion?这就是 Gradle 包装器所抱怨的。 -
是的。当我从命令行运行 gradle 时,它可以找到它。但是当我从 Jenkins 运行它时,它不能。
标签: android jenkins gradle android-gradle-plugin