在上一篇文章Devops关键工具及技术(四)—基于Pipeline的SonarQube静态代码扫描中,我们在持续集成的基础上加上了静态代码扫描,并利用Pipeline对之前Spring-boot的工程进行了代码扫描。并且在SonarQube中看到了代码中各个指标的一些信息。代码工程Github地址为:https://github.com/zbbkeepgoing/springboot-demo 。
接下来我们将会为Pipeline加上部署的Stage,部署采用sh脚本进行部署。后续我们将会采用Ansible的自动化部署。
Sh脚本
沿用之前的Spring-boot工程,经过持续集成后,我们将会得到maven构建后的一个jar包,这个jar即是工程的启动jar包。而我们需要把这个jar部署到另外一台机器上,实现从持续集成、代码静态扫描、以及部署的整个过程 。
首先我们看一下sh脚本的内容:
#!/bin/bash
id=$(ps -ef|grep sample.jar|grep -v grep|awk '{print $2}') //查找出名称中sample.jar的进程
if [ ! $id ]; then echo "process not started"; else kill -9 $id;fi //如果存在,则kill掉
sleep 2s; //sleep 2秒
nohup java -jar /tmp/sample.jar > nohup.out & //java -jar 启动jar
Pipeline
我们继续沿用上一篇文章Devops关键工具及技术(四)—基于Pipeline的SonarQube静态代码扫描中的Pipeline,并在其后面加上部署的Stage。
Pipeline内容
内容也可以在Github中找到
https://github.com/zbbkeepgoing/pipeline-sample
pipeline {
agent none
stages {
stage('Preparation') {
agent { node { label 'master' } }
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'binbin', url: 'https://github.com/zbbkeepgoing/s