Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目

摘要: 原创出处 http://www.iocoder.cn/Jenkins/install/ 「芋道源码」欢迎转载,保留摘要,谢谢!

  1. 概述
  2. 快速入门
  3. 邮件通知
  4. 钉钉通知
  5. 彩蛋
    推荐阅读如下 Jenkins 文章:
    《芋道 Spring Boot 持续交付 Jenkins 入门》
    《芋道 Spring Cloud 持续交付 Jenkins 入门》 对应 labx-16
  6. 概述

目前国内绝大多数的团队,都采用 Jenkins 实现持续集成与持续发布。那么 Jenkins 是什么?在《Jenkins 用户文档中心》介绍如下:
Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
Jenkins 官方在《Jenkins 用户文档中心》中,已经提供了较为详细的教程,并且已经提供中文翻译,非常友好哈。不过考虑到胖友可能想要更加简便的快速入门的教程,于是艿艿就写了本文。
2. 快速入门

在本小节,我们会一起来搭建一个 Jenkins 服务,并部署一个 Spring Boot 应用到远程服务器。整个步骤如下:
1、搭建一个 Jenkins 服务
2、配置 Jenkins 全局工具
3、创建一个 Jenkins 任务。该任务从 Git 获取的项目,并使用 Maven 构建,并将构建出来的 jar 包复制远程服务器上,最后进行 Spring Boot 应用的启动。
友情提示:如下必备软件,胖友需要自行安装。
Jenkins 所在服务器:
JDK 8+
Maven 3+
Git
远程服务器:
JDK 8+
2.1 Jenkins 搭建

2.1 下载
打开 Jenkins 下载页面,选择想要的 Jenkins 版本。这里,我们选择 jenkins.war 软件包,通用所有操作系统,切版本为 2.204.1。

#创建目录
$ mkdir -p /Users/yunai/jenkins
$ cd /Users/yunai/jenkins

#下载
$ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

2.1.2 启动 Jenkins 服务
执行 nohup java -jar jenkins.war & 命令,后台启动 Jenkins 服务。因为 jenkins.war 内置 Jetty 服务器,所以无需丢到 Tomcat 等等容器下,可以直接进行启动。
执行完成后,我们使用 tail -f nohup.out 命令,查看下启动日志。如果看到如下日志,说明启动成功:

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

e24a2134060f4604b45708904a4f7a25

This may also be found at: /Users/yunai/.jenkins/secrets/initialAdminPassword

默认情况下,Jenkins 内置一个管理员用户。其用户名为 admin,密码随机生成。这里,我们可以看到一串 e24a2134060f4604b45708904a4f7a25 就是密码。
2.2 Jenkins 配置

2.2.1 新手入门
默认情况下,Jenkins 启动在 8080 端口。所以,我们可以使用浏览器,访问 http://127.0.0.1:8080/ 地址,进入 Jenkins 首页。因为此时我们未完成 Jenkins 的入门,所以被重定向「入门」页面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第1张图片

输入管理员密码,我们进入「新手入门」页面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第2张图片

作为一个 Jenkins 萌新,我们当然选择「安装推荐的插件」。此时,我们需要做的就是乖乖的耐心等待 Jenkins 自动下载完插件。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第3张图片

因为插件是从国外下载,所以下载速度可能比较慢,可以打开 B 站刷会视频,哈哈哈。当然,也可能出现插件下载失败的情况,点击重试即可,保持淡定。
2.2.2 管理员配置
安装完插件之后,会跳转到「创建第一个管理员用户」界面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第4张图片

点击「保存并完成」按钮,完成管理员账号的创建。
2.2.3 实例配置
创建完管理员账号,会要求重新登录。使用新的管理员账号登录完毕后,会跳转到「实例配置」界面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第5张图片

点击「保存并完成」按钮,完成实例的配置。此时,通过点击「重启」按钮,完成 Jenkins 的重启。之后,耐心等待 Jenkins 完成重启,我们将会进入 Jenkins 首页。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第6张图片

2.2.4 安全其它插件
虽然我们在「2.2.1 新手入门」中,已经安装 Jenkins 推荐的一些插件,但是我们还需要安装如下插件:
Maven Integration
Maven Info
Publish Over SSH
Extended Choice Parameter
Git Parameter
从 Jenkins 首页开始,按照「Manage Jenkins -> Manage Plugins」的顺序,进入「插件管理」界面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第7张图片

安全其它插件 - 第一步
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第8张图片

安全其它插件 - 第二步
选择上述要安装的几个插件,然后点击「直接安装」按钮。之后,会进入「安装/更新 插件中」界面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第9张图片

之后,耐心等待插件安装完成…
2.2.4 JDK 配置
从 Jenkins 首页开始,按照「Manage Jenkins -> Global Tool Configuration」的顺序,进入「Global Tool Configuration」界面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第10张图片

点击「新增 JDK」按钮,并取消「Install automatically」选项。之后,输入本地的 JAVA_HOME。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第11张图片
配置完成后,点击最下面的「保存」按钮。
2.2.5 Maven 配置
从 Jenkins 首页开始,按照「Manage Jenkins -> Global Tool Configuration」的顺序,进入「Global Tool Configuration」界面。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第12张图片

点击「新增 Maven」按钮,并取消「Install automatically」选项。之后,输入本地的 MAVEN_HOME。如下图所示:

Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第13张图片

配置完成后,点击最下面的「保存」按钮。
2.2.6 SSH 配置
因为我们通过 SSH 复制构建出来的 jar 包到远程服务器上,所以我们需要进行 SSH 配置。这里,我们使用账号密码的认证方式,实现 SSH 连接到远程服务器。
从 Jenkins 首页开始,按照「Manage Jenkins -> Configure System」的顺序,进入「配置」界面,然后下拉到最底部。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第14张图片

点击「新增」按钮,并点击「高级」按钮。之后,配置远程服务器的 SSH 信息。如下图所示:
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目_第15张图片

配置完成后,点击最下面的「保存」按钮。
2.3 远程服务器配置

在远程服务器上,我们需要创建 Java 项目部署的目录。每个公司制定的目录规范不同,这里艿艿分享下自己的。固定在 /work/projects 目录下,创建每个项目的部署目录。并且,每个项目独立一个子目录。例如说:

$ pwd
/work/projects/lab-41-demo01

$ ls
ls -ls
total 18852
    4 drwxr-xr-x 2 root root     4096 Jan 13 21:21 backup
    4 drwxr-xr-x 2 root root     4096 Jan 13 21:14 build
18840 -rw-r--r-- 1 root root 19288579 Jan 13 21:21 lab-41-demo01.jar
    4 drwxr-xr-x 2 root root     4096 Jan 13 21:16 shell

lab-41-demo01 目录,会放置一个项目的所有。
在每个子目录下,固定分成如下文件/目录:
lab-41-demo01.jar:项目的 jar 包。
build 目录:Jenkins 构建完项目后的新 jar 包,会上传到 build 目录下,避免对原 jar 包覆盖,导致无法正常关闭 Java 服务。
backup 目录:对历史 jar 包的备份目录。每次使用新的 jar 启动服务时,会将老的 jar 移到 backup 目录下备份。
shell 目录:脚本目录。目前只有 deploy.sh 脚本,我们来一起瞅瞅。
整个 deploy.sh 脚本,有接近 200 行不到,所以我们先来整体看看。后续,胖友可以点击 传送门 ,进行完整查看。核心代码如下:

#!/bin/bash
set -e

#基础
#export JAVA_HOME=/work/programs/jdk/jdk1.8.0_181
#export PATH=PATH=$PATH:$JAVA_HOME/bin
#export CLASSPATH

你可能感兴趣的:(Java,linux,java,编程语言,springboot,程序员)