全站首页设为首页收藏本站

西虹市网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

社区广播台

    查看: 154|回复: 6
    打印 上一主题 下一主题

    解析:CI/CD流程设计及实现

    [复制链接]
    跳转到指定楼层
    楼主
    发表于 2022-2-24 12:34:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    西虹网 西虹网  目前我司的CICD的架构基本如图:
    西虹网 西虹网

    西虹网 西虹网
    西虹网 西虹网  ?
    西虹网 西虹网
    西虹网 西虹网  其实该架构是一个很常见的架构,但是我在这里主要考虑了如何最大化利用该架构 实现CICD的便捷使用以及后续如何快速集成到运维平台。CICDhttps://www.jfrogchina.com/pipelines的相关问题可以到网站了解下,我们是业内领域专业的平台,您如果有需要可以咨询,相信可以帮到您,值得您的信赖!
    西虹网 西虹网
    西虹网 西虹网  思考的问题:
    西虹网 西虹网
    西虹网 西虹网  1.因考虑到CICD的可靠性、安全性,需要将pipeline脚本和业务代码分离。
    西虹网 西虹网
    西虹网 西虹网  2.如何快速的批量生成项目
    西虹网 西虹网
    西虹网 西虹网  3.在使用pipeline scm的时候如何获取业务仓库的cpmmit-id(CI可以直接获取到,但CD 不拷贝业务代码的情况下如何获取? 目前开发测试环境使用commit作为版本号 线上预发用tag作为版本号)
    西虹网 西虹网
    西虹网 西虹网  4.发布到kubernetes平台的时候 一般都是k8s去harbor仓库自动拉取镜像,如果没有该镜像那么对于开发测试是无法感知到的。
    西虹网 西虹网
    西虹网 西虹网  解决:
    西虹网 西虹网
    西虹网 西虹网  目前我司用一个gitlab仓库来管理所有的pipeline脚本以及kubernetes的yml文件,jenkins使用pipeline SCM部署,这个时候有个问题就是业务代码如何克隆到该项目的workspace下进行编译构建,这个时候我们需要使用pipeline的dir函数去生成一个目录将业务代码clone到该目录下进行构建,例如java项目:
    西虹网 西虹网
    西虹网 西虹网  ?
    西虹网 西虹网
    西虹网 西虹网  2.如何快速生成项目
    西虹网 西虹网
    西虹网 西虹网  正常情况下 在生成项目的时候我们需要新建项目-配置SCM-选择分支-选择jenkinsfile文件,但这样太繁琐了 并且如果使用grovvy去批量生成项目的话需要更改的配置会非常多容易出错。
    西虹网 西虹网
    西虹网 西虹网  所以我在这里的设计是所有的脚本都依赖于project name,通过jenkins自带的JOB_NAME变量去区分不同的项目,并且所有项目的入口都是主的jenkinsfile,通过不同的JOB_NAME路由到不同项目的jenkinsfile。
    西虹网 西虹网
    西虹网 西虹网  如图该脚本路径永远是不会变的。
    西虹网 西虹网
    西虹网 西虹网  这里我们只需要更改所属分支就可以了
    西虹网 西虹网
    西虹网 西虹网  然后我们可以通过jenkins的脚本命令行-grovvy脚本批量生成项目
    西虹网 西虹网
    西虹网 西虹网  脚本内容如下:
    西虹网 西虹网
    西虹网 西虹网  ?
    西虹网 西虹网
    西虹网 西虹网  3.在使用pipeline scm的时候如何获取业务仓库的cpmmit-id(CI可以直接获取到,但CD 不拷贝业务代码的情况下如何获取? 目前开发测试环境使用commit作为版本号 线上预发用tag作为版本号)
    西虹网 西虹网
    西虹网 西虹网  在这种情况下现有的git插件只能获取到不同仓库的tag或者branch 但是不能获取到commit id,所以这里我在Active Choices Parameter插件使用了grovvy script的形式去获取git里的commit,效果:
    西虹网 西虹网
    西虹网 西虹网
    西虹网 西虹网
    西虹网 西虹网  脚本内容:
    西虹网 西虹网
    西虹网 西虹网  getTags.sh的脚本内容大致就是curl的形式获取gitlab的commit的列表,我这里因为是docker 所以直接取获取了harbor的api接口的列表。
    西虹网 西虹网
    西虹网 西虹网  4.发布到kubernetes平台的时候 一般都是k8s去harbor仓库自动拉取镜像,如果没有该镜像那么对于开发测试是无法感知到的。
    西虹网 西虹网
    西虹网 西虹网  在pipeline脚本先检测该镜像是否存在:
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享
    回复

    使用道具 举报

    沙发
    发表于 2022-2-24 13:51:39 | 只看该作者
    沙发!沙发!
    回复 支持 反对

    使用道具 举报

    板凳
    发表于 2022-2-24 15:58:12 | 只看该作者
    看帖回帖是美德!
    回复 支持 反对

    使用道具 举报

    地板
    发表于 2022-2-24 23:19:17 | 只看该作者
    路过,学习下
    回复 支持 反对

    使用道具 举报

    5#
    发表于 2022-2-25 02:38:10 | 只看该作者
    沙发!沙发!
    回复 支持 反对

    使用道具 举报

    6#
    发表于 2022-2-25 08:03:00 | 只看该作者
    有道理。。。
    回复 支持 反对

    使用道具 举报

    7#
    发表于 2022-2-25 09:19:43 | 只看该作者
    路过,支持一下啦
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表