梳理jenkins构建流程

一、背景

最近需要进行服务环境治理项目,于是我把公司jenkins相关的部署流程给总结了一下。

二、jenkins操作架构图梳理jenkins构建流程_第1张图片

三、详细流程

拉代码–>打包–>构建镜像–>升级pod镜像

1. 以go语言jenkins的流程梳理,以dev-bizops-svr为例

1.丢弃旧的构建
2.参数化构建-GIT-TAG
3.git拉取代码--用tag号命名${GIT-TAG}构建新的分支 
4.当前分支与master分支进行比较,看是否已经合并代码
5.执行shell:
5.1:定义变量PROJECT、BUILD_PATH(构建路径)、IMAGE_ENV、IMAGE_NAME、PATH_NUM
5.2:如果BUILD_PATH下的pactket目录下不为空,说明其他项目在构建,复制BUILD_PATH下所有,到一个新目录,新路径赋值给BUILD_PATH,删除新路径packet里的所有内容。
5.3:go语言打包-->运行打包命令-->构建成功后,拷贝程序至BUILD_PATH目录。
5.4:构建docker镜像--先cd到BUILD_PATH目录,再运行docker build命令--命令行方式添加环境变量 --build-arg server_name=${PROJECT}。
5.5:将镜像push到镜像仓库
5.6:更新k8s中的镜像--kubectl set image deployment/deployment 容器名=镜像名 -n 命名空间

四、具体shell

#[ $(echo "${GIT_TAG}" | grep TAG | wc -l) -ne 0  ] && git checkout ${GIT_TAG}|| git checkout

# 只需要修改PROJECT即可,其它配置无特殊需求不用修改
PROJECT=bizops-svr
BUILD_PATH=/xdfapp/data/build/go
IMAGE_ENV=dev
IMAGE_NAME=re******.cn/application/${PROJECT}:TAG-${BUILD_TIMESTAMP}
PATH_NUM=0
#GO_SRC=/xdfapp/server/go/src
		
# 判断目录是否为空

if [ $(ls ${BUILD_PATH}/packet/ | wc -l) -ne 0 ];then
    echo "其它项目在构建,正尝试新建目录构建。"
    cp -a ${BUILD_PATH} /xdfapp/data/build/${PROJECT}-${BUILD_TIMESTAMP}
    BUILD_PATH=/xdfapp/data/build/${PROJECT}-${BUILD_TIMESTAMP}
    rm -rf ${BUILD_PATH}/packet/*
    PATH_NUM=$(expr ${PATH_NUM} + 1)
fi

# build go 服务
#cp -a ${WORKSPACE} ${GO_SRC}/${PROJECT}
cd ${WORKSPACE}
#go env
export GOROOT=/xdfapp/server/go
go build -o release/bin/bizops-svr main.go
if [ $? -eq 0 ];then
    echo "构建成功。"
    # 拷贝程序至build目录
	cp -a ${WORKSPACE}/release/*  ${BUILD_PATH}/packet/
    #rm -rf ${GO_SRC}/${PROJECT}
else
    echo "构建失败。"
    #rm -rf ${GO_SRC}/${PROJECT}
    exit 1
fi


# 构建docker镜像
cd ${BUILD_PATH}
sudo docker build --build-arg server_name=${PROJECT} -t $IMAGE_NAME .

# 上传至harbor
sudo docker push $IMAGE_NAME


# 更新rancher 项目
kubectl  set image deployment/${PROJECT} $PROJECT=$IMAGE_NAME -n ${IMAGE_ENV}


if [ "${PATH_NUM}" -eq 0 ];then
    rm -rf packet/*
else
	rm -rf ${BUILD_PATH}
fi

你可能感兴趣的:(测试必会知识,jenkins,git,docker)