一、 jenkins介绍
jenkins是一款开源的CICD软件,在市面上各类开源相关软件中处于领先位置。从个人角度更倾向于将其看作一个具备cicd功能的开源框架,在期1000+插件、扩展库功能以及良好的shell兼容性的基础你几乎可以用jenkins来做任何事情。
这里介绍一下从一台祼服务器开始搭建一个最简单的jenkins服务。
名词:
构建: 指jenkins任务的执行或运行
编译: 软件代码从源代码生成二进制可执行文件的过程
另: 本文中job与任务代表同样意义。
二、 准备工作
软件环境:
linux服务器 Centos 7
中间件:
jdk #提供基础的运行环境
apache-maven #java代码的编译工具
nodejs #前端代码编译环境及工具
tomcat #jenkins的运行容器
三、 jenkins版本选择
一般建议使用最新的长期支持版Stable (LTS) ,官方更新频率没那么快。实际使用中稳定性较好,不需要频繁跟着官方进行更新。
部署形式
jenkins官网支持多种安装形式,包括war包、rpm、apk以及docker镜像;这里选择最基础和简单的war包的形式,在实际使用中可以根据自己的需要定制化一些内容。
包从官网下载:
下载地址: https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.332.3/jenkins.war
四、安装过程
1.安装jdk
略
增加java的环境变量
export JAVA_HOME=/export/server/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASS_PATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
验证java环境是否正常
java -version
2.安装tomcat
mkdir /export/server/
上传tomcat包到上面目录
tar xzf apache-tomcat-8.5.50.tar.gz -C /export/server/
3.上传jeknins war包到tomcat的webapps目录下,启动tomcat。
sh bin/startup.sh
4.jenkins在启动过程中会在日志里输出初始的密码,这个密码需要在初次进入jenkins系统时使用。
查看logs/catlina.out,日志文件中有如下输出:
中间这一串随机字符串即jenkins初始的密码。
5. 浏览器打开jenkins页面
将4中找到的随机密码输入,点“继续”开始jenkins的初始化。
6. 安装必要插件
这里可以临时跳过,本次安装的时候网络环境检测失败。
7.创建管理员帐户
8.确定jenkins的地址
如果前面不加nginx做代理的话,这个地址就是启动tomcat的IP:Port再加上/jenkins/这一层路径。像这样:http://ip:port/jenkins/ 。
9. 配置成功后进入jenkins功能界面
10.定制安装所需插件
因为环境网络问题前面跳过了插件的安装,在这一步选择一个简单的jenkins系统所需要的插件。
配置路径:Manage Jenkins>> Manage Plugins
选择所需要插件,点击安装(Install without restart)。
必需的插件列表见附录。全部插件安装完毕后建议重启一次tomcat。插件中选择中文语言插件,重启tomcat后,系统界面会转换为中文。不重启的话一部分没办法直接转变为中文。
常用的插件(部分):
五、配置全局工具
为了满足后面示例任务的使用,这里增加java、maven以及nodejs的配置。也是jenkins作为一个CI系统的基本配置。
1.配置java工具
配置路径: 系统管理>>全局工具配置
找到JDK配置段,点击新增JDK。
如果服务器上没有装jdk可以选择自动安装,但是建议先在服务器上配置好java环境,参考上图填入对应信息后,点击页面最下面的保存. jdk环境配置完成。
2.配置maven
jenkins服务器上安装apache maven
从https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz下载apache maven的二制包。
上传到jenkins服务器,解压到/export/server/目录下
解压
tar xzf apache-maven-3.8.6-bin.tar.gz
配置环境变量
# vim /etc/profile
export MAVEN_HOME=/export/server/apache-maven-3.8.6
export PATH=$PATH:$MAVEN_HOME/bin
# source /etc/profile
配置路径: 系统管理>>全局工具配置
按上图内容配置settings文件路径,这里使用上面安装的maven的地址,这里settings.xml文件使用软件默认的,后面单拎出来介绍一下settings.xml这个文件的配置。如不了解这个配置文件可以找研发同学提供。
当前配置页下方,增加maven安装路径,手动配置不选自动安装。
3.配置nodejs环境
nodejs做为前端开发语言,大部分情况下需要将源码编译成静态文件,再通过nginx等http服务中间件提供对外的服务,以便获得更好的性能。在jenkins上实现nodejs的编译需要node环境和npm工具,部分可能需要yarn工具,具体需求是根据研发习惯或者公司统一规定确定。
安装nodejs
下载前端程序所对应的node版本???(这里以长期支持版为例)
上传到jenkins服务器/export/server/
xz -d node-v14.7.0-linux-x64.tar.xz
tar xf node-v14.7.0-linux-x64.tar
配置jenkins里的工具
增加后保存,如上图,在job构建时可以指定 name为"node14"的环境。根据实际编译需求也可以增加多个版本的nodejs支持。
六、基本使用
这里的任务全部使用传统配置模式,pipeline形式会在后面单拎一章介绍。CI的整体逻辑,拉取代码,设置编译命令(方法),编译,生成编译结果(一般为二进制文件或包)。
1.创建一个java任务
登录jenkins后,点击左边栏“新建任务”,如下图,输入任务名称,在下面的任务类型中选择“构建一个maven项目”,点击确定。
整个任务分几个阶段,在对应的阶段中配置要编译代码的信息。
一个任务的必要信息,代码地址,编译命令,编译结果。
源码管理这里输入要编译代码的地址,Credentials这里选择连接到代码仓库所需要的用户权限文件,需要单独配置。
如上图,这里指定要从代码库拉取的分支,这里是固定写死的,后面介绍参数化构建可以在每次构建里选择或填入指定的分支或tag。
这里指定pom.xml文件的位置,maven类型的任务在编译的时候是根据代码中pom.xml的定义进行代码的编译动作的。
这里可以设置一些编译成功后的动作,如归档、触发其他的任务、清理工作空间,或其他一些自定义的动作。这里的动作依赖插件的支持。在代码编译成功后增加发布的动作即整体实现CD的功能,从代码到服务器。
任务创建成功后,可按需求运行。
点击立即构建,触发jenkins任务,在左侧边栏会显示出当前正在进行编译的任务和进度。点击运行的任务可以进入任务构建详情,编译日志输出等。
2. 创建一个nodejs任务
点击左侧边栏
这里选择自由风格软件的项目,与java类型的任务一样,配置代码库地址。
配置编译环节,jenkins并没有像maven类型那样提供了专门适用的任务类型,所以编译的过程需要用shell模块自己实现编译过程。
如下图:
常规情况下,node编译出的目的文件在dist或build目录下,可在上图脚本中增加发布到服务器的动作,实现从代码到服务器的CD过程。
3. 文件夹类型的任务
新建一个任务,选择文件夹类型,文件夹类型的任务在jenkins中提供了一个容器,可以用来组织任务的结构,隔离不同环境,不同项目,不同所属的一系统的任务。也可以根据文件夹来进行权限控制。