美文网首页
jenkins 使用 - 部署 springboot 应用

jenkins 使用 - 部署 springboot 应用

作者: somefree | 来源:发表于2019-12-03 17:18 被阅读0次

    接上文 jenkins 搭建 - rpm

    主要步骤

    • 使用 gitlab 部署专用账户, 拉取指定分支, 指定commit的代码
    • 使用 maven 编译和打包
    • 远程发送部署包到指定的主机和目录
    • 操作远程主机, 杀死旧的进程, 启动新的进程

    配套环境

    # 安装 git
    yum install git
    
    # 安装 maven
    wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
    sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
    yum install -y maven
    # 为 maven 配置镜像加速
    less /usr/share/apache-maven/conf/settings.xml
    # 修改 localRepository (个人喜好, 仅供参考)
    ## <localRepository>/usr/share/apache-maven/repo</localRepository>
    # 添加 mirror
    ##       <mirror>
    ##          <id>nexus-aliyun</id>
    ##          <mirrorOf>central</mirrorOf>
    ##          <name>Nexus aliyun</name>
    ##          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    ##      </mirror>
    
    # 开放 jenkins 用户的 bash 权限, jenkins 服务默认是由 jenkins 用户和组启动
    less /etc/passwd   # 将 jenkins 那一行的行尾, false 改为 bash
    
    # 切换 jenkins 用户, 配置远程主机的免密登录
    su jenkins
    cd ~/.ssh
    ssh-keygen -t rsa
    ssh-copy-id user@192.168.x.x
    

    新建任务

    • 起名字, 选择 自由风格, 确认
    • General

    丢弃旧的构建 - 建议勾选, 只保存有限的历史记录
    参数化构建过程 - 建议勾选, 使用变量编写脚本, 复用性和可维护性会大大提高
    以下是本示例使用的参数 (均为字符参数, 结合shell使用)

    参数名 参数说明 参数值
    PROJECT_NAME 项目名称 mms-backend
    REPO_URL 仓库地址 http://username:password@git.domain.com/first/mms-backend.git
    CHECKOUT_BRANCH 检出分支 master
    COMMIT_ID 提交短ID f2b45d3 或 HEAD
    MVN_CMD mvn打包命令 clean package -U -Dmaven.test.skip=true
    JAR_NAME jar包名称(不带后缀) mms-backend-1.0
    REMOTE_URL 远端用户地址 user@192.168.x.x
    REMOTE_DIR 远端目录('/'结尾) /opt/springboot/mms/
    JAVA_OPTION jvm参数 -Xms128M -Xmx128M -server -Dfile.encoding=UTF-8
    JAVA_PROFILE 自定义参数 --spring.profiles.active=beta
    • 源码管理 - 无
    • 构建触发器

    触发远程构建 (例如,使用脚本) - 按需勾选, 通过 http 远程执行任务
    其他工程构建后触发 - 按需勾选
    定时构建 - 按需勾选

    • 构建

    增加构建步骤 > 执行shell

    # 清除上次构建的内容
    rm -rf $PROJECT_NAME
    # 拉取代码
    git clone $REPO_URL
    cd $PROJECT_NAME
    git checkout $BRANCH
    git reset --hard $COMMIT_ID
    export PARAM_0=`git rev-parse --short $COMMIT_ID`
    # 打包
    mvn $MVN_CMD
    cd target
    # 发送远程主机
    scp $JAR_NAME.jar $REMOTE_URL:$REMOTE_DIR$JAR_NAME.$CHECKOUT_BRANCH.$PARAM_0.jar
    export PARAM_1=`ssh $REMOTE_URL ps -ef | grep $REMOTE_DIR$PROJECT_NAME | awk '{print $2}'`
    # 杀死旧进程
    ssh $REMOTE_URL bash -c "'kill -9 $PARAM_1'" || true
    sleep 1
    # 启动新进程
    ssh $REMOTE_URL bash -c "'rm -f $REMOTE_DIR$PROJECT_NAME.jar'"
    ssh $REMOTE_URL bash -c "'ln -s $REMOTE_DIR$JAR_NAME.$CHECKOUT_BRANCH.$PARAM_0.jar $REMOTE_DIR$PROJECT_NAME.jar'"
    ssh $REMOTE_URL bash -c "'nohup java $JAVA_OPTION -jar $REMOTE_DIR$PROJECT_NAME.jar $JAVA_PROFILE >/dev/null 2>&1 &'"
    
    • 构建后操作 - 按需添加

    执行任务

    • 在首页点击任务名称, 进入任务详情
    • 点击左侧的 Build with Parameters, 确认参数后, 开始构建
    • 查看构建历史, 控制台输出, 检查脚本执行过程

    远程执行任务

    • 添加远程访问的授权Token

    右上角, 点击用户名, 左侧点击设置, 在 API Token 下, 添加新 Token, 记录下来

    • 关闭跨域拦截

    主页 > 系统管理 > 全局安全设置 > 跨站请求伪造保护, 取消勾选

    • 通过 url 执行任务

    四个要素: 用户名, 用户token, 任务名, 任务token (任务 > 配置 > 构建 > 触发远程构建中配置)
    http://username:apitoken@192.168.x.x:8080/job/jobname/buildWithParameters?token=jobtoken&cause=测试远程执行

    • 查看构建历史, 控制台输出, 检查脚本执行过程

    相关文章

      网友评论

          本文标题:jenkins 使用 - 部署 springboot 应用

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