如何新建一个jenkins任务构建业务类服务的镜像?

如题

已邀请:

本说明仅适用于基于NCHOME构建以下服务,如需构建其他服务,请搜索对应服务名:

uap-base fi-fip fi-gl co-resa co-cm ftm tm-tmc am-manage am-fa scm-scm uap-schedule uap-fs uap-search


基本场景:

开发者中心:10.10.18.10

镜像仓库为:10.10.18.15

jenkins与nchome部署在同一服务器

nchome:/data/ncc/ncchome

拆分的微服务home:/data/ncc/ncchome_微服务名

补丁目录:/data/patch/patch_服务名称/war/home


如上述目录或条目与实际业务部署不符,请对应修改下方脚本中的内容。


1、登录控制台,点击左侧“新建Item”,进入项目创建面板

/uploads/files_user1/answer/5e783c815b8d9883341.png

2、输入任务名称,选择任务类型。任务名称建议使用英文+数字+分割线方式,便于搜索。 

/uploads/files_user1/answer/5e783cd1d3298807260.png

3、在任务详情界面,勾选“参数化构建”(This project is parameterized) ,并增加如下参数:

名称:SV_APP_NAME
默认值:空
描述:这里是业务镜像名称。参考:uap-base fi-fip fi-gl co-resa co-cm ftm tm-tmc am-manage am-fa scm-scm uap-schedule uap-fs uap-search
名称:IUAP_ADDR
默认值:空
描述:构建目标环境的开发者中心地址(仅IP),可以直接在任务配置界面填写,实现预置。
名称:HARBOR_ADDR
默认值:空
描述:构建目标环境的镜像仓库地址(仅IP),可以直接在任务配置界面填写,实现预置。

/uploads/files_user1/answer/5e7842c1e38b7862729.png 4、在“构建”栏目,选择执行脚本,填写业务服务构建脚本

/uploads/files_user1/answer/5e78432035758803533.png


附参考脚本:

##变量定义
NC_APP_DIR=/data/ncc/ncchome
SV_APP_DIR=/data/ncc/nchome_${SV_APP_NAME}
VERSION="2005."`date '+%Y%m%d%H%M%S'`

##配置环境变量                                                                                   
export JAVA_HOME=/data/ncc/jdk                                                                      
export PATH=/usr/local/bin:/data/ncc/jdk/bin:$PATH


##拆分nchome
cd ${NC_APP_DIR}                                                            
                                                                                                       
java -jar spliter.jar ${SV_APP_NAME}

##war包删除jar包
find ./ -type f -name "spring-aop-3.0.5*" -or -name "jackson-annotations-2.0.1.jar" -or -name "jackson-annotations-2.6.0.jar" -or -name "jackson-core-2.0.1.jar" -or -name "jackson-core-2.6.3.jar" -or -name "jackson-databind-2.0.1.jar" -or -name "jackson-databind-2.6.3.jar" -or -name "spring-asm-3.0.5*" -or -name "spring-context-support-3.0.5*" -or -name "spring-expression-3.0.5*" -or -name "spring-webmvc-3.0.5*"    -or -name "jackson-mapper-asl-1.9.9.jar" -or -name "handlerbars-proto-0.6.0.jar" |xargs rm -f
                               
##拆分war包
java -jar wartool.jar ${SV_APP_DIR}/nchome_$SV_APP_NAME

##打补丁
##cp  -rf /data/patch/patch_${SV_APP_NAME}/war/home  ${SV_APP_DIR}/nchome_${SV_APP_NAME}/temp/stage/ROOT/WEB-INF/home 


##进入拆分完的目录中,删除旧的Dockerfile,建立新的
cd ${SV_APP_DIR}
if [ -f "${SV_APP_DIR}/Dockerfile" ];then
rm -rf ${SV_APP_DIR}/Dockerfile
fi
mkdir -p ${SV_APP_DIR}/Dockerfile
touch ${SV_APP_DIR}/Dockerfile/Dockerfile

##配置Dockerfile
##FROM XXX 为使用对应仓库中的XX作为基础镜像构建,并执行后续动作
echo "FROM tomcat:9.0.31-jdk8u202-alpine
COPY nchome_$SV_APP_NAME/temp/stage/ROOT /usr/local/tomcat/webapps/ROOT
EXPOSE 8888" >./Dockerfile/Dockerfile

##生成、推送镜像到镜像仓库                                                                     
docker build -f ${SV_APP_DIR}/Dockerfile/Dockerfile .  -t   ${HARBOR_ADDR}/c87e2267-1001-4c70-bb2a-ab41f3b81aa3/${SV_APP_NAME}:${VERSION}
docker login  -u  admin -p Harbor12345  10.10.18.15
docker push ${HARBOR_ADDR}/c87e2267-1001-4c70-bb2a-ab41f3b81aa3/${SV_APP_NAME}:${VERSION}             #推送到镜像仓库 

##给开发者中心发送post请求,使开发者中心关联镜像
curl -X POST "http://${IUAP_ADDR}/app-docker-registry/api/registry/push?providerId=c87e2267-1001-4c70-bb2a-ab41f3b81aa3&userName=%E7%AE%A1%E7%90%86%E5%91%98&userId=c87e2267-1001-4c70-bb2a-ab41f3b81aa3&imageName=reg.yyuap.io/c87e2267-1001-4c70-bb2a-ab41f3b81aa3/${SV_APP_NAME}&tag=${VERSION}"


5、保存后,在任务界面,点击"Bulid with Parameters" ,在右侧依次填写要构建的微服务名称、开发者中心IP、镜像仓库IP,后点击开始构建,启动构建。

/uploads/files_user1/answer/5e7844d6d0e38161916.png

6、构建过程中,在任务的"控制台输出"菜单,可以查看任务的构建详情

/uploads/files_user1/answer/5e78459a005f1300165.png

/uploads/files_user1/answer/5e7846e756ca1567933.png


7、构建完成后,即可登录开发者中心,找到对应应用,在配置流水线选择镜像的栏目,选择新构建的镜像。效果参考下图:

/uploads/files_user1/answer/5e78476723642912944.png

要回复问题请先登录注册