Jenkins 是用 java 编写的开源持续集成工具, 目前被国内外各公司广泛使用. 本章教大家如何在 Linux 服务器中使用 Jenkins 自动发布一个可作为 Linux 服务发布的 Springboot 项目.
自动构建需要经过如下步骤: 从 Git 仓库下载代码, 使用 Gradle 进行构建, 使用 SSH 推送到另一台 Linux 服务器, 项目作为 Linux 服务启动. 本章将逐条仔细讲解.
一, 获得一台 Linux 服务器
要在 Linux 下搞持续构建, 首先你得先有一台 Linux 服务器, 作为小白, 手头的机器肯定都是 Windows 的, 搞个虚拟机安装对我这种小白简直是折磨人; 这里使用最简单的方式获得一台 Linux 服务器, 就是从阿里云上租一台. 镜像选择 CentOS7.3 64 位.
阿里云上租服务器
二, 准备工作
在开始部署持续构建之前, 你需要先安装好必备的软件, 包含 jdk,Git,Gradle,Jenkins. 如果你不熟悉这些软件怎么安装, 可以查看本人之前发布的教程. 传送门: jdk 安装 https://www.jianshu.com/p/10949f44ce9c ,Git 安装 https://www.jianshu.com/p/89a2917ff5c1 ,Gradle 安装 https://www.jianshu.com/p/9d31b202e5ea ,Linux 下 Jenkins 安装 https://www.jianshu.com/p/c517f09df025 ,Docker 版本 Jenkins 的使用 https://www.jianshu.com/p/0391e225e4a6 .
另外, 你还需要在 Git 仓库中有一份可作为服务启动的 springboot 代码. 不熟悉的同学参考之前发布的教程. 传送门使用 GitHub 管理标准 springboot 代码 https://www.jianshu.com/p/23ecb0f9c31e .
三, 配置 Jenkins 使用的 JDK
登录 Jenkins 进入欢迎页面, 点击系统管理.
Jenkins 欢迎页面
进入管理页面, 点击 Global Tool Configuration 进入全局工具配置页面.
Jenkins 管理页面
在全局工具配置页面, 我们可以配置 JDK,Git,Gradle. 这里我们先配置 JDK, 点击新增 JDK.
Jenkins 全局工具 1
配置好 JDK 的别名, 以及设置 JAVA_HOME 路径, 按照之前 JDK 安装教程 https://www.jianshu.com/p/10949f44ce9c 的 yum 安装方式, JAVA_HOME 的路径应该是 / usr/lib/jvm/java-1.8.0.
Jenkins Jdk 配置
点击 Save,JDK 配置完成.
四, 在 Jenkins 配置 Git 路径
刚才配置好了 JDK, 现在我们开始配置 Git. 还是打开全局工具配置页面, 在 JDK 的配置下面, 可以看到 Git 相关的配置.
Jenkins Git 配置
Name 处写上别名, 叫什么都行, 这里习惯性写 Git;Path to Git executable 这个地方要注意, 不是填 Git 文件夹所在路径, 需要填写 Git 可执行文件的路径. 按照之前教程 Git 安装 https://www.jianshu.com/p/89a2917ff5c1 的手动下载源码安装的方式, 此处应该填写 / usr/local/Git/bin/Git.
点击 Save,Git 配置完成.
五, 配置 Jenkins 使用 Git 下载代码
刚才在 Jenkins 中配置了 Git, 现在开始使用 Git 来下载代码. 首先, 需要在 Linux 上生成一套 SSH Key, 并将 SSH Key 和 GitHub 相关联.
输入命令 SSH-keygen -t rsa -C "test@163.com" 来生成 SSH 公私钥. 注意把邮箱替换成自己的邮箱. 生成的时候会有输入框提示 第一次是让你输入文件的地址, 第二次和第三次是输出密码. 这里全部敲回车, 使用默认地址, 不设置密码.
生成 SSH 公私钥
现在 SSH 公私钥生成好了, 输入命令 tail /root/.SSH/id_rsa.pub 来获取公钥.
获取公钥
复制公钥, 到 GitHub 上打开管理页面关联上.
SSH Key 和 GitHub 关联
ps. 这里生成 SSHKey 是基于 Linux 安装 jenkins 的, 如果你使用的是 Docker 版, 参考 Docker 版本 Jenkins 的使用 https://www.jianshu.com/p/0391e225e4a6 这篇文章的最后一章.
现在 Jenkins 所在机器的 SSH Key 和 GitHub 关联上了, 我们回到 Jenkins 欢迎页面, 点击新建.
新建任务 1
在新建任务页面, 输入任务名, 选择构建一个自由风格的软件项目, 点击 OK.
新建任务 2
进入任务配置页面, 在源码管理选择 Git.
源码管理
Repository URL 字段填写 Git 远程仓库地址, 你可以从 GitHub 上找到.
Paste_Image.PNG
配置上 Git 远程仓库地址后, 可以看见有错误信息提示没有权限, 点击 Add 按钮, 添加证书. 注意 Kind 选 SSH username with private key,Private Key 选 From the jenkins master ~/.SSH, 点击 Add.
添加证书
回到源码管理页面, 选择刚才添加的证书, 错误信息消失标识配置成功. 点击保存.
选择证书
在项目控制台页面, 点击立刻构建, 来测试 Jenkins 是否可以成功从 Git 仓库下载代码.
项目控制台
等待构建执行结束, 在服务器进入 Jenkins 工程目录 / var/lib/jenkins/workspace. 可以看到目录下有文件夹 demo-jenkins-service. 进入文件夹, 可以看到项目相关代码.
查看下载代码
至此 Jenkins 使用 Git 下载代码配置成功.
六, 配置 Jenkins 使用 Gradle 构建代码
现在我们已经可以通过 Jenkins 使用 Git 下载代码了, 下面需要将代码构建成项目. 这里我们使用 Gradle 工具进行构建. 还没有安装 Gradle 的同学可以参考之前的教程 Gradle 安装 https://www.jianshu.com/p/9d31b202e5ea .
再次进入在全局工具配置页面, 进行 Gradle 的配置. name 处写别名, GRADLE_HOME 处填写 Gradle 安装的根目录, 根据之前教程安装的朋友, 这里填写 / opt/gradle/gradle-3.5. 填写完成后点击 Save.
Jenkins 配置 Gradle
打开任务, 进入任务配置页面, 在构建栏目下, 点击增加构建步骤, 选择 Invoke Gradle script.
配置 Gradle 脚本 1
在 Gradle 脚本页面, 选择 Invoke Gradle,Gradle Version 选择之前配置的 gradle,Tasks 输出 clean build. 表示需要 Gradle 先执行 clean 命令, 在执行 build 命令. 都填好后, 点击保存.
配置 Gradle 脚本 2
现在使用 Gradle 构建代码也配置好了, 我们来测试一下, 在任务页面点击立即构建, 等待执行成功.
Gradle 构建测试
执行成功后, 进入 Jenkins 工程目录, 发现 demo-jenkins-service 文件夹下多出了个 build 文件下, 里面有构建后的文件, 在 libs 文件夹下, 可以找到构建后的工程文件 demo-jenkins-service.jar.
Gradle 构建后检查
至此, 通过 Jenkins 使用 Git 下载代码并使用 Gradle 构建工程成功.
七, 配置 Jenkins 使用 SSH 插件推送 jar 包到其他服务器, 并启动 jar 包
现在我们已经可以通过 Gradle 构建用 Git 下载的代码了, 还需要将构建后的 jar 包推送到其他服务器去运行. Jenkins 提供了 SSH 传输的插件, 我们可以使用插件来推送文件.
先来安装 SSH 插件, 从系统管理进入管理插件页面.
插件管理
在可选插件中找到 Publish Over SSH, 选中后点击直接安装.
选择插件
安装中页面, 勾选上安装完成后重启, 耐心等待安装完成.
安装插件
现在插件安装好了, 开始配置插件. 从系统管理进入系统设置页面.
系统设置
在页面中找到 Publish over SSH, 点击增加.
设置服务器
Name 起一个别名, 这里叫 aliyun;Hostname 填写服务器 ip 地址; Username 填写服务器登录用户名; Remote Directory 填写登录后路径; 点击高级打开扩展页面, 勾选上使用密码认证, 在密码里填写登录用户名对应的密码.
设置服务器登录参数
全部填写好后, 点击 Test Configuration 测试是否可以成功访问服务器, 如果填写的信息都正确, 应该提示 Success, 点击保存完成访问服务器的配置.
测试访问服务器
现在设置好了访问服务器, 我们来配置把 jar 包传过去运行.
打开任务, 进入任务配置页面, 在构建后操作栏目下, 点击增加构建后操作步骤, 选择 Send build artifacts over SSH.
增加构建后操作
在配置页面填写参数, Name 选择我们刚才配置的服务器 aliyun;Source files 输入我们希望上传的包相对于工程根目录的路径, 根据 Gradle 构建的位置, 这里应该填 build/libs/demo-jenkins-service.jar;Remove prefix 是移除前缀, 这里填写 build/libs/, 如果不填的话, 插件会把 build/libs/demo-jenkins-service.jar 连文件夹一起传过去, 填写了就会只传一个 demo-jenkins-service.jar 文件; Remote directory 是服务器传接收上传文件的路径; 最后 Exec command 为上传成功后在服务器上执行的命令. 这里我们输入如下命令
- chmod 777 /service/demo-jenkins-service.jar
- rm -f /etc/init.d/demo-jenkins-service
- ln -s /service/demo-jenkins-service.jar /etc/init.d/demo-jenkins-service
- service demo-jenkins-service restart
这三行命令的意思是
1. 给文件 demo-jenkins-service.jar 赋予可执行权限
1. 强制删除 / etc/init.d/demo-jenkins-service 这个快捷方式
2. 将 / service/demo-jenkins-service.jar 这个文件创建一个 / etc/init.d/demo-jenkins-service 的快捷方式. 注:/etc/init.d 路径下的可执行文件将被自动注册为 Linux service.
3. 使用 service restart 命令重启刚注册的 service 服务.
设置文件传送后命令
等待 Jenkins 构建完成, 在浏览器访问该服务的接口.
测试服务器接口
可以成功访问.
至此, 在 Linux 中使用 Jenkins 集成 Git,Gradle 持续构建 Springboot 项目完成.
来源: http://www.bubuko.com/infodetail-2813300.html