前言:作为开发者,我们都遇到过这样一个问题,项目在测试期的时候,测试总会找我们打各个环境的包,什么生产包、prd包、pre包,每次都是我们打完包再发给测试。可是打包是要时间的啊,项目小还好,项目大的话,打个包也是需要很长的时间,如果公司给你配置的电脑再垃圾一点,好吧,打包的时候你就啥都不用干了,大眼瞪小眼,就干等着,如果一天打个十几个包,一天几乎就白费了,严重拖慢开发进度。那么能不能将打包的工作交予测试自个儿去完成呢,别有事没事来找我们要包,话说我们开发不要面子的啊~

当然可以,Jenkins就可以做到这个效果,我们提交好了代码,测试自个打包自个测,至于我们就可以专心开发我们的新功能啦。当然,我们先来看下Jenkins有啥用~

Jenkins 是一个可扩展的持续集成引擎。
主要用于:

  • 持续、自动地构建/测试软件项目。
  • 监控一些定时执行的任务

看见没有,持续、自动的构建和测试软件项目,不管什么项目,构建和测试都可以用Jenkins实现自动化,这不正好解决了我们的需求么?

那么Jenkins有哪些优点呢?

  • 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
  • 易于配置-所有配置都是通过其提供的web界面实现。
  • 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
  • 生成JUnit/TestNG测试报告。
  • 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
  • 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

简单易用,还可以生成构建和测试报告,甚至可以发送邮件,将构建或测试结果发送给领导。可以看到,我们想要的自动化打包只是其中的一个功能,而且搭建起来也不复杂。下面我将模拟在一个新的Linux环境下搭建Jenkins服务器,并实现Android的自动化打包。仅此纪念我在这个过程中踩到的各种坑,就当做个笔记了,也希望能帮助到各位学习使用Jenkins的开发者们,好啦,让我们正式开始~

  1. 安装前的准备。 在Linux下搭建Jenkins服务器,我们需要一下几个东西
  • jdk
  • Android sdk
  • tomcat
  • git
  • gradle
  • jenkins war包

要注意的是,我们是在Linux下搭建,所以jdk、Android sdk、tomcat、git等软件都是需要Linux下环境的,下载的时候选择linux环境下的就可以了。 至于各个软件的下载地址,我最后会整理到百度云中并分享出来。下面我们一步步安装这些软件。

  1. 安装jdk
    Linux下安装jdk很简单,将安装包解压缩到某个文件夹,再配置一下环境变量即可。需要注意的是,jdk的版本尽可能的高,最起码是1.8.0以上的,因为我弄的时候,就遇到过因为jdk版本的问题,导致项目构建失败,后来发现Jenkins新版本只支持jdk1.8及以上。而且若是你安装Linux的时候,不是选择的最小安装,那么安装好的Linux可能会自带有OpenJdk,如果有的话,先将其卸载,再安装自行下载的jdk。至于为什么要卸载,请看这一篇文章:https://www.cnblogs.com/sxdcgaq8080/p/7487369.html, 因为我安装的Linux是最小安装版本,所以没有自带OpenJdk。如果足下的系统中自带了OpenJdk,关于如何卸载请看卸载jdk。有没有安装,在 命令行中输入 java -version即可,如果提示未找到命令,则说明系统没有默认的jdk,无需卸载,这和windows上是一样的。将下载好的压缩包放入Linux系统下。我这里是从windows下把压缩包传到Linux环境下。用filezilla这个工具即可,可以很方便的把windows下的资源传到Linux下。具体用法自行研究下就好。先登入Linux环境:

切换到root用户下:执行su root命令即可。执行cd /命令,切换到Linux根目录。再执行ls -al命令,看看根目录下都有哪些文件夹。

我们自行安装的软件通常安装再usr/local/src下。将jdk安装包传送至usr/local/src目录下。

运行 cd命令,进入usr/local/src 目录下。并查看该目录下的所有文件。

解压usr/local/src下的jdk安装包:
tar -zxvf jdk-8u192-linux-x64.tar.gz,后面的文件名需要和你传入的文件的名称一致。

配置环境变量:
cd / 切换到根目录,执行vi etc/profile, 命令,打开文件后按i键,进入编辑模式。在文件最下方加入以下内容:

export JAVA_HOME=/usr/local/src/jdk1.8.0_192
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

JAVA_HOME就是你解压jdk完成后的解压文件目录,其它不变即可。编辑完成后点击esc退出编辑模式,输入:wq命令保存,注意前面的冒号不要忘咯。再运行java -version,若能看到java版本,则说明jdk安装成功。

  1. 安装tomcat:
    安装tomcat更简单了,直接把压缩文件传入usr/local/src目录下,解压压缩包,进入解压后的文件夹里的bin目录,直接
    运行 ./startup.sh 即可运行tomcat。解压命令上面说过,此处不再赘述。但启动后发现并不能访问,原因是因为Linux防火墙没有打开8080端口,所以无法访问。要么关闭防火墙,要么打开8080端口。直接关闭防火墙不太安全,所以这里打开8080端口:
//打开8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
//重新载入
firewall-cmd --reload

这时我们再通过外部访问就可以访问到Linux的tomcat的服务器了。注意,这里的Linux是CentOs7,防火墙是firewall,如果是CentOs6或之前,防火墙是iptables,两者的配置不同。iptables端口配置请看这里:https://www.cnblogs.com/liyuanhong/articles/7064576.html。

  1. 安装Gradle:
    第一步:将文件传入usr/local/src目录下,并解压。这里需要注意的是,如果我们解压的是类似于jdk-8u192-linux-x64.tar.gz 的以.tar.gz结尾的文件,我们可以用tar -zxvf jdk-8u192-linux-x64.tar.gz,但如果是以.zip结尾的文件,用这个命令会报错

好像不能解压,咋办呢?我们安装一下unzip工具,用来解压.zip结尾的文件:

//安装unzip
yum install -y unzip zip
//解压文件
unzip gradle-4.10-all.zip

配置环境变量:

//编辑配置文件
vi /etc/profile

配置Gradle路径:

//GRADLE_HOME是你Gradle解压完成后的路径
GRADLE_HOME=/usr/local/src/gradle-4.10
export PATH=${GRADLE_HOME}/bin:${PATH}

使该配置文件生效(不生效无法看到效果!

source /etc/profile

检查是否安装成功:

gradle -version

如有以下输出,说明Gradle配置成功:

  1. 安装Android Sdk。
    将压缩包放入/usr/local/src目录下,并解压:
//解压文件
tar -zxvf android-sdk_r24.4.1-linux.tgz

配置环境变量,打开/etc/profile文件:

vi /etc/profile

打开后按i进入编辑模式,加入如下两行:

export ANDROID_HOME=/usr/local/src/android-sdk-linux
export PATH=$ANDROID_HOME/tools:$PATH

ANDROID_HOME 是sdk解压完成后的路径。然后按esc键,输入:wq,保存文件。
使配置文件生效:

//使配置文件生效。
source /ect/profile

最后一步,安装所有的sdk包:

//安装所有包
android update sdk --no-ui

这个过程要稍微等待一会,中间询问是否安装y/n,可能会不止一次,选择y点击回车即可,可以看到下载进度:

耐心等待下载、解压、安装完成即可。如果不想安装所有的包,可以 选择性的安装,先列出所有可用的包:

android list sdk --all

所有的包:

当然不止这么多,往下还有很多。然后选择安装:

android update sdk -u --all --filter 1,2,3,5,11,12,22,23,24,25,26,27,28,29,88,89

后面的数字就就是列表前面的数字。选择你想要安装的包的序号即可。出现如下界面,说明安装完成:

  1. 安装git:
    第一步,下载git源码包,并放入/uer/local/src目录下并解压。解压完成后通过cd命令进入解压完成后的文件夹:
cd /usr/local/src/git-2.16.0

依次安装以下依赖,否则可能报错,如果已经安装请忽略。

yum -y install gcc
yum -y install openssl-devel
yum install libcurl-dev libcurl-devel
yum install expat-devel
yum -y install perl
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

安装git坑比较多,可能会提示你缺少什么什么东西,这时候就需要一一安装之后,才能进行编译,这是我从一个新的CentOS7系统上编译git遇到的问题,这里就当记录了吧,可能每个人因为 linux的版本、git版本不同,可能碰到的问题也不一样吧,总之,编译的时候提示你少什么东西,你通过 yum -y install命令去安装即可。实在不行,把错误到百度上搜一下,很容易就找到解决的办法了。

编译git,依次执行下面的命令:

make prefix=/usr/local/git all
make prefix=/usr/local/git install

完成后需要配置下配置文件,编辑/etc/profile文件,并加入配置路径:

//进入配置文件,按i键进入编辑模式。
vi /etc/profile
//在末尾加入这行代码后点击esc,输入:wq。保存文件。
export PATH=$PATH:/usr/local/git/bin
//使配置文件生效。
source /ect/profile

运行git -version,查看是否安装成功:

出现版本号,就说明git安装成功。

7.安装Jenkins.war
这玩意儿不用安装,我们把这个东西传到tomcat目录下的webapps目录下即可,怎么让他运行呢?很简单,切换到webapps目录下:

//切换到webapps目录下。
cd /usr/local/src/apache-tomcat-8.5.37/webapps//运行war包
java -jar Jenkins.war

如果你之前运行过Tomcat,记得把tomcat关闭掉哦,否则会提示你地址已经使用。如果看到如下界面,说明Jenkins服务器已经跑起来了。

这时我们去访问我们的服务器,在浏览器中输入:http://192.168.244.128:8080,这是我的地址,大家改成你们自己的linux ip地址就好,对了,linux中查看ip地址,用ifconfig命令,如下:

然后便可以看到如下的界面:

最下面还有个continue按钮,因为距离顶部太远,就没截上了。到这里,我们的Jenkins服务器已经搭建完成。如何实现Android的自动化打包呢?接着往下看哈~

8.配置Jenkins:
到上面那个界面,需要我们输入密码,然后点击continue,继续。

密码在哪里呢?就是红色框框框起来的位置,到Linux文件目录下,打开这个目录下的文件,直接把里面的内容粘贴进来即可。密码很长一串,看不懂不用管,直接复制粘贴就行。然后点击最底下的continue按钮。耐心等待一会,就会出现如下的界面

点击第一个高亮的框,安装建议的插件。

可以看到有一个进度条,这就是在安装所需要的插件了,耐心等待进度条完成即可。插件安装完成后

创建一下管理员用户,这里为了简单,除了电子邮件,我全都填了admin,省事儿。然后点击最下方的Save and Continue按钮,这里同样没截出来。点击后进入下一步。

这个就是你的Jenkins服务器的地址,以后别人访问你的Jenkins服务器就是这里你设置的地址。一般默认不用动即可,同样点击Save and Continue按钮。

点击 Start using Jenkins按钮,进入jenkins操作后台 ,不过这里可能会出现白板,什么东西都显示不出来,这时候可以在浏览器的地址栏输入http://192.168.244.128:8080/restart 重新加载一下页面就好了。

刷新页面的时候地址记得改成你自己的ip地址。这样Jenkins就配置好了,但还是不能实现自动化打包。接着往下看~

  1. 实现自动化打包
    要实现自动化打包,我们还需要在Jenkins管理界面做一些配置:
    首先点击左侧菜单的系统管理:

点击右侧的系统设置,然后找到如下设置:

点击新增:

这里是配置我们的Android sdk路径,没有sdk,别人在网页上怎么进行打包呢?注意这是Linux下你安装的Android sdk的路径。 配置好这个,点击保存。然后我们还要去配置jdk、gradle和git。点击系统管理,在右侧的菜单中选择全局工具配置,界面如下

点击新增JDK

然后接着配置Git,因为别人在网页上打包,会从git上拉取最新的代码。看图:

j接着配置Gradle,Android没有Gradle怎么编译呢?

如果用maven,这里还可以配置maven,都行,配置的方法都是类似的,对于Android来说,配置这些已经够了,现在已经具备自动化打包的条件了。配置完记得点击保存。接下来要新建项目了,都没有项目,你打个屁的包啊~

  1. 新建测试项目
    回到首页,点击新建任务

进入如下界面

然后进入项目的配置页面:

可以看到,可以配置的项有很多,但我们这里只配置两个,一个是源码管理,一个是构建,图不全,没关系。先来源码管理,在源码管理项选择Git,如下

先配置项目地址,但是git是需要用户名和密码的啊,点击项目地址下的添加:

就输入用户名和密码就可以了,然后点击添加。

好啦,这就是配置别人在网页上访问你的服务器,进行打包的时候用的是哪里的代码,很简单吧,接着看构建

找到构建这个选项,我们点击下拉框,选择Invoke Gradle script

下面还有一些高级选项,先不放在这篇讲了,以后另外开一篇博客再写。然后点击保存即可。然后回到首页,点击我的视图,可以看到我们刚创建的项目。

下拉,选择立即构建

然后可以看到

可以看到,这就是在clean项目了,这个过程中如果提示你缺少某个build-tools,比如:

这是因为缺少27.0.3的build-tools,我们登陆linux服务器,运行如下命令:

//查看所有版本列表
android list sdk -a

然后查看下build-27.0.3对应的序列号。

然后我们执行如下命令:

//数字7就是build-tools27.0.3对应的序列号,如果缺少其它的版本,找到版本对应的序列号,再执行下面这个命令,把序列号填入7所在的位置即可。
android update sdk -u -t 7 -a

中间会提示你是否安装y/n,选择y安装就好。安装完成后再构建一次就可以构建成功了。

出现success就说明我们的项目构建成功了。ps:jenkins页面跳转过程中可能会出现多次白板,不要慌,在浏览器的地址栏里面输入http://192.168.244.128:8080/restart,然后刷新下页面就行。我发现这个是万能的解决办法。至于为什么会这样,有知道的小伙伴还请在底下留言告诉我一下,不胜感激~

总结:其实不用把Jenkins想的那么复杂,它就是一个运行在Tomcat或其他web容器上的web项目。通过前台配置jdk、gradle、Android sdk、git的路径来明确我们打包所需要的各种环境,你想想在Android studio上开发是不是也要配置这些,只不过把这些放到Linux服务器上了。git用来明确你打包的源代码的来源,有源代码才能打包不是?这样你只要上传了代码,别人登录进去,点击立即构建,就会从仓库中拉取最新的代码并进行项目的构建。为什么叫自动化呢?因为Jenkins可以配置定时构建、在固定的时间点构建等等。这里因为篇幅原因,先不说了,我会再另开一篇博客,详细介绍Jenkins的各种用法。

总的来说,在Linux从零开始搭建Jenkins服务器还是会碰到许多问题的,这是一个踩坑的过程,一步步解决,终究会有搭好的一天。这篇博客也只是写了Jenkins最基本的用法,先用起来再说,有时间再开一片博客介绍下Jenkins参数化构建、邮件发送,定时构建发布等等功能。如果对linux玩的滚瓜烂熟的朋友,请忽略这篇文章~

下一篇:这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(下)

这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(上)相关推荐

  1. 这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(下)

    上一篇我们从零开始,在Linux环境下配置了Jenkins的Android构建环境,但也仅仅是搭建环境,至于参数化构建.输出apk .定时构建.邮件发送等功能因为篇幅的原因没有介绍,本篇博客就来介绍介 ...

  2. Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)

    一.linux服务器端配置 1 2 3 4 5 6 7 8 9 [root@server ~]# rpm -qa | grep sub subversion-libs-1.7.14-10.el7.x8 ...

  3. Linux下搭建jenkins+svn+http+maven自动化部署

    Linux下搭建jenkins+svn+http+maven自动化部署 服务器设置: 卸载redhat的yum,安装centos的yum,配置第三方yum 1.删除redhat原有的rpm -qa | ...

  4. kali系统搭建本地服务器,kali linux 下搭建git服务器

    参考:http://www.cnblogs.com/dee0912/p/5815267.html https://www.liaoxuefeng.com/wiki/001373951630592960 ...

  5. Linux下搭建Apache服务器

    Linux下搭建Apache服务器(完整版) 什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权, ...

  6. Linux ENSP 搭建DHCP服务器并实现中继和Linux 下搭建DNS服务器(2个实验可跟做)

    文章目录 DHCP服务 了解DHCP服务 使用DHCP的好处 Linux 下搭建DNS服务器 实验环境 实验过程 修改DHCP配置文件 更改dns服务器名称 更改win10的IP地址 Linux &a ...

  7. cif文件服务器搭建,在linux下搭建NFS服务器实现文件共享

    介绍在linux下搭建NFS服务器实现文件共享 目录一.关于NFS 二.搭建一台NFS服务器共享特定资源 三.调优 一.关于NFS 1.NFS是Network File System的简写,即网络文件 ...

  8. linux dns服务无效,Linux下搭建DNS服务器及踩坑

    DNS服务 域名系统(DNS)是建立在分布式数据库上的分层命名系统.该系统将域名转换为IP地址,并可以将域名分配给Internet组资源和用户,无论实体的物理位置如何. 说白了就是:域名与IP之间的相 ...

  9. Linux下搭建nginx服务器

    Linux下搭建nginx服务器   Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.其特点是占有内存少,并发能力强,事实 ...

最新文章

  1. 获取枚举值上的Description特性说明
  2. mysql 高级语法,SQL 语法高级
  3. 全球与中国除颤监护仪市场深度调研与未来前景研究报告2022-2027年版
  4. 让想法更加结构化!思维导图工具MindManager
  5. 初学者,你应当如何学习C++以及编程-转
  6. java面试题 Arraylist 与 LinkedList比较
  7. 强悍的 Ubuntu —— 粘贴板
  8. 数仓系列 | Flink 窗口的应用与实现
  9. LanguageTool至少需要哪些jar包?
  10. java语言程序设计第三版沈泽刚课后答案_Java语言程序设计(第3版)学习指导与习题解析...
  11. pvacseq数据分析示例之准备数据,用VEP注释vcffile
  12. PPT图形绘制:端午节PPT模板背景
  13. Oracle新创建的用户没有被授权user lacks CREATE SESSION privilege logon denied
  14. 神剑轩辕java,上古十大神剑有哪些 有一把居然是专门用来弑君杀父的
  15. Halcon——颜色检测
  16. Android 自定义相机黑屏
  17. 如何使用JavaScript导入和导出Excel文件
  18. Git常用命令(汇总)
  19. 星际争霸汉化java_星际争霸2地图编辑器:银河编辑器语言类似Java/C/PHP
  20. Lua基础:Lua基础

热门文章

  1. python集合的概念_用Python中的集合Set讲解演示高一数学集合的概念
  2. 跟着沐神学习深度学习
  3. 计算机辅助在医学中的应用,计算机在医学领域的应用
  4. android 安卓GBA GBC NDS FC SFC 街机游戏模拟器源码
  5. 菜鸟窝Kotlin+Jetpack实战学习笔记
  6. 广州男子花12万买新车 保养时被告知车门被撬开维修过
  7. JS删除对象中的某一属性
  8. 核心路由器十项性能指标[ITAA网络实验室IT傻博士原创]
  9. 基于STM32F429控制ADC
  10. 串口硬盘与并口硬盘详解:IDE SATA SCSI 接口详解