Jenkins 踩坑记录
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 错误
1 | Build step 'Invoke Gradle script' changed build result to 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
1 | A problem occurred configuring root project 'xxxx'. |
解决方法:修改 kotlin 版本
问题二:依赖版本错误、配置代理
1 | > Could not resolve all dependencies for configuration ':app:_uerbPPortraitApkCopy'. |
依赖了一个不存在的 constraint-layout 版本,修改成正确的版本即可。
由于我用于开发的电脑上配置了 SS 代理,所以在项目目录下的 gradle.properties 文件中配置使用代理:
1 | systemProp.http.proxyHost=127.0.0.1 |
但是在 Jenkins 服务器上并没有 SS 代理,所以会出现这个错误,只需要将代理注释即可。
Tips:其实,如果你用于部署 Jenkins 的主机上安装了 AS,那么你只要能在AS里顺利打包,在 Jenkins 上也能顺利打包,而且 AS 也相对更容易定位错误发生的位置与原因。如果没有安装 AS,就要要善用 Ctrl + F 搜索,来快速定位问题。
4. fir.im 插件上传路径配置出错
1 | ERROR: Could not find the file specified by the pattern **/*.apk,**/*.ipa |
如果你不知道你的项目在计算机中的绝对路径,那么请使用 ${WORKSPACE}
来指向你的工作区: