jenkins 打包cloud多模块项目,一体化方案

这篇具有很好参考价值的文章主要介绍了jenkins 打包cloud多模块项目,一体化方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 项目架构如图

git 地址为整体结构 未拆分 : 

http://127.0.0.1:8888/gtilab/顶级父工程.git

jenkins springcloud多模块打包,jenkins,运维

 文章来源地址https://www.toymoban.com/news/detail-770795.html

2 构建需求,需要针对模块 进行整体选择性构建部署

        

  2.1 CICD  gitlab->jenkins->harbor->rancher

   此篇主要关注jenkins 相关集成构建,重点不在于 gitlab,harbor,rancher等环境的搭建

   有空再补充吧,先搞个demo。

 2.2 jenkins 相关操作 :

  2.2.1  安装 gitlab插件 安装流水线相关插件;  这些插件  安装的时候会引导安装大部分; 缺少的 点进插件管理中心 , 进行安装就好了

jenkins springcloud多模块打包,jenkins,运维

 2.2.2 git配置

jenkins springcloud多模块打包,jenkins,运维

2.2.3 maven配置

直接使用默认的让jenkins自己安装

jenkins springcloud多模块打包,jenkins,运维

 使用自己安装的maven  取消勾选自动安装 然后如图操作

jenkins springcloud多模块打包,jenkins,运维

 

2.2.4  创建jenkins任务绑定项目(流水线)

jenkins springcloud多模块打包,jenkins,运维

 

2.2.5 项目配置 (重点 简单版本 一般够用)

选择gitlab connection  具体配置 看第二张贴图

jenkins springcloud多模块打包,jenkins,运维

  GITLAB CONNECTION  配置在这 反正就像这样  缺啥补啥

jenkins springcloud多模块打包,jenkins,运维

 

2.3 jenkins 操作流水线(重点)

2.3.1  jenkins项目配置相关, 看图点点点

jenkins springcloud多模块打包,jenkins,运维

 

jenkins springcloud多模块打包,jenkins,运维

 jenkins springcloud多模块打包,jenkins,运维

 jenkins springcloud多模块打包,jenkins,运维

jenkins springcloud多模块打包,jenkins,运维 

 

2.3.2 jenkins 流水线构建脚本以及每个模块的dockerfile

//gitlab的凭证
def git_auth = "ASDASD*****DASD"

//构建版本的名称
def tag = createVersion()

//Harbor私服地址
def harbor_url = "127.0.0.1:5000"

//Harbor的项目名称
def harbor_project_name = "C_P_A_A"

// harbor用户名和密码
def username = "admin"
def password = "******"

def num = 2;

def createVersion() {
    return new Date().format('yyyyMMddHHmm') + "_${env.BUILD_ID}"
}

node{
		//maven地址
    def mvn = "/usr/local/maven/apache-maven-3.9.1/bin/mvn"

    //把选择的项目信息转为数组
    def selectedProjects = "${C_P}".split(',')
    echo "${selectedProjects}"

    stage('拉取代码'){
        echo '准备拉取代码'
        checkout([$class: 'GitSCM', branches: [[name: '*/${APP_BRANCH}']], extensions: [], userRemoteConfigs: [[credentialsId: '${git_auth}', url: 'http://127.0.0.1:18888/hbsh/C_P_A_A.git']]])
        echo '代码拉取完毕'
    }

    stage('编译构建公共模块'){
    echo '开始编译公共模块 , 校验插件这玩意上线的时候 别忘了去掉跳过'
    sh "${mvn} -f C_P_A_A-modules clean install -Dpmd.skip=true -Dcheckstyle.skip=true"
    echo '公共模块编译完毕'
    }

    for(int i=0;i<selectedProjects.size();i++){
         num ++ ;

         //取出每个项目的名称和端口
         def currentProject = selectedProjects[i];
         echo "${currentProject}"
         //项目名称
         def currentProjectName = currentProject.split('@')[0]
         //项目启动端口
         def currentProjectPort = currentProject.split('@')[1]
         echo "${currentProjectName}"
         echo "${currentProjectPort}"

         if (num % 10 == 0) {
            echo ''
         }
         stage("编译项目: ${currentProjectName}"){
            num++;

            echo '开始编译构建 ======== ${currentProjectName}'

            //编译打包选中微服务项目
            sh "${mvn} -f ${currentProjectName} clean package -Dpmd.skip=true -Dcheckstyle.skip=true"

            echo "${currentProjectName} + 编译完毕"
         }

         if (num % 10 == 0) {
            echo ''
         }
         stage("制作并推送镜像: ${currentProjectName}"){
            num++;
            // 生成镜像
            sh "${mvn} -f ${currentProjectName} dockerfile:build"
            //定义镜像名称(因为原本微服务项目前面还有一个父项目的,所以 必须获取到项目的真正名称 ,例如 infrastructure/api_gateway 变成 api_gateway)
            def realProjectName = currentProjectName.split("/")
            def realName = realProjectName[realProjectName.length-1]
            def imageName = "${realName}:${tag}"
            echo "${imageName} + 镜像名称完毕"
            echo "${tag} + tag版本号"

            //登录
            sh "docker login -u ${username} -p ${password} ${harbor_url}"

            //给镜像打标签
            sh "docker tag ${realName}:latest ${harbor_url}/${harbor_project_name}/${imageName}"

            //上传镜像
            sh "docker push ${harbor_url}/${harbor_project_name}/${imageName}"

            //删除本地镜像 (根据镜像名称删除镜像和打标签的镜像,因为原本的镜像和打包后镜像是同一个镜像id,无法通过镜像id删除镜像)
            sh "docker rmi -f ${imageName}"
            sh "docker rmi -f ${harbor_url}/${harbor_project_name}/${imageName}"
            //判断是否存在虚悬镜像  , 存在虚悬镜像,执行删除操作

            echo '制作并推送镜像完成 ======== ${currentProjectName}'
         }
    }

    stage('Cleanup'){
        sh '''
        if [ -n "$(docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' | awk '$1 == "<none>:" {print $2}')" ]; then
          docker rmi $(docker images -f 'dangling=true' --filter 'before=<none>' -q) 2> /dev/null
        fi
        '''
    }


    
}

dockerfile  及其简易版本  根据各自需求更改

FROM openjdk:17.0.2-oracle
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

2.4 最终实现 P的图

jenkins springcloud多模块打包,jenkins,运维

 jenkins springcloud多模块打包,jenkins,运维

 

到了这里,关于jenkins 打包cloud多模块项目,一体化方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 企业IT运维开发一体化解决方案

    在业务随需应变的时代,企业通过IT投入不断强化信息掌控能力从而提升竞争力。IT不仅仅是服务于企业,更重要的是,IT将驱动业务的发展,在IT与业务走向融合的大趋势下,IT服务管理正在成为驱动IT由技术中心向服务中心角色转换的关键力量。 对于中小规模客户来说,IT运

    2024年02月11日
    浏览(48)
  • 10万字信用大数据一体化监管平台建设方案word

    本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 XX公共信用信息管理系统的主要业务流程包括信用信息资源编录管理流程、信用信息归集流程、信用信息服务流程和信用信息异议处理流程。 一.1.1、nbsp; 信用信息资源编录管理流程 信用信息资源编录管

    2023年04月19日
    浏览(64)
  • 软硬件一体化超低时延加速方案落地金融,交易场景效果卓著

    量化投资在国内落地发展已有10余年,始终保持的迅猛的发展态势,量化投资机构数量逐年快速增长,资金管理规模指数级增长,管理规模突破100亿的量化私募已超过20家,据中信证券研究部估算,截至2021年二季度末,国内量化类证券私募基金行业管理资产总规模10340亿元,正

    2023年04月22日
    浏览(45)
  • 2023亿发一体化新零售POS收银解决方案,打造连锁门店经营新未来

    在零售业不断演变的今天,门店形态繁多,收银环节的共通性与差异性并存。传统的通用解决方案已不适应多样化的业态需求,而在线上线下一体化的时代背景下,全渠道经营能力也成为商家的迫切需求。 一体化新零售POS收银系统,为连锁门店带来新零售解决方案,助力规范

    2024年02月11日
    浏览(42)
  • 企业内训一体化解决方案,布道师教学实训云平台【开源版上线】

    依托云技术,采用“平台+”的方式,融合容器技术和虚拟化技术,构建多维度、个性化、智能化的数字化教育资源体系,促进教育机构、企业”资源、教学、实训、评价”完整可持续发展的学习生态系统。 主流技术:前端Element-UIVue 后端:SpringCloud Alibaba,SpringBoot2.x、Mybati

    2024年02月07日
    浏览(54)
  • 智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案

    随着2024年春运帷幕的拉开,不少人的返乡之旅也即将开启,从这几日的新闻来看,高速上一路飘红。伴随恶劣天气,加上激增的车流,极易导致高速瘫痪,无法正常使用。为解决此问题,助力高速高效运营,TSINGSEE青犀智能分析网关V4+EasyCVR视频融合平台——高速公路一体化监

    2024年02月22日
    浏览(58)
  • 百望云联合华为发布票财税链一体化数智解决方案 赋能企业数字化升级

    随着数据跃升为数字经济关键生产要素,数据安全成为整个数字化建设的重中之重。为更好地帮助企业发展,中央及全国和地方政府相继出台了多部与数据相关的政策法规,鼓励各领域服务商提供具有自主创新的软件产品与服务,帮助企业在合规的前提下,完成数字化建设的

    2024年02月12日
    浏览(45)
  • 阿里云/腾讯云国际站代理:腾讯云国际站开户购买EdgeOne发布,安全加速一体化方案获业内认可

    作为下一代CDN产品面世的腾讯云EdgeOne,历时一年服务, 腾讯云国际站 凭借安全加速一体化的解决方案,用All in One 架构构筑边缘应用无限想象。 近年来,随着5G网络、物联网、边缘计算的快速发展,爆炸式增长的数据量和市场对“ 腾讯云国际站 大连接,低时延,大带宽,强

    2024年02月07日
    浏览(42)
  • ABeam News | 松下家电(中国)生产销售一体化SAP S/4HANA项目正式启动

    近日,由德硕管理咨询(上海)有限公司参与实施的 松下家电(中国)生产销售一体化SAP S/4HANA项目 正式上线 , 松下集团代表董事全球副总裁本间哲朗先生 及 ABeam大中华区董事长兼总经理中野洋辅先生 出席了项目启动会,庆祝该项目的顺利上线。 ABeam大中华区董事长兼总

    2023年04月22日
    浏览(43)
  • 基于Ascend910+PyTorch1.11.0+CANN6.3.RC2的YoloV5训练推理一体化解决方案

    昇腾Pytorch镜像:https://ascendhub.huawei.com/#/detail/ascend-pytorch 代码仓:git clone https://gitee.com/ascend/modelzoo-GPL.git coco测试验证集:wget https://bj-aicc.obs.cn-north-309.mtgascendic.cn/dataset/coco2017/coco.zip coco训练集(放images下):wget https://bj-aicc.obs.cn-north-309.mtgascendic.cn/dataset/coco2017/train2017.zip 部分

    2024年02月07日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包