dev环境前端项目部署说明

  • 原始方式
  1. 构建脚本
rm -rf dist.tar.gz
cnpm install
cnpm run build 
cd dist
tar -zcvf dist.tar.gz *
  1. 部署脚本
cd /home/jenkinswork/nginx/html
tar -xzvf dist.tar.gz
rm -rf dist.tar.gz
  • Docker方式
  1. 构建脚本
cnpm install
cnpm run build
cp -r dist dev
cd dev
docker build -t registry.cn-shenzhen.aliyuncs.com/jck/dev-pig-ui:latest .
docker push registry.cn-shenzhen.aliyuncs.com/jck/dev-pig-ui:latest
  1. 部署脚本
docker stop  dev-pig-ui 
docker rm dev-pig-ui
docker pull registry.cn-shenzhen.aliyuncs.com/jck/dev-pig-ui:latest
docker run -d -p  8666:80 --restart=always  --name dev-pig-ui   registry.cn-shenzhen.aliyuncs.com/jck/dev-pig-ui:latest

dev环境后台项目部署说明

  • 构建脚本
clean package  -Dmaven.test.skip=true -U -Pdev
  • 部署脚本
#!/bin/bash
  source /etc/profile
  #注意这里   部署地址
  cd /home/jenkinswork/public/contract-biz
  #这里可替换为你自己的执行程序,其他代码无需更改
  export  APP_NAME=${JOB_NAME}
  #检查程序是否在运行
  is_exist(){
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
    #如果不存在返回1,存在返回0     
    if [ -z "${pid}" ]; then
     return 1
    else
      return 0
    fi
  }
  #启动方法
  start(){
    is_exist
    if [ $? -eq 0 ]; then
      echo "${APP_NAME} is already running. pid=${pid}"
    else
        #删除历史日志
      rm -rf  /home/jenkinswork/log/${APP_NAME}.out
      nohup java -Xms256m -Xmx256m -jar ${APP_NAME}.jar > /home/jenkinswork/log/${APP_NAME}.out 2>&1 &
    fi
  }
  #停止方法
  stop(){
    is_exist
    if [ $? -eq "0" ]; then
      kill -9 $pid
    else
      echo "${APP_NAME} is not running"
    fi  
  }
  stop
  sleep 5    
  start

sit环境前端项目部署说明

  • 构建脚本
cnpm install
  cnpm run build 
  cp -r dist docker
  cd docker
  #打docker包
  docker build -t registry.cn-shenzhen.aliyuncs.com/jck/${env}-${projectName}:${version} .
  #推送包
  docker push  registry.cn-shenzhen.aliyuncs.com/jck/${env}-${projectName}:${version}
  • 部署脚本
curl -X DELETE \
    -H "Content-Type: application/yaml" \
    -H "Authorization:Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InVlNUdYcl94c0lxQ0ZMU3JVREp2X2tzeUxkREVpaWxrNFJOQU50YzMtd2cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tYjRzbmMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYTdkNjRjN2YtOTIzNy00ODEyLWI3YjEtOWUzODhiZTBiOWI5Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.LGtBFOb8jn2sYdRTvqUI9HxtDUtF5FqI-14XIm8tAlW2GomTtCM9nJsPc6Iuyzu8ZMZNKTmRsc73tTXXN8Xi36x9OiFkKO7cNmhB1rnnv1qP5G13XM8HyAbWNk7-WAq71CKq2Ahh22ERfIsmSny6HG_tuFNOpCFKIcquUm2eFmHE9uq9O4x4QqpxOCebCnzGulsH3eZL4vXjfBmPeCZsJYWh4fJussoO1rtd5vxSsjGpaKrTNgt4hJGH76qra3SWYUEK9T5_DuCL2b6YJuyq1o7iaqsfbJsUxD_MW6iEMHjMSe0Mfz75LM-0c6aVSfQpymgP-A4VG6NOSes7WYrHjA" \
    "http://10.0.0.61:32567/k8s-api/api/v1/namespaces/default/pods?labelSelector=k8s.eip.work/layer%3dweb,k8s.eip.work/name%3dcontract-ui"
  • 版本上线日志脚本
#获取git最新提交记录
  gitlogs=`git log -n 50`;

  #去除双引号
  gitlogs=`echo $gitlogs | sed 's/\"//g'`;

  #发送请求
  curl -i -X POST -H "Content-Type:application/json" -X POST -d '{"logs":"'"$gitlogs"'","version":"'"$version"'","env":"'"$env"'","projectName":"'"$projectName"'"}' http://10.0.0.125:11111/api/version/manager

sit环境后端项目部署说明

  • 打包脚本
clean package  -Dmaven.test.skip=true -U -Psit sonar:sonar
  • 构建脚本
#请修改目录级,后面的数据可以不用修改
 cd ${projectName}

 #复制已经打包好的jar到docker目录
 cp -r target/*.jar  src/main/docker
 #进入docker目录
 cd src/main/docker
 #打docker包
 docker build -t registry.cn-shenzhen.aliyuncs.com/jck/${env}-${projectName}:${version} .
 #推送包
 docker push  registry.cn-shenzhen.aliyuncs.com/jck/${env}-${projectName}:${version}
  • 部署脚本
curl -X DELETE \
    -H "Content-Type: application/yaml" \
    -H "Authorization:Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InVlNUdYcl94c0lxQ0ZMU3JVREp2X2tzeUxkREVpaWxrNFJOQU50YzMtd2cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tYjRzbmMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYTdkNjRjN2YtOTIzNy00ODEyLWI3YjEtOWUzODhiZTBiOWI5Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.LGtBFOb8jn2sYdRTvqUI9HxtDUtF5FqI-14XIm8tAlW2GomTtCM9nJsPc6Iuyzu8ZMZNKTmRsc73tTXXN8Xi36x9OiFkKO7cNmhB1rnnv1qP5G13XM8HyAbWNk7-WAq71CKq2Ahh22ERfIsmSny6HG_tuFNOpCFKIcquUm2eFmHE9uq9O4x4QqpxOCebCnzGulsH3eZL4vXjfBmPeCZsJYWh4fJussoO1rtd5vxSsjGpaKrTNgt4hJGH76qra3SWYUEK9T5_DuCL2b6YJuyq1o7iaqsfbJsUxD_MW6iEMHjMSe0Mfz75LM-0c6aVSfQpymgP-A4VG6NOSes7WYrHjA" \
    "http://10.0.0.61:32567/k8s-api/api/v1/namespaces/default/pods?labelSelector=k8s.eip.work/layer%3dsvc,k8s.eip.work/name%3dcontract-biz"
  • 版本上线日志脚本
#获取git最新提交记录
  gitlogs=`git log -n 50`;

  #去除双引号
  gitlogs=`echo $gitlogs | sed 's/\"//g'`;

  #发送请求
  curl -i -X POST -H "Content-Type:application/json" -X POST -d '{"logs":"'"$gitlogs"'","version":"'"$version"'","env":"'"$env"'","projectName":"'"$projectName"'"}' http://10.0.0.125:11111/api/version/manager

Sonar代码质量扫描脚本说明

前端

在构建脚本中添加扫描插件

sonar-scanner   -Dsonar.projectKey=${projectName}   -Dsonar.sources=src

后端

在打包脚本后方添加sonar:sonar 即可

clean package  -Dmaven.test.skip=true -U -Psit sonar:sonar

JavaDoc文档部署脚本说明

可直接根据开发人员开发的Java代码直接生成Javadoc文档,在 代码文档 中进行查看

需要在 Jenkins Pre Steps环节添加脚本执行。直接执行 /jenkinsjavadoc.sh 即可触发脚本

脚本说明

  1. 获取Git代码地址
  2. 截取Git的项目名称
  3. 直接执行Javadoc 并遍历文件名称为. java后缀的所有文件目录 使用-d的方式直接输出到path路径中。
  4. path路径默认为 /javadoc下的每一个文件夹
  5. 使用zip 进行文件打包
  6. 删除javadoc生成的临时文件
  7. 使用ftp传递到10.0.0.129的http://javadoc.yiqing.com网站的根目录
  8. 退出ftp链接
  9. 在10.0.0.129上会存在一个定时任务直接将此目录的zip文件自动解压
  10. 脚本完成

脚本示例

echo ${WORKSPACE}
#定义名称
uri=${GIT_URL##*/}
#定义名称

name=${uri%%.*}
#
cd /javadoc
path="./"${uri%%.*}

echo ${name}

javadoc -private -splitindex -use -author -version -encoding utf-8 -charset utf-8 -d    ${path}   -classpath `find ${WORKSPACE} -name *.java`   & 


echo "名称 为:${name}  路径为:${path}"


#壓縮
zip -r ${name}.zip ${name}

rm -r  ${path}

#传递
ftp -n<<!
open  10.0.0.129
user  javadoc_yiqing_com javadoc_yiqing_com 

put  ${path}.zip  ${name}.zip
close
!

Git Commit日志记录脚本说明

说明 :通过每一次打包的时候都将此项目的提交日志直接存放到我们独立的一个后台服务中,并将其新增的功能细节,直接对接到禅道上面的版本上线中。方便测试与运维使用

此脚本必须要在Jenkins的Post Steps步骤中进行操作,如果Jenkins部署没有成功,则不生成工作记录

脚本示例

#获取git最新提交记录
gitlogs=`git log -n 50`;

#去除双引号
gitlogs=`echo $gitlogs | sed 's/\"//g'`;

#发送请求
curl -i -X POST -H "Content-Type:application/json" -X POST -d '{"logs":"'"$gitlogs"'","version":"'"$version"'","env":"'"$env"'","projectName":"'"$projectName"'"}' http://10.0.0.125:11111/api/version/manager

CICD

脚本说明

kuboard的版本更新CICD脚本,将打成的Docker推送到云服务器之后,会直接通过curl方式直接触发删除pods中的容器组,让容器组自动更新最新的版本,容器组的抓取策略必须为:Always

脚本示例

curl -X DELETE \
  -H "Content-Type: application/yaml" \
  -H "Authorization:Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKEY" \
  "http://10.0.0.61:32567/k8s-api/api/v1/namespaces/default/pods?labelSelector=k8s.eip.work/layer%3dsvc,k8s.eip.work/name%3dauth-mgr"