目录
2.1 CICD gitlab->jenkins->harbor->rancher
2.2.1 安装 gitlab插件 安装流水线相关插件; 这些插件 安装的时候会引导安装大部分; 缺少的 点进插件管理中心 , 进行安装就好了
1 项目结构 如下示意图
git 地址为整体结构 未拆分 :
http://127.0.0.1:8888/gtilab/顶级父工程.git
2 构建需求,需要针对模块 进行分模块构建部署
2.1 CICD gitlab->jenkins->harbor->rancher
此篇主要怕关注jenkins 相关集成构建,重点不在于 gitlab,harbor,rancher等环境的搭建
有空再补充吧,先搞个demo
2.2 jenkins 相关操作 :
2.2.1 安装 gitlab插件 安装流水线相关插件; 这些插件 安装的时候会引导安装大部分; 缺少的 点进插件管理中心 , 进行安装就好了
如图:
git
maven
注意:maven仓库地址此时为: cd $HOME/.m2/repository
2.2.2 创建项目
2.2.3 项目配置 (重点 简单版本 一般够用)
选择gitlab connection 具体配置 看第二张贴图
`
GITLAB CONNECTION 配置在这 反正就像这样 缺啥补啥
2.2.4 jenkins流水线脚本
注:如果经常会有同版本号的依赖更新的话 就在构建脚本加一句 清空一下本地仓
sh 'mvn dependency:purge-local-repository'
完整脚本 不带上面这个,需要自取
def createVersion() {
// 定义一个版本号作为当次构建的版本,输出结果 20230410175842_699
return new Date().format('yyyyMMddHHmm') + "_${env.BUILD_ID}"
}
pipeline {
//agent用于指定执行job的节点'any'为不做限制 shuquanliang/docker-product
agent any
tools {
// Install the Maven version configured as "M3" and add it to the path.
maven "maven"
jdk "jdk_17"
}
environment {
git_auth = '01b2****e78289'
git_url = 'http://127.0.0.1:18888/cloud/P_A.git' //顶级父项目 未拆分
//定义镜像名称:版本 P_A_A_A 这个是需要打包成镜像的启动项目
imageName = "P_A_A_A:latest"
//镜像仓库地址
harbor_url = '127.0.0.1:5000'
//镜像仓库目录
harbor_project = "P_A_A_A"
//镜像仓库用户账号信息
harbor_auth = "plvBdkEQ*****nOWTXG0"
_version = createVersion()
}
stages {
stage('pull git') {
steps{
//从git拉取代码
checkout([$class: 'GitSCM', branches: [[name: "*master"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]]) }
}
stage('maven build ') {
steps{
//使用mvn构建,
//使用mvn构建,mvn clean install -pl <module-name> P_A_A_B 这个是 业务侧代码 需要 同步更新部署
sh 'mvn clean install -pl P_A_A/P_A_A_B -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dpmd.skip=true -Dfindbugs.skip=true'
sh 'mvn clean package -pl P_A_A/P_A_A_A -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dpmd.skip=true -Dfindbugs.skip=true'
sh 'pwd'
sh 'docker build --no-cache -f ./P_A_A/P_A_A_A/Dockerfile -t ${imageName} ./'
sh 'echo 打包成功 '
sh 'echo ${_version} '
}
}
stage('docker build') {
steps{
script{
sh '''
docker tag ${imageName} ${harbor_url}/${harbor_project}/P_A_A_A:${_version}
docker push ${harbor_url}/${harbor_project}/P_A_A_A:${_version}
docker rmi -f `docker images |grep ${harbor_url}/${harbor_project}/P_A_A_A |awk '{print $3}'|sort
-n | uniq`
'''
}
}
}
}
}