coding自动化持续构建Springboot服务

介绍

coding持续集成,我这里就不多做介绍
相关文档请查看coding持续集成
构建计划分成基础信息流程配置触发规则变量与缓存通知提醒

新建构建计划

支持各种代码源coding,github,gitlab,码云等等,coding已经给你做好简易jenkinsfile模板,可以直接使用,进行构建计划
在这里插入图片描述

流程配置

这里比较方便,支持图形化编辑和文本编辑,使人一目了然。图形化显示从开始->检出代码->构建->测试->部署整个流程

  1. 检出代码
    默认会有检出scm代码,只需要配置环境变量即可,也可以通过coding系统默认变量使用,请查看官方文档说明,代码地址,分支,密钥等等都可以查看到,也可以单独配置环境变量
    GIT_BUILD_REF----分支
    GIT_REPO_URL----git地址
    CREDENTIALS_ID----部署私钥凭据 CredentialsId 用于拉取仓库(这里需要特殊说明下,需要在项目设置->开发者选项->凭据管理,进行配置凭据
    在这里插入图片描述
    配置完成后,就可以下拉代码,存在coding默认得/root/workspace/ 目录下。这里我也没有找到在哪里,估计腾讯单独服务器地址。

  2. 构建
    构建代码,我这里使用maven打包(最好设置下缓存,下次执行打包时,jar依赖直接从本地获取,缓存设置在【环境与缓存】配置)在这里插入图片描述
    配置打包命令和收集构建物
    在这里插入图片描述
    sh ‘mvn clean install’ // 构建 Maven 工程
    echo “编译完成.”
    archiveArtifacts artifacts: ‘**/target/*.jar’, fingerprint: true // 收集构建产物
    archiveArtifacts(artifacts: ‘start.sh’, fingerprint: true, onlyIfSuccessful: false)
    echo '收集构建产物完成.

  3. 测试
    这里根据自己写得单元测试来,作者比较懒,客户项目比较就没有做单元测试,读者可以根据实际情况来,如果有研究可以与我分享,

  4. 部署
    部署对运维来说,首要几个重要操作,连接服务器->文件上传->备份文件->停服务->启动服务
    针对这个操作,
    在这里插入图片描述
    脚本如下:
    def remote = [:]
    def jarPath = ‘/root/workspace/target/xx.jar’ // 你的jar名字
    def shellName = ‘start.sh’
    def shellPath = ‘/root/workspace/start.sh’ //执行shell脚本,我目前放在工程根目录下
    def soucePath = ‘/root/app/ssm/’ //存放目录
    remote.name = ‘server’
    remote.allowAnyHosts = true
    remote.host = ‘服务器IP地址’
    remote.port = 22
    remote.user = env.USERNAME
    remote.password = env.PASSWORD
    // 我这使用用户名和密码登陆,为了安全可以使用私钥来进行登陆。官网有建议,可以去官网文档查看
    withCredentials([usernamePassword(credentialsId: env.CREDENTIALS_SERVER_ID, usernameVariable: env.USERNAME, passwordVariable: env.PASSWORD)]) {
    remote.user = env.USERNAME
    remote.password = env.PASSWORD
    // SSH 上传文件到远端服务器
    sshPut remote: remote, from: jarPath, into: soucePath
    // SSH 升级脚本到远端服务器
    sshPut remote: remote, from: shellPath, into: soucePath
    // 备份
    sshCommand remote: remote, sudo: true, command: “cp -R /root/app/ssm/*.jar /root/app/ssm/bak/”
    sshCommand remote: remote, sudo: true, command: “chmod a+x /root/app/ssm/start.sh”
    sshCommand remote: remote, sudo: true, command: “/root/app/ssm/start.sh stop”
    sshCommand remote: remote, sudo: true, command: “/root/app/ssm/start.sh start”
    }
    echo ‘部署完成’
    附带脚本

#!/bin/bash
#package
APP_NAME=xxx.jar

#input param
usage() {
    echo "Usage: input param [start|stop|restart|status]"
    exit 1
}

#check server
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` 
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#start
start(){
   pushd /root/app/ssm/
   nohup java -jar $APP_NAME >/dev/null 2>&1 &

   echo "${APP_NAME} is  running..."
}

#stop
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi  
}

#status
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#restart
restart(){
  stop
  sleep 5
  echo "sleep 5 s  so  start"
  start
}

#param run method
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

触发规则

在这里插入图片描述

查看linux启动日志,就大功告成。

感谢您的阅读,还有很多优化地方。后面在做一版vue构建计划。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值