Jenkins 是一个开源软件,旨在提供一个开放易用的软件平台,是软件的持续集成变成可能。
功能
Jenkins 是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
- 持续的软件版本发布/测试项目;
- 监控外部调用执行的工作。
安装
Jenkins 安装比较简单,可以参考官方文档。
以CentOS
为例:
|
|
Jenkins 基础配置
在开始自动化任务之前需要配置一些系统的基础项,比如安装必要的插件,配置相应服务器的证书等。
安装 Jenkins 插件
进入 系统管理 - 插件管理
可以看到 可更新 | 可选插件 | 已安装
这几项,可选插件
中可以选择安装我们需要的插件。
推荐几个插件:
- GitLab Plugin
- GIT plugin
- Gradle plugin
- Publish Over SSH
- SSH Credentials Plugin
- …
Jenkins 系统配置
Jenkins 并不能单独完成一套完整的自动化构建流程,它需要搭配其它工具,如 Git/SVN, Gradle/Maven, SSH/FTP...
等等。
进入系统管理 - 系统设置
,我会一一讲解各个参数。
JDK
在安装 Jenkins 之前,应该已经先安装 JDK 了,我们只需要将相应的路径填入即可。(这里也可以通过 Jenkins 自动安装,不推荐。)
Git
我用的代码管理工具是 GitLab,Jenkins 服务器上需要安装好 Git 客户端,一般 Linux 服务器默认都已安装好,把路径填入即可。
Gradle
我们公司项目管理用 Gradle, 相应的 Jenkins 服务器需要安装好 Gradle, 并把路径填入。
Publish over SSH
Jenkins 有多种代码部署方式,我选择的是 SSH,记得配置证书。
这里可以配置多台需要推送的服务器信息。
Tip
这里无论是 Jenkins 从 GitLab 上拉取代码,还是推送应用到服务器上,都推荐使用 SSH,并且配置证书。
可以在 GitLab 不同的项目 Settings - Deploy Keys
里授权给相应的 Jenkins 项目。
同样,只给相应的应用服务器部署 Jenkins 服务器的 SSH 公钥。
其它配置
由于我这里使用的是 Git、Gradle、SSH 等功能,配置 SVN、Maven、FTP 基本类似,安装好相应的程序配置好目录即可。
详细的配置和说明可参考官网文档。
Jenkins 任务
完成以上一系列基本配置之后就可以开始创建 Jenkins 任务了。
首页 - 新建
输入任务名称。
这里可以选择几种创建方式,如果你不了解而且是第一次的用户建议选择`构建一个自由风格的软件项目`。
一次基本的构建过程包括以下五个步骤:
- 源码管理
- 构建触发器
- 构建环境
- 构建
- 构建后操作
源码管理
以 Git 为例,需要配置三个主要参数:
- Repositories 仓库地址
- Credentials 用户授权
- Branched to build 构建分支
构建触发器
触发器可以设置一些触发构建的条件,如钩子、定时任务等…如下图所示每15分钟检测一次远端仓库是否有更新。
构建环境
- Send files or execute commands over SSH before the build starts
- Send files or execute commands over SSH after the build runs
构建
这里是主要编译打包代码环节,可选多种方式,这里介绍使用 shell 和 gradle 两种。
Gradle比较简单,项目根目录写好 build.gradle
文件,这里直接配置gradle参数 clean build
即可。
如果项目不支持 Gradle 或其它管理工具,需要写一些简单的脚本来编译打包。
构建后操作
构建好后需要推送到远端应用服务器,有时还需要执行一些命令来重启相应的应用或执行一系列操作。
顺便附上我部署 tomcat 应用以及重启的脚本。jenkins_deploy.sh
后记
Jenkins 的功能远不止这些,它可以结合很多组件构建一个完整的系统。
TODO