持续集成框架pipeline

pipeline 意思是流水线。在多环境的部署中pipeline是有很好的优势,目前集成pipeline的主要有jekins 跟bamboo两个软件。

其中bambaoo是收费的。

      这里我们讲解下pipeline的jekins安装

     参考下:https://my.oschina.net/ghm7753/blog/371954?p=1

     spring boot 开发的程序的pipeline的部署代码如下:

   node {
   // Mark the code checkout 'stage'....
   stage 'Checkout'
   
   git (url: 'git@bitbucket.org:ytx-dev/ytx-cms.git',branch:'develop') 


   // Get the maven tool.
   // ** NOTE: This 'M3' maven tool must be configured
   // **       in the global configuration.           
   def mvnHome = tool 'maven'


 // Mark the code build 'stage'....
   stage 'Build'
    // Run the maven build
   sh 'mvn -P production clean package'
   stage 'Send'
      sh 'sudo ansible cms -m ping'
      sh 'sudo ansible cms -m copy -a "src=/home/ubuntu/.jenkins/workspace/ytx-cms/ytx-cms-server/target/ytx-cms-server-1.0.0-SNAPSHOT.jar dest=/tmp"'
      sh 'sudo ansible cms -m copy -a "src=/home/ubuntu/.jenkins/workspace/ytx-cms/ytx-cms-web/target/ytx-cms-web-1.0.0-SNAPSHOT.jar dest=/tmp"'
    stage 'Deploy'
      sh 'curl -X POST http://172.0.19.213:6009/shutdown || true'
      sh 'sudo ssh -i /data/id_rsa ubuntu@172.0.19.213 "/home/ubuntu/deploy/ytx-cms-server/appctl.sh redeploy"'
      sh 'while ! httping -qc1 http://172.0.19.213:6009/health ; do sleep 1 ; done'
      sh 'curl -i  http://172.0.19.213:6009/health '
    }

其中appctl.sh 的脚本如下:

#!/usr/bin/env bash


APP_NAME="ytx-cms-server-1.0.0-SNAPSHOT.jar"

APP_PORT="6009"

MANAGEMENT_PORT="6009"

DATE=`date -d today +"%Y-%m-%d_%H"`

APP_PATH="/home/ubuntu/deploy/ytx-cms-server"

function stop_app() {

    kill -9 `lsof -t -i:${APP_PORT}`

}


function start_app() {

  /home/ubuntu/.jenv/candidates/java/current/bin/java -jar  ${APP_PATH}/${APP_NAME} >${APP_PATH}/pipeline.log &

}


function health_check() {

   http http://localhost:${MANAGEMENT_PORT}/health

}


case $1 in

     start)

         echo -e "\033[31m Start the Application \033[0m"

                ${APP_PATH}/${APP_NAME} &

         ;;

 redeploy)

         echo -e "\033[31m Stop the Application \033[0m"

         stop_app

         echo -e "\033[31m Backup application file \033[0m"

         mkdir -p ${APP_PATH}/backup

         mv ${APP_PATH}/${APP_NAME} ${APP_PATH}/backup/${APP_NAME}_${DATE}

         echo -e "\033[31m Copy application file from /tmp \033[0m"

         cp /tmp/${APP_NAME} /${APP_PATH}

         echo -e "\033[31m Start the Application at port: ${APP_PORT} \033[0m"

         start_app

         ;;

     health)

         echo -e "\033[31m Begin to health check \033[0m"

         health_check

         ;;

     metrics)

         echo -e "\033[31m Check application metrics \033[0m"

         http http://localhost:${MANAGEMENT_PORT}/metrics

         ;;

     *)

         echo -e "\033[31m Unkown command, please use start, stop, redeploy, health or metrics \033[0m"

         ;;

esac



其中注意事项:

1、java 远程执行的时候需要指定java的路径

2、spring boot jar包执行的时候不能停下来,所以必须后台执行

3、实时监控运行的状态

  sh 'while ! httping -qc1 http://172.0.19.213:6009/health ; do sleep 1 ; done'

如果运行成功那么停止下来

4、输出运行的

 sh 'curl -i  http://172.0.19.213:6009/health '


还未完成 ansible 需要循环输出每个服务器的信息,每个服务器逐步部署

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值