目前公司内部的通讯工具是企业微信,由于现在提测的apk都是手动打包发送到群里,为了解放双手,打算部署自动化打包工具。
我接触过的自动化打包工具主要有两种,一种是jenkins,还有一种是gitlab-runner,后者由于我在公司gitlab上没有开启gitlab-runner的权限,所以放弃了,于是乎我在公司分配给我的macbook上搭建了一套jenkins。
在mac上搭建jenkins非常方便,在这里没有采用docker的方式,而是通过homebrew来安装。
一、首先安装homebrew,安装过程中有可能会让你去下载command line tools,有的电脑安装会提示网络连接失败,那是因为苹果默认不提供自动下载的服务了,需要你去https://developer.apple.com/download/more/ 这个地址手动下载对应系统版本的command line tools,这里需要登录一下apple账户,下载安装。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
二、下载完homebrew后,安装jenkins就一行命令,非常方便
brew install jenkins
三、安装完毕,如果需要修改端口,vim是一个命令行下的编辑工具,如果不习惯用,可以直接访问该目录,通过诸如sublime这种工具修改。
vim /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
修改httpListenAddress=0.0.0.0 意思是不管本机还是局域网中任意ip电脑都能访问
修改httpPort=8090 是访问的端口,只要不冲突,你也可以保持默认的8081不变
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.jenkins</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/openjdk@11/bin/java</string>
<string>-Dmail.smtp.starttls.enable=true</string>
<string>-jar</string>
<string>/usr/local/opt/jenkins/libexec/jenkins.war</string>
<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=8090</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
补充: .plist文件是苹果系统独有的程序执行单元的配置文件,如果你把该文件放在mac系统的/Library/LaunchAgents这个目录下,那么开机的时候就会加载运行,也就是开机启动。
四、修改完成后执行,开启jenkins,以下命令是固定写法,我猜想他的本质就是执行了mac系统的 launchctl load /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist 这个命令,去加载运行了这个配置文件,根据这个配置文件又执行了/usr/local/opt/openjdk@11/bin/java -jar /usr/local/opt/jenkins/libexec/jenkins.war -Dmail.smtp.starttls.enable=true --httpListenAddress=0.0.0.0 --httpPort=809,从而运行了jenkins的war包,jenkins的本质就是一个javaweb程序。
brew services start jenkins
五、安装完成访问127.0.0.1:8090就能进入jenkins管理界面,期间会提示输入密码,初始密码会提示你在哪个目录下,去这个目录下找到输入即可,然后推荐你安装的插件,点击安装下,最后创建一个用户即可使用,这些操作很常规,这里就不放图了。
六、因为我希望发送企业微信的时候将git的提交日志也带上,所以需要安装一个changelog插件,我已经上传到百度网盘中,在jenkins中选择系统管理-->插件管理-->高级-->上传插件-->选择文件即可安装,安装完成后重启下jenkins
链接: https://pan.baidu.com/s/1Z9rGxzy-dSPUyibpazdbuw 提取码: lfi3 --来自百度网盘超级会员v5的分享
七、在正式建立构建任务前,先做一件事,保证下载了sdk,你不需要单独去下载,只要去android studio官网https://developer.android.google.cn/studio/ 下载安装android studio,然后打开就会提示你下载sdk,在mac下android sdk路径一般为 /Users/你的用户名/Library/Android/sdk
八、去jenkins建立任务



轮询方式. 第一种配置一个token生成一个url,当访问该url时触发。第二种,第三种其他工程构建后触发、定时构建很好理解。第四种github-hook 需要github那边触发,企业默认使用gitlab较多。第五种,轮询 SCM,用的比较多,因为不知道代码什么时候提交,所以不断轮询检测是比较靠谱的方式,我一般都会使用这种方式。设置:H/2 * * * * 表示每两分钟检查下git有没有提交,有提交就触发构建



ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
echo $ip
echo SCM_CHANGELOG $SCM_CHANGELOG
curl '这里输入企业微信机器人webhook地址' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"mentioned_list":["wangqing","@all"],
"content": "自动化打包完成\n下载地址:http://'${ip}':8080/jenkins-build-out/toc_out/\n 本次更新:'${SCM_CHANGELOG}'",
}
}'

rm -rf /Users/用户名/Public/jenkins-build-out/toc_out/*.apk
cp /Users/用户名/.jenkins/workspace/构建名称/app/build/outputs/apk/*/*/*.apk /Users/用户名/Public/jenkins-build-out/toc_out/
chmod 777 /Users/用户名/Public/jenkins-build-out/toc_out/
如果你也使用nginx提供访问apk下载的服务,可以在nginx.conf文件夹中这样配置,在mac中安装nginx和jenkins一致,brew install nginx即可,然后去/usr/local/etc/nginx 这个目录修改配置文件,然后brew services start nginx 开启即可
location / {
root /Users/用户名/Public;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
charset utf-8,gbk;
}
完成后打包就可以自动发送企业微信群里了,测试根据你提供的web地址下载对应的安装包,从此,告别了手动发包的操作。