美文网首页javaWeb学习JavaSpringBoot
Jenkins自动部署怎么玩

Jenkins自动部署怎么玩

作者: 帅大叔的简书 | 来源:发表于2019-05-07 09:53 被阅读260次

    概述

    • 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 容器,也可以通过java -jar jenkins.war & 的方式启动。
    如果插件安装失败的话,可以去镜像地址: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 构建之后的jar 根路径
    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
    
    nohup java -jar $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为例,其他的也差不多!!!

    相关文章

      网友评论

        本文标题:Jenkins自动部署怎么玩

        本文链接:https://www.haomeiwen.com/subject/xmacoqtx.html