- 一、安装与配置
- 1.安装
- 2.用户权限
- 3.凭证配置
- (1).Username with password类型
- (2).SSH Username with private key类型
- 4.系统中配置环境变量
- 5.配置Jenkins全局环境变量
- 二、Pipeline流水线项目构建
- 1.JAVA项目
- (1).简单生成流水线语法
- (2).成功部署的脚本示例
- (3).远程脚本的命令根据自己项目来编写,这里是我项目的编写脚本,可以参考
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.用户权限
用户分配角色,不同的角色具有 *** 作不同项目的权限(如构建、部署等)
3.凭证配置(1).安装插件,插件名称
Role-based Authorization Strategy
(2).配置授权策略
Manage Jenkins --> Configure Global Security --> 授权策略(Role-based Strategy) --> 保存
(3).创建角色,不同角色拥有不同的 *** 作权限
(4).新增用户
Manage Jenkins --> Manage Users --> 新增用户
(5).分配角色
凭据可以用来存储需要密文保护的数据库密码、Gitee密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。插件名称(Credentials Plugin)
(1).Username with password类型(2).SSH Username with private key类型1.添加一个登录到Gitee的凭据( 系统管理 --> Manage Credentials --> 全局 --> 添加凭据 --> 通过用户密码添加自己的Gitee账户信息 ),如图所示
2.进入Jenkins *** 作:新建任务 --> 输入任务名称(构建一个自由风格的软件项目),如图所示
3.示例:登录到自己Gitee上,打开个项目,点击克隆/下载,复制上面的HTTPS下载链接
4.打开刚才新建的项目(zhf_system),点击源码管理 --> 选择Git --> 复制HTTPS下载链接 --> 选择添加的凭据 --> 应用 --> 保存
5.最后点击项目 --> 立即构建 --> 构建历史 --> 控制台输出
4.系统中配置环境变量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.最后点击项目 --> 立即构建 --> 构建历史 --> 控制台输出
如果是用docker启动的jenkins,那么要想自定义指定jenkins的JAVA、Maven等环境,则需要把这些软件都安装到Jenkins挂载目录下。
·
需要安装Pipeline插件
Pipeline,简单来说,就是一套运行在Jenkins上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作
1.JAVA项目 (1).简单生成流水线语法(2).成功部署的脚本示例(1).新建一个流水线项目 --> 点开流水线项目 --> 配置 --> 流水线 --> 流水线语法
(2).片段生成器 --> 示例步骤 --> 选择checkout:Check out from version control --> 生成流水线脚本
根据上面,生成的流水线脚本复制到下面的stage步骤所对应的阶段( 例如:拉取代码 )
根据Shell脚本生成Pipeline流水线命令,生成的流水线脚本复制到下面的stage步骤所对应的阶段( 例如:构建项目 )
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 &
流水线项目可以创建两个,相应的项目仓库分支也需要创建两个。一个做为最新版本、一个做为上一个版本,当最新版本出现问题的时候,可以马上回退到上一个稳定的版本。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)