废话
这一阵子感觉空虚,心里空捞捞的,总想找点事情做,即使这是一件微小的事情,空余时间除了骑车、打球,偶尔朋友聚会 ... 还能干什么呢?
当独自一人时,究竟可以做点什么,填补这空虚的一天?我目前能想到的就只有学习,技术是坚实的保障,学习为成长提供充足的养分。
当你跳出舒适区或者面临裁员之际,摆在面前的首要任务便是更新简历。而此时,能否刷新那些令自己感到满意的技能或经验,很大程度上取决于你在此前所进行的学习以及积累的成果。在未来和当下希望自己能够有计划的学习。
持续集成 CI、持续部署 CD,或许你没注意到但应用广泛也十分重要。

安装
brew install jenkins-lts
启动
brew services start jenkins-lts
但是,遇到启动服务失败(通常应该是网络问题,毕竟被墙住了)

有点疑惑,我执行一次brew services list
查看服务竟然克隆成功了,并且再执行服务启动也成功了(可能是网络突然又行了吧,就当运气好吧)

还有其他命令:最后一个是服务名称
- 停止服务:brew services stop jenkins-lts
- 重启服务:brew services restart jenkins-lts
- 更新服务:brew upgrade jenkins-lts
项目
浏览器访问http://localhost:8080
正常是会弹出 Jenkins 页面(首次访问会引导你设置管理员密码)

复制页面的路径,使用 cat 或 more 等命令可查看密码

Next 按需安装插件

构建
创建一个 Jenkins 流水线模板,这里有好几个不同类型的模板,后面在探索其他模板

我们创建一个 Android 项目推送到远程仓库,国内嘛那就使用 gitee 管理方便些吧,接下来在我们创建的流水线模板
配置仓库地址

只配置仓库直接构建可能会遇到一些问题

1. 仓库克隆失败
那么我们需要配置凭证(克隆通常都是需要的),在这里创建凭证,并选择所使用的凭证再构建就能克隆仓库了
构建之后看工作空间仓库已经被克隆下来了,那么接下来就可以配置流水线命令
执行任务了
2. ANSI 输出无彩色
我们需要安装一个 Jenkins 的插件 AnsiColor

3. Gradle 找不到

代码克隆下来了,但是执行报错

但是在本地终端直接操作assembleRelease
是能构建成功的,说明系统 gradle 环境变量应该没问题啊,奇了怪了这

找不到 gradle 问题通过设置${WORKSPACE}
能过正确找到 gradle,${WORKSPACE} 意思是当前构建任务工作目录路径,那么我们本任务克隆的项目是 Android 项目,目录下就有现成的 gradle。


但是,构建开始不久又遇到了新的问题,jdk 版本过低
Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
Your current JDK is located in /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home

可是,终端查看 jdk 版本明明是 17 啊,他怎么读到哪里去了

那就想办法让 Jenkins 打包使用 jdk17 好了

配置 JAVA_HOME
之后直接 Rebuild 总算是打包成功了
4. 产物归档
但是又又发现了一个新的问题,既然是 Android 工程构建,那产物必然有安装包,打包构建生成的 apk 在哪里?

在项目配置里面新增构建后操作 -> 归档成品
,再配置合适的归档文件路径即可

再打包,匹配到 *.apk 文件,产物归档成功。

至此,你的第一个 Jenkins 自动化构建任务正常运行,以你的聪明才智,我想你应该有很多想法迫不及待想去实践吧😄