• CICD—Jenkins Gitlab自动化打包前端到K8S


    温馨提示:环境搭建:Jenkins、gitlab、两者之间打通;钉钉机器人创建都已省略自己问度娘文章很多(整个打包过程全自动,开发人员只需要提交代码就可以自动构建)。

    架构图:

    效果图:

    构建完成发布消息到钉钉

    第一步、安装依赖环境 (kubectl、nodejs)

    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

    sudo apt-get install -y nodejs

    第二步、配置Jenkins任务

    触发器

    流水线配置

    gitlab配置:

    gitlab钩子设置

    第三步:编写构建脚本,所有分支、环境都用一套脚本打包简化重复工作。

    #!groovy

    pipeline {

        //代理

    agent any

        //环境变量

        environment {

            REPOSITORY="git@xxxxxxxxxxxxxxxxxxxxxxxx.git"                           //git地址

            PROJECT_NAME = "front-xxxxxxxxxxx"                                                  //测试服务名

            PROJECT_NAME_DEV = "xxxx"                                                  //开发服务名

            PROJECT_NAME_PRE = "xxxx"                                                  //开发服务名

            PROJECT_NAME_PROD = "xxxx"                                                  //开发服务名

            BRANCH_DEV= "xxxx"                                                                //开发分支名

            BRANCH_TEST = "xxxx"                                                             //测试分支

            BRANCH_PRE = "xxxx"                                                           //演示分支

            BRANCH_PROD = "xxxx"                                                           //生产分支

            NAMESPACE_DEV = "xxxxx"                                                               //开发命名空间

            NAMESPACE_TEST = "xxxxx"                                                              //测试命名空间

            NAMESPACE_PRE = "xxxx"                                                               //演示命名空间

            NAMESPACE_PROD = "xxxx"                                                              //生产命名空间

            IMAGE_TAG = "${sh(script:'date +%Y%m%d%H%M%S', returnStdout: true).trim()}"      //镜像的tag值

            IMAGE_REGISTRY = "xxxxxxxx"                                                   //镜像仓库地址

            IMAGE_PROJECT = "xxxxxxx"                                                     //镜像项目地址

            IMAGE_NAME = "${IMAGE_REGISTRY}/${IMAGE_PROJECT}/${PROJECT_NAME}:${IMAGE_TAG}"   //镜像名称

            JENKINSURL = "http://xxxxxxxxxxx/job/"                         //jenkins任务回调地址

            BRANCH_NAME = "${params.gitbranch}"                                              //判断变量

        }

        //参数化构建

        parameters {

            gitParameter    branch: '',

                            branchFilter: 'origin/(.*)',

                            defaultValue: 'CICDxxxxx',

                            description: '请选择git分支',

                            name: 'gitbranch',

                            quickFilterEnabled: false,

                            selectedValue: 'NONE',

                            sortMode: 'DESCENDING_SMART',

                            tagFilter: '*',

                            type: 'PT_BRANCH',

                            useRepository: 'git@xxxxxxxgit'

        }

        stages {

            stage('拉取代码') {

                parallel {

                    //手动构建

                    stage('手动构建') {

                        when {

                            not{

                                environment name: 'BRANCH_NAME', value: 'CICDxxxxx'

                            }

                        }

                        environment {

                            BRANCH_NAME = "${params.gitbranch}"                                                 //项目的命名空间

                        }

                        steps {

                            echo "从代码仓库${REPOSITO

  • 相关阅读:
    解决 “微擎原系统登录页已弃用问题/微擎登入页面出问题”的两种办法【图文教程】
    【升级U8+】在将 varchar 值 ‘IA01‘ 转换成数据类型 int 时失败。
    DIY一个前端性能采集系统——NVIDIA NeMo Metric实现原理
    BeanFactory和FactoryBean的区别
    【21天学习挑战赛】顺序查找
    MAYA教程之建模基础命令介绍
    【RAZ】kids 电脑版本
    Blazor预研与实战
    【ArcGIS Pro二次开发】(69):使用MapTool实现隐藏和隔离图层
    我想知道linux机器上某个文本有没有重复行
  • 原文地址:https://blog.csdn.net/yaodunlin/article/details/126710022