热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从零开始搭建linuxandroidjenkins持续集成

前言此次编辑时



前言

此次编辑时间为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://pkg.jenkins.io/redhat-stable/jenkins.repo
# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

安装完成后,需进行一些配置的修改。首先,将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



推荐阅读
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • 本文介绍在使用vmware中配置centos6.5时遇到的网络问题,包括host-only和natip的配置,以及无法上网的原因。同时提供了解决方法,包括去掉host-only配置文件中的gateway。 ... [详细]
author-avatar
钱靖均秀蓉怡慧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有