Jenkins的介绍

      官方版:Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

     作者版:写完代码提交到仓库就自动部署。

需求

在window上写SpringBoot项目,写完代码后pull到github上可以自动打包并且运行jar

注意

仓库使用Github,仓库使用Github,仓库使用Github,如果使用Gitee,那么webhook那个地方会有个坑,注意一下

前提

Linux(能连外网)+JDK8 + Git+Github+Maven会配置并且使用

Linux安装Maven

安装Maven:​​linux安装maven简易步骤 - 简书​

配置Maven中央镜像:​​Maven中本地仓库,中央镜像,JDK版本配置_CBeann的博客

1)其中配置远程镜像仓库的setting.xml在 apache-maven-3.6.3/conf 目录下

2)注意自己的目录问题

Linux安装git

yum -y install git
git --version

基本功能模块

Jenkins的简单使用【图文并茂】_jenkins

文件目录结构

博客肯定有自己的目录,但是我在这里写的不是废话,有助于阅读全文

1)Linux安装Jenkins:Linux怎么安装Jenkins(比如下载Maven并且配置了Maven的环境的变量)

2)Jenkins全局配置:设置Jenkins的一些全局属性(比较安装好Maven后你要设置仓库镜像地址、本地仓库地址等

3)在IDEA中创建Boot项目并且传到github:就是简单的创建项目并且上传打github

4)创建Jenkins任务关联项目:核心操作

   4.1)源码管理:关联github,自动部署要有仓库吧,这个地方设置仓库URL和其他验证信息。

   4.2)构建触发器:触发构建的前提条件,就是满足什么条件才能触发构建条件,此处是访问某个 URL  时就触发了构建模块。

   4.3)构建:核心逻辑,此处就是把仓库里的代码 clean install

   4.4)构建后操作:当构建完毕后执行的操作,此处就是 构建的结果是xx.jar  , 构建后操作就是执行jar呗

   4.5)手动构建:测试一下构建是什么操作,其实就是手动触发构建,只有手动正确了自动才放心。

5)配置github的webhooks:关联jenkins触发器,当github仓库有pull请求时候就触发构建触发器,从而执行构建操作

Linux安装Jenkins

下载最新的 jenkins.war (​​http://mirrors.jenkins.io/war-stable/latest/jenkins.war​​) 

把war包放在tomcat服务器里

在浏览器输入 ​​http://39.105.30.146:8080/jenkins/​

然后跳转到如下页面,其中密码在图中已经告诉你位置

cat /root/.jenkins/secrets/initialAdminPassword

Jenkins的简单使用【图文并茂】_maven_02

输入密码后点击右下角的继续

Jenkins的简单使用【图文并茂】_jenkins_03

下一步 

Jenkins的简单使用【图文并茂】_jenkins_04

全部安装成功以后,很久以后。。。如下图所示,选择admin用户,密码为上面的密码

Jenkins的简单使用【图文并茂】_jar_05

如下图所示

Jenkins的简单使用【图文并茂】_maven_06

安装成功后如图所示

Jenkins的简单使用【图文并茂】_jenkins_07

Jenkins全局配置

主页面

Jenkins的简单使用【图文并茂】_Jenkins_08

全局安全配置Configure Global Security

Jenkins的简单使用【图文并茂】_maven_09

Jenkins的简单使用【图文并茂】_Jenkins_10

全局工具配置Global Tool Configuration

Jenkins的简单使用【图文并茂】_运维_11

Jenkins的简单使用【图文并茂】_jar_12

Jenkins的简单使用【图文并茂】_运维_13

Jenkins的简单使用【图文并茂】_jenkins_14

Jenkins的简单使用【图文并茂】_maven_15

在IDEA中创建Boot项目并且传到github

这个没啥好说的,就是一个SpringBoot项目

Jenkins的简单使用【图文并茂】_jenkins_16

创建Jenkins任务关联项目

主页面

Jenkins的简单使用【图文并茂】_jenkins_17

Jenkins的简单使用【图文并茂】_Jenkins_18

源码管理:关联github

Jenkins的简单使用【图文并茂】_maven_19

Jenkins的简单使用【图文并茂】_Jenkins_20

Jenkins的简单使用【图文并茂】_Jenkins_21

构建触发器:触发构建的前提条件

目的

当访问(​​http://39.105.30.146:8080/job/jkdemo/build?token=jkdemo123​​)时,会构建触发器去构建项目

配置

格式:JENKINS_URL/              job/jkdemo/build?token=TOKEN_NAME
===>>>
实例:http://39.105.30.146:8080/job/jkdemo/build?token=jkdemo123

Jenkins的简单使用【图文并茂】_maven_22

构建:核心逻辑

Jenkins的简单使用【图文并茂】_jenkins_23

Jenkins的简单使用【图文并茂】_Jenkins_24

构建后操作:当构建完毕后执行的操作,执行shell脚本

Jenkins的简单使用【图文并茂】_运维_25

注意:下图可能没有Post build task 选项 ,需要安装插件 Post Build task,安装插件方式在遇到的问题中

Jenkins的简单使用【图文并茂】_运维_26

Jenkins的简单使用【图文并茂】_jenkins_27

 脚本的内容大致为:把xxx.jar包从仓库复制到某个地方,然后获取正在运行的xxx.jar的进程ID,然后关闭,在运行java -jar xxx.jar

脚本需要修改,不能直接用

#!/bin/bash
cp /root/.m2/repository/com/example/jkdemo/0.0.1-SNAPSHOT/jkdemo-0.0.1-SNAPSHOT.jar /opt/cbeann/jkdemo-0.0.1-SNAPSHOT.jar
your_name=$(ps -ef | grep jkdemo-0.0.1-SNAPSHOT.jar | grep -v grep)
#echo ${your_name}

array=(${your_name// / })



process_id=${array[1]} ##获得进程ID

kill -9 ${process_id}

java -jar /opt/cbeann/jkdemo-0.0.1-SNAPSHOT.jar &

手动构建:测试一下构建是什么操作

点击左边的   立即构建,就会出现 左下角的 进度条

Jenkins的简单使用【图文并茂】_运维_28

Jenkins的简单使用【图文并茂】_jar_29

进度条完毕后会出现工作区,里面放着源代码

Jenkins的简单使用【图文并茂】_jenkins_30

配置github的webhooks:关联jenkins触发器

Jenkins的简单使用【图文并茂】_maven_31

Jenkins的简单使用【图文并茂】_jenkins_32

遇到的问题

1)新版Jenkins禁用CSRF

修改tomcat-8.5.55\bin\catalina.sh

JAVA_OPTS="-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"

Jenkins的简单使用【图文并茂】_Jenkins_33

2)jenkins安装插件

以安装插件 Post Build task 为例

Jenkins的简单使用【图文并茂】_jenkins_34

Jenkins的简单使用【图文并茂】_jar_35

参考

Jenkins详细教程 :  ​​Jenkins详细教程 - 简书​

linux tomcat7设置jvm启动参数

视频:  尚硅谷Jenkins视频教程(从安装部署到环境搭建)_哔哩哔哩_bilibili

jenkins 构建后 执行shell命令:  ​​jenkins 构建后 执行shell命令_那一年漫天雪的博客