作者:钱靖均秀蓉怡慧 | 来源:互联网 | 2023-08-12 18:00
前言
此次编辑时间为2018-9-9,所有程序版本尽量使用最新版。搭建顺序大致为服务器->jenkins安装->android环境搭建->配置android任务,本片只是搭建基本的android项目持续集成,更深层次的玩法,如集成tinker热更新、自动分发等,后续再继续(随缘…)补充。
服务器搭建——腾讯云
腾讯云乞丐版,良心学生价10元/月,买不了吃亏买不了上当,但是1m小水管和2g小内存,只适合做简单的中小项目,大佬们可根据需求自行选择服务器。本项目服务器系统为CentOS 7.3 64位。
域名+解析
腾讯云上还是能很方便地进行域名注册、解析、备案等操作,基本腾讯云小程序上就能搞定,不赘述。 需要注意的是,最好可以域名备下案,以备不时之需。
连接服务器
可以在腾讯云的云主机界面登录,但是网页端几分钟不操作就会超时断开连接,不建议使用。可以用ssh client远程登录,windows下是不会超时断开连接的,这样可以避免在后续长时间等待操作时的连接断开。
Jenkins安装
前置——Apache、jdk等
我基本软件一般都是用yum安装,首先安装jdk(jenkins依赖jdk,推荐yum安装,自己下载安装的话,还要记得配置环境变量),先查看当前可安装的java版本:
# yum -y list java*
再安装jdk,别选错了,不带devel的是jre:
# yum install -y java-1.8.0-openjdk-devel.x86_64
使用
# java -version
查看已安装的java版本,出现以下输出表示已成功安装:
apache也顺带装上了:
# yum -y install httpd
安装完成后,编辑配置文件
# vi /etc/httpd/conf/httpd.conf
删除ServerName前的#,修改为ServerName localhost,再启动httpd:
# service httpd start
此时,就可以用自己的域名访问到apache的默认页面了:
其他诸如mariadb(mysql也行,但是,你懂的,oracle)、php、Nginx等LAMP、LNMP套件,请参照 CentOS 服务器环境搭建:Linux + Apache + MySQL + PHP + Nginx。
Jenkins
接着安装jenkins,推荐使用yum安装,方便快捷:
# yum install jenkins
若是yum提示木有jenkins的repos,需先手动将Jenkins存储库添加到yum的repos,在执行上面的安装:
# sudo wget -O /etc/yum.repos.d/jenkins.repo https:
# sudo rpm --import https:
安装完成后,需进行一些配置的修改。首先,将jenkins的默认启动用户jenkins修改为root,或其他有权限的用户,jenkins默认用户是木有权限的。其次,jenkins默认端口是8080,跟tomcat冲突,为避免麻烦,此时也一并改了。
打开jenkins配置文件:
# vi /etc/sysconfig/jenkins
修改如下两个位置成下图:
最后启动jenkins:
# service jenkins start
输出有ok就表示启动成功了,浏览器输入自己的服务器ip:8081就可以进入jenkins初始页面:
管理员初始密码可使用:
#tail /var/lib/jenkins/secrets/initialAdminPassword
查看,输入后,进入插件初始化安装页,鄙人偷懒点的安装默认插件,
安装完成后,可以注册一个管理员账户:
搞定后,就搞定了:
Jenkins插件
进入插件管理:
插件视具体项目所需,我自己的项目主要是android的,因此主要有以下额外装的插件(有些是级联装上去的,jenkins会自动把依赖装上):
Android Lint Plugin
Build Timeout
build-name-setter
Clone Workspace SCM Plug-in
Email Extension Plugin
Git Parameter Plug-In
GitHub Branch Source Plugin
GitLab Plugin
Gradle Plugin
Multiple SCMs plugin
Pipeline
Pipeline: GitHub Groovy Libraries
SSH plugin
SSH Slaves
Subversion Plug-in
Timestamper
user build vars plugin
Workspace Cleanup Plugin
Android SDK
首先安装gradle(我放到了/opt/gradle目录,opt下一般是服务器应用):
# wget https://downloads.gradle.org/distributions/gradle-4.9-bin.zip
# unzip gradle-4.9-bin.zip
Android sdk已更改为sdkmanager方式安装,因此需要先去官网下载并解压命令行工具(我是将其下载到/opt/android文件夹下)
# wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
# unzip sdk-tools-linux-4333796.zip
解压后得到tools文件夹,先配置android环境变量(顺带gradle环境变量…)
# cd /etc/profile.d/
# vim android.sh
编辑成如下:
export ANDROID_HOME="/opt/android"
export GRADLE_HOME="/opt/gradle"
export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$GRADLE_HOME/gradle-4.9/bin:$PATH"
再保存并刷新配置:
# source profile
现在就可以使用sdkmanager(和gradle命令)了。
因为是服务器版本,所以19以上的platform以及build-tools我全装了,顺带装了ndk(根目录为/opt/android),可酌情增删:
# sdkmanager "platform-tools" "add-ons;addon-google_apis-google-24" "ndk-bundle" "build-tools;19.1.0" "platforms;android-19" "build-tools;20.0.0" "platforms;android-20" "build-tools;21.1.2" "platforms;android-21" "build-tools;22.0.1" "platforms;android-22" "build-tools;23.0.3" "platforms;android-23" "build-tools;24.0.3" "platforms;android-24" "build-tools;25.0.3" "platforms;android-25" "build-tools;26.0.3" "platforms;android-26" "build-tools;27.0.3" "platforms;android-27" "build-tools;28.0.2" "platforms;android-28"
服务器Android环境搭建完毕。
集成android项目
配置jenkins任务
首先新建任务(红色框是推荐必填项,青色是根据项目需要选填):
然后就是配置:
本项目用的是多源代码,所以需要使用 Multiple SCMs插件:
构建触发器中的轮询scm是用的比较多的:
修改成/5 * * *表示每5分钟检查一次。
在构建中配置使用gradle,其中tasks就是构建的gradle任务集合:
择输出文件,此处即生成的apk文件等,如果使用了混淆,千万记得把mapping文件也一并存起来,说多了都是泪……
最后点击保存,jenkins任务配置就算成功了。Jenkins具体用法非常广,可以及其灵活的配置一大堆持续集成的工作,如构建成功后邮件通知、触发自动测试、自动分发等,具体可见官方指南,熟练的话,真的可以玩出花来。
构建
点击立即构建,或者源码有修改时(配置了轮询scm情况下),jenkins会开始构建,并最终得到上面的归档文件,同时你部署的一系列构建后操作也会被执行。
若构建失败,可查看相应的控制台输出,详细的很。
总结
以上就是简单的搭建linux android jenkins持续集成环境的过程,重点在于linux android环境的搭建(网上一堆资料已过时),以及jenkins的任务配置,再次强烈推荐jenkins官方指南。
参考资料:
https://www.w3cschool.cn/jenkins/
https://blog.csdn.net/kai_1215/article/details/80731099
http://www.runoob.com/linux/linux-vim.html
https://kangzubin.com/blog/linux-apache-mysql-php-nginx/
https://blog.csdn.net/kai_1215/article/details/80731099