Jenkins自动部署怎么玩

概述

  • Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
  • 1、持续的软件版本发布/测试项目。
  • 2、监控外部调用执行的工作

一、环境

二、下载安装

  • 1、去官网:https://jenkins.io/download/ 下载 .war 包文件。
  • 2、wgethttp://mirrors.jenkins.io/war-stable/latest/jenkins.war
  • 3、把jenkins.war包放在tomcat下面的webapps目录下面
  • 4、启动tomcat会自动解压war包,生成一个jenkins文件夹,而且会在root目录下生成一个.jenkins的文件夹
  • 5、浏览器访问http://ip:端口/jenkins
  • 6、输入初始化密码,位置在上面提示的路径($user.home/.jenkins/secrets/initialAdminPassword),比如你是root用户:/root/.jenkins/secrets/initialAdminPassword
  • 7、选择插件安装界面,选择第一个,安装社区推荐的即可
  • 8、之后创建一个用户
  • 9、创建用户之后,就可以使用jenkins了
启动成功
安装社区推荐的插件
安装完成

除了放在servlet 容器,也可以通过nohup java -jar jenkins.war --httpPort=8888 & 的方式启动。
如果插件安装失败的话,可以去镜像地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/
手动下载然后通过插件管理中的高级选择进行上传

上传插件

三、全局工具配置

在Jenkins 中的全局工具配置中,配置

  • JDK
  • Git
  • Maven
    配置上面几个工具的路径
    路径配置示例图

四、Github 配置

在Jenkins 访问Github 项目的时候,有时需要授权,为了保险 所以我们在Github上给Jenkins 生成一个令牌(Personal access tokens)。

1、生成 Personal access tokens

  • 在Github个人设置里面(Settings
  • 点击Developer settings
  • 进去之后,点击Personal access tokens
  • 之后点击Generate new token按钮
  • 选择repoadmin:repo_hook选项
  • 最后点击下方Generate token 绿色按钮生成token
  • 生成一个token字符串,记录下来,后面不显示的
生成token令牌
生成token的选项
生成token成功,记录字符串下来,后面用到

2、生成凭据

  • 在Jenkins管理界面中,点击凭据
  • 点击全局凭据
  • 添加凭据
  • 然后类型选择Secret text,Secret 选项就是在Github生成的token,描述那里随便写,然后添加
这个就需要上面生成的token

3、配置Jenkins 的Github Server

进入Jenkins 的系统设置

  • 在Github 服务器那,添加Github服务器
  • 凭据选择刚才上一步的凭据
  • 点击右边连接测试
  • 没问题,保存
点击连接测试,出来limit:数字,说明成功

五、构建任务

准备工作都准备好了,开始构建吧。

jenkins-build.png

1、手动构建

这个的意思就是,当你推送代码了,但是Jenkins不会帮你立即部署,需要你主动去点一下构建

当多人开发的时候,没人都推送了才去手动构建也是一个好的方式。缺点:不够自动呗,别急后面有自动

  • 1、新建任务,名称为test2
  • 2、选择、构建一个自由风格的软件项目
    这个比较灵活,自由配置
  • 3、选择Github项目
    项目URL,填你自己的,比如我:https://github.com/rstyro/SpringBoot-test.git/
  • 4、源码管理选择Git
    仓库选择源代码 仓库地址,比如我:https://github.com/rstyro/SpringBoot-test.git,如果你是私人仓库即可添加凭证
  • 5、构建触发器构建环境全部为空
    因为是手动构建这两个不需要配置
  • 6、构建那里选择,添加构建步骤 然后选择Maven执行Shell
    maven 目标选择
  • 7、最后就可以保存了

示例图片如下

示例图.png
maven,与shell配置示例图.png

BUILD_ID=DONTKILLME 这行是必不可少的,否则会jenkins会杀掉shell进程,导致自动部署失败。

上面保存之后,点击构建,去看看控制台打印

Started by rstyro 这个是通过用户触发的,也就是用户手动构建的

构建成功

test_run.sh 内容如下

#!/bin/bash
BUILD_ID=DONTKILLME
# jenkins 构建的工作路径,test2是任务名称,注意改
JAR_PATH="/root/.jenkins/workspace/test2"

# 项目 打包之后的路径
PROJ_PATH="/data/jar"

# 打包后的名称
JAR_NAME="springboot-test"

# 文件的后缀
FILE_TYPE="jar"

# 备份的文件夹名称
BACKUP="backup"

### base函数
kill()
{
    pid=`ps -ef | grep $JAR_NAME.$FILE_TYPE |grep -v color |grep -v grep | awk '{print $2}'`
    echo "$JAR_NAME pid is ${pid}"
    if [ "$pid" = "" ]
    then
        echo "no $JAR_NAME pid alive"
    else
                echo "killing start"
        sudo kill -9 $pid
        echo "killing end"
    fi
}

#停止之前的进程
echo "killing before"
kill
echo "killing after"

#创建备份目录
cd $PROJ_PATH

if [ ! -d "$BACKUP" ];then
      sudo mkdir -p $BACKUP
      cd $BACKUP
      sudo mkdir log
fi
echo $PROJ_PATH
cd $PROJ_PATH
#创建运行目录
if [ ! -d run ];then
      sudo mkdir -p run
fi

#备份之前的版本
cd $PROJ_PATH/run
if [ -f "$JAR_NAME.$FILE_TYPE" ];then
    sudo mv $JAR_NAME.$FILE_TYPE $PROJ_PATH/$BACKUP/$JAR_NAME$(date "+%Y%m%d%H%M%S").$FILE_TYPE
fi
if [ -f "print.out" ];then
    sudo mv print.out $PROJ_PATH/$BACKUP/log/print$(date "+%Y%m%d%H%M%S").out
fi

#将打包好的文件移动到run上
cd $JAR_PATH

if [ -d target ];then
      cd target
      sudo mv $JAR_NAME.$FILE_TYPE $PROJ_PATH/run/$JAR_NAME.$FILE_TYPE
      cd ../
fi

#启动服务
cd $PROJ_PATH/run

# 启动的是dev 环境的配置 
nohup java -jar -Dspring.profiles.active=dev $JAR_NAME.$FILE_TYPE >print.out 2>&1 &

这个脚本不是很难,学过点shell都会,这个不适合,你就改就ok了,只是示例

2、自动构建

  • 利用到 Github的Webhooks
  • 在Github项目的Settings 配置Webhooks
  • 点击Add webhookPlayload URL 填写Jenkins 的webhook 地址
  • 下面如何触发webhook ,直接选择第一个选项推送(Just the push event)即可
  • 点击下面Add webhook按钮进行添加
  • 然后在Jenkins构建任务的时候与上面的步骤差不多
  • 就是第5步,那里选择 构建触发器选择GitHub hook trigger for GITScm polling 这个选择即可
  • 然后当我们推送项目的时候,Github就会通知 Jenkins 进行构建
webhooks 连接成功
配置触发器为webhooks
然后修改代码,看看是否会自动构建

Started by GitHub push by rstyro 这个打印说明通过Github 推送自动触发的,说明Webhooks 配置成功。搞定

六、用户权限管理

1、配置步骤

  • 1、安装插件Role-based Authorization Strategy
  • 2、进入全局安全配置
  • 3、当插件安装好的时候,授权策略会多出一个Role-Based Strategy选项
  • 4、选择该项并保存
jenkins-auth.png

2、管理分配角色

  • 1、系统管理中有一个 Manage and Assign Roles 的选项
  • 2、选择Manage Roles 管理角色
  • 3、可以创建3种角色:Global roleProject rolesSlave roles
    全局角色可以对jenkins系统进行设置与项目的操作
    项目角色只能对项目进行操作
    节点角色只能对节点进行操作
  • 4、可以按照你的需求配置角色
  • 5、然后再次进入Manage and Assign Roles 的选项
  • 6、选择Assign Roles 分配角色
  • 7、在 User/group to add 后面指定一个用户,点击Add
  • 8、之后给这个用户选择一个角色即可
jenkins-auth-role.png
jenkins-auth-role-manage.png
jenkins-auth-role2.png
jenkins-auth-role3.png

3、角色选项说明

  • Overall(全部)
    • Administer
      管理员
    • Read
      只读权限
  • Credentials(凭证)
    • Create 创建
    • Delete 删除
    • ManageDomains 管理娱
    • Update 更新
    • View 查看
  • Slave(代理)
    • Build 构建
    • Configure 配置
    • Connect 连接
    • Create 创建
    • Delete 删除
    • Disconnect 断开连接
    • Provision
  • Job(任务)
    • Build 构建
    • Cancel 取消构建
    • Configure 配置
    • Create 创建
    • Delete 删除
    • Discover 重定向
    • Move 移动
    • Read 只读
    • Workspace 查看工作区
  • Run(运行)
    • Delete 删除
    • Replay 重启
    • Update 更新
  • View(视图)
    • Configure 配置
    • Create 创建
    • Delete 删除
    • Read 查看
  • SCM Lockable Resources
    SCM配置
    • Tag tag构建
    • Reserve
    • Unlock

ok,基本上够用了,一通百通。上面以Github为例,其他的也差不多!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容