文章目录
一、需求背景
统一各环境业务微服务构建流程,提高CICD成功率以及时效性
二、编译任务构建配置
1、新建item
按需选择构建任务模板类型
2、配置编译任务项目安全
授权当前构建任务相关用户组/用户所需权限
3、配置编译任务构建策略
合理的构建策略可用于更好的项目复盘
4、配置构建参数选项
配置构建环境布尔参数
auto_deploy_test #自动部署到TEST环境
auto_deploy_uat #自动部署到UAT环境
auto_deploy_pre #自动部署到PRE环境
auto_deploy_prod #自动部署到生产环境
up_pro_img #上传到生产环境镜像服务器
配置构建分支Git参数:
branch
配置构建服务布尔参数:
构建服务选项:
xxxx_svr
5、配置构建源码
6、配置构建触发器
7、配置构建工具
使用开发环境相同maven版本,避免版本差异问题。
clean package -U -Dmaven.test.skip=true -e
8、配置构建脚本
#!/bin/bash
#jenkins自动化构建并部署到k8s脚本
set -x
#VERSION=`mvn help:evaluate -Dexpression=project.version | grep "^[^\[]"`
VERSION=1.0.0.RELEASE
set +x
echo "version:$VERSION"
tag=$VERSION`date +%Y%m%d%H%M`
#tag=$VERSION
echo "tag:$tag"
#jenkins_job=bladex-svr-x.x
#workspace=/var/lib/jenkins/jobs/$jenkins_job/workspace
#本次提交代码更新产生的日
#harbor
harbor_name=xxxxxx
harbor_passwd=xxxxxx
harbor_url=harbor.xxxx.tech
harbor_name_pro=xxxx@aliyun.com
harbor_passwd_pro=xxxx
harbor_url_pro=registry.cn-shenzhen.aliyuncs.com
#deploy_dir=/root/data/k8s/bladex3.1
#私有仓库地址和库名
harbor=harbor.xxxx.tech/k8s
harbor_pro=registry.cn-shenzhen.aliyuncs.com/xxxx
if [ $axxx_svr = true ]
then
build_project="$build_project"" axxx-svr"
fi
if [ $bxxx_svr = true ]
then
build_project="$build_project"" bxxx-svr"
fi
if [ $cxxx_svr = true ]
then
build_project="$build_project"" cxxx-svr"
fi
echo "build_project:$build_project"
for project in $build_project
do
#本次构建image用的TAG
echo "$project项目更新需要重新创建docker image"
echo "编译项目分支:$branch"
image=$harbor/$project:$tag
image_pro=$harbor_pro/$project:$tag
echo "镜像:$image"
#部署配置文件名
echo "项目目录:$workspace"
#deploy_file=$project.yaml
dockerfile=$(find $workspace -name $project)
#dockerfile 绝对文件路径
#构建image
docker build -t $image $dockerfile/.
#docker build -t $image -f $dockerfile/Dockerfile2 $dockerfile/.
echo "$image 构建成功"
sleep 2
echo "上传$image 到Harbor私有仓库"
docker login -u$harbor_name -p$harbor_passwd $harbor_url >/dev/null 2>&1
docker push $image
sleep 3
echo "是否上传镜像到生产镜像服务器: $up_pro_img"
if [[ $up_pro_img = true ]]
# && [[ $branch == "master" ]]
then
docker tag $image $image_pro
echo "上传$image_pro 到Harbor外网仓库"
docker login -u$harbor_name_pro -p$harbor_passwd_pro $harbor_url_pro >/dev/null 2>&1
docker push $image_pro
fi
echo "是否部署镜像到uat k8s环境: $auto_deploy_uat"
if [ $auto_deploy_uat == "true" ]
then
#部署到开发k8s环境 #更新deployment中的image
echo "正在部署 $project 到uat环境的k8s集群中........................................."
#远程连接到k8s-master更新服务
sudo ssh root@xxx.xxx.1.1 > /dev/null 2>&1 << EOF
kubectl set image -n bladex3-uat deployment/$project $project=$image
exit
EOF
fi
done
#删除本地构建的镜像
echo "删除$image"
docker rmi $image