Jenkins安装与持续部署

一、安装与配置

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

1.安装

这里使用的是Docker启动Jenkins。也可以使用war包启动,以下的操作都差不多。

#1.docker拉取jenkins镜像,版本为2.313(注意:拉取的镜像为jenkins/jenkins,不是jenkins,不然插件安装找不到下载地址)
docker pull jenkins/jenkins:2.313

#2.创建挂载目录,并给予777的权限(挂载目录自定义)
mkdir /usr/local/jenkins_mount
chmod 777 /usr/local/jenkins_mount

#3.启动容器
docker run -d -p 10240:8080 -v /etc/localtime:/etc/localtime:ro -v /usr/local/jenkins_mount:/var/jenkins_home --privileged=true --name 容器名称  镜像ID或镜像名字

#4.查看容器启动日志,得到jenkins初始化密码
docker logs 容器名字,日志如下
INFO:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
75ea7c3b45774df8ba40a2a1e99a1355 --> 注意:这里就是初始化密码
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
--> setting agent port for jnlp
--> setting agent port for jnlp... done

#5.访问IP:10240端口,输入初始化密码之后,选择默认插件安装

#6.插件安装完后,访问IP:10240/restart来重启jenkins,插件生效

2.用户权限

用户分配角色,不同的角色具有操作不同项目的权限(如构建、部署等)

(1).安装插件,插件名称
Role-based Authorization Strategy


(2).配置授权策略
Manage Jenkins --> Configure Global Security --> 授权策略(Role-Based Strategy) --> 保存


(3).创建角色,不同角色拥有不同的操作权限
在这里插入图片描述


(4).新增用户
Manage Jenkins --> Manage Users --> 新增用户


(5).分配角色
在这里插入图片描述

3.凭证配置

凭据可以用来存储需要密文保护的数据库密码、Gitee密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。插件名称(Credentials Plugin)

(1).Username with password类型

1.添加一个登录到Gitee的凭据( 系统管理 --> Manage Credentials --> 全局 --> 添加凭据 --> 通过用户密码添加自己的Gitee账户信息 ),如图所示
在这里插入图片描述


2.进入Jenkins操作:新建任务 --> 输入任务名称(构建一个自由风格的软件项目),如图所示
在这里插入图片描述


3.示例:登录到自己Gitee上,打开个项目,点击克隆/下载,复制上面的HTTPS下载链接
在这里插入图片描述


4.打开刚才新建的项目(zhf_system),点击源码管理 --> 选择Git --> 复制HTTPS下载链接 --> 选择添加的凭据 --> 应用 --> 保存
在这里插入图片描述


5.最后点击项目 --> 立即构建 --> 构建历史 --> 控制台输出
在这里插入图片描述

(2).SSH Username with private key类型

1.在系统中通过命令生成私钥和公钥,执行完后,通过ls -a,可以看到.ssh文件夹,进入之后可以看到两个文件( id_rsa私钥、id_rsa.pub公钥 )
在这里插入图片描述


2.复制公钥( id_rsa.pub公钥 )到Gitee去
在这里插入图片描述


3.添加一个登录到Gitee的凭据( 系统管理 --> Manage Credentials --> 全局 --> 添加凭据 --> 通过SSH添加私钥信息 ),如图所示
在这里插入图片描述


4.登录到自己Gitee上,打开个项目,点击克隆/下载,复制上面的SSH下载链接,如图所示
在这里插入图片描述


5.新建的项目(zhf_system),点击源码管理 --> 选择Git --> 复制HTTPS下载链接 --> 选择添加的凭据 --> 应用 --> 保存
在这里插入图片描述


6.最后点击项目 --> 立即构建 --> 构建历史 --> 控制台输出
在这里插入图片描述

4.系统中配置环境变量

如果是用docker启动的jenkins,那么要想自定义指定jenkins的JAVA、Maven等环境,则需要把这些软件都安装到Jenkins挂载目录下。
在这里插入图片描述

5.配置Jenkins全局环境变量

在这里插入图片描述
·

二、Pipeline流水线项目构建

需要安装Pipeline插件

Pipeline,简单来说,就是一套运行在Jenkins上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作

1.JAVA项目

(1).简单生成流水线语法

(1).新建一个流水线项目 --> 点开流水线项目 --> 配置 --> 流水线 --> 流水线语法
在这里插入图片描述


(2).片段生成器 --> 示例步骤 --> 选择checkout:Check out from version control --> 生成流水线脚本
在这里插入图片描述
根据上面,生成的流水线脚本复制到下面的stage步骤所对应的阶段( 例如:拉取代码 )
根据Shell脚本生成Pipeline流水线命令,生成的流水线脚本复制到下面的stage步骤所对应的阶段( 例如:构建项目 )

(2).成功部署的脚本示例
pipeline {
agent any

stages {
	# 步骤一:拉取代码
   stage('pull') {
       steps {
           checkout([$class: 'GitSCM', branches: [[name: '*/release']], extensions: [], userRemoteConfigs: [[credentialsId: '流水线语法生成的凭证ID', url: '远程仓库SSH地址']]])
       }
   }
   # 步骤二:打包项目
   stage('build') {
       steps {
           sh 'mvn clean package'
       }
   }
   # 注意:步骤三和步骤四,都需要先设置Jenkins免密登录到远程的服务器(可以看我上一篇文章“Linux配置ssh免密问题”),否则会无法拷贝和执行远程脚本
   # 步骤三:拷贝项目jar到远程服务器
   stage('scp jar') {
        steps {
           sh 'scp 项目名称.jar 用户名@服务器地址:/home/zhf/backend/'
       }
   }
   # 步骤四:执行远程服务器脚本,发布项目
    stage('publicsh') {
       steps {
           sh 'ssh 用户名@服务器地址 "sh /home/zhf/backend/start.sh"'
       }
   }
}
}
(3).远程脚本的命令根据自己项目来编写,这里是我项目的编写脚本,可以参考

SpringBoot项目

#! /bin/bash
source /etc/profile
# 根据自己项目的名称,这是为了后面寻找该项目的进程
prepName=eladmin-system
projectPath=项目存放的路径
# 该命令是获取项目的进程号。$prepName为上面定义的变量(项目名称)
javaPid=`ps -ef | grep java | grep $prepName | awk '{print $2}'`
# 记录该脚本是否有启动完成,记得需要创建start.log文件
dateTime=`date -d today +"%Y-%m-%d %H:%M:%S"`
# 如果项目进程没有,则不需要杀死
if [ "$javaPid" ==  "" ];then
 `echo "process not exit -------${dateTime}" >> ${projectPath}/start.log`
else
 `kill -9 $javaPid`
 `echo "process kill success --------${dateTime}" >> ${projectPath}/start.log`
fi
`echo "process start success --------${dateTime}" >> ${projectPath}/start.log`
# 进入项目路径下
cd ${projectPath}
# 启动项目的命令
nohup java -Dfile.encoding=UTF-8  -jar ${projectPath}/项目名称.jar --spring.profiles.active=prod > ${projectPath}/nohup.out 2>&1 &

流水线项目可以创建两个,相应的项目仓库分支也需要创建两个。一个做为最新版本、一个做为上一个版本,当最新版本出现问题的时候,可以马上回退到上一个稳定的版本。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值