dev环境前端项目部署说明
- 原始方式
- 构建脚本
rm -rf dist.tar.gz
cnpm install
cnpm run build
cd dist
tar -zcvf dist.tar.gz *
- 部署脚本
cd /home/jenkinswork/nginx/html
tar -xzvf dist.tar.gz
rm -rf dist.tar.gz
- Docker方式
- 构建脚本
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
- 部署脚本
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
即可触发脚本
脚本说明
- 获取Git代码地址
- 截取Git的项目名称
- 直接执行Javadoc 并遍历文件名称为. java后缀的所有文件目录 使用-d的方式直接输出到path路径中。
- path路径默认为 /javadoc下的每一个文件夹
- 使用zip 进行文件打包
- 删除javadoc生成的临时文件
- 使用ftp传递到10.0.0.129的
http://javadoc.yiqing.com
网站的根目录 - 退出ftp链接
- 在10.0.0.129上会存在一个定时任务直接将此目录的zip文件自动解压
- 脚本完成
脚本示例
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"