Jenkins的安装步骤我就不赘述了,有很多文章可以供参考,本文只讲在安装使用过程中遇到的一些问题及解决的方法。
1. 安装
博主用于部署 Jenkins 的设备是一台 Debian8 主机,使用 ssh 连接。一开始我按照官方指南来进行安装,但是在执行 sudo apt-get install jenkins
提示找不到这个安装包,后来发现是软件源的问题,官方指南上使用的是 https ,改成 deb http://pkg.jenkins.io/debian-stable binary/
就可以了。
我曾尝试使用 deb 安装包进行安装,但是安装完毕之后无法启动服务,不知道什么原因,要是哪位大佬知道还请不吝指教。
2. 使用QQ邮箱作为通知邮箱
如果你使用自己的QQ邮箱作为通知发件邮箱,首先你需要在你的 QQ 邮箱中,开启 SMTP 服务,如果你已经开启过,请点击下方的生成授权码。
在 Jenkins 的邮箱通知中密码位置填写的是 QQ 邮箱的授权码!
3. Gradle 错误
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE
控制台输出这样的错误信息,说明 Gradle 在编译打包的过程中出现错误,我们可以按照以下方法来进行排查:
3.1 Jenkins 配置错误
首先我们需要检查 Gradle 配置是否存在问题,网上很多帖子上建议我们在任务配置中使用 Invoke Gradle
,如果使用这个选项的话一定要正确的配置 Gradle ,确保两点:
- Gradle 路径正确
- Gradle 版本正确
项目的 Gradle 版本信息保存在 ./gradle/wrapper/gradle-wrapper.properties
这个文件中
如果你使用的是一台全新的机器部署的 Jenkins ,在确保网络连接 OK 的情况下完全可以在全局工具配置中使用 自动安装
或者在任务配置中使用 Use Gradle Wrapper
3.2 项目配置出错
在检查确认我们的 Gradle 配置没有问题后,我们继续查看控制台的输出,在浏览器中搜索 [ERROR]
、Exception
可以帮助我们快速定位问题。
问题一:无法下载指定版本的 kotlin
A problem occurred configuring root project 'xxxx'.
> Could not resolve all files for configuration ':classpath'.
> Could not download kotlin-compiler-runner.jar (org.jetbrains.kotlin:kotlin-compiler-runner:1.2.41)
> Could not get resource 'https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.2.41/kotlin-compiler-runner-1.2.41.jar'.
> Connection reset
解决方法:修改 kotlin 版本
问题二:依赖版本错误、配置代理
> Could not resolve all dependencies for configuration ':app:_uerbPPortraitApkCopy'.
> Could not resolve com.android.support.constraint:constraint-layout:1.1.0.
Required by:
project :app
> Could not resolve com.android.support.constraint:constraint-layout:1.1.0.
> Could not get resource 'http://www.idescout.com/maven/repo/com/android/support/constraint/constraint-layout/1.1.0/constraint-layout-1.1.0.pom'.
> Could not GET 'http://www.idescout.com/maven/repo/com/android/support/constraint/constraint-layout/1.1.0/constraint-layout-1.1.0.pom'.
> Connect to 127.0.0.1:1080 [/127.0.0.1] failed: 拒绝连接 (Connection refused)
依赖了一个不存在的 constraint-layout 版本,修改成正确的版本即可。
由于我用于开发的电脑上配置了 SS 代理,所以在项目目录下的 gradle.properties 文件中配置使用代理:
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=1080
但是在 Jenkins 服务器上并没有 SS 代理,所以会出现这个错误,只需要将代理注释即可。
Tips:其实,如果你用于部署 Jenkins 的主机上安装了 AS,那么你只要能在AS里顺利打包,在 Jenkins 上也能顺利打包,而且 AS 也相对更容易定位错误发生的位置与原因。如果没有安装 AS,就要要善用 Ctrl + F 搜索,来快速定位问题。
4. fir.im 插件上传路径配置出错
ERROR: Could not find the file specified by the pattern **/*.apk,**/*.ipa
Build step 'Upload to fir.im' marked build as failure
Sending e-mails to: [email protected]
Finished: FAILURE
如果你不知道你的项目在计算机中的绝对路径,那么请使用 ${WORKSPACE}
来指向你的工作区: