• 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

  • 相关阅读:
    WPF 02
    centos 重启 nginx 的三种方式
    多路分发器:IO复用的抽象Poller
    【博客456】OVN (Open Virtual Network)实现三层网络平面连通性控制
    美联储暗示继续加息 澳洲联储将走向何方?
    SpringFramework之基于配置类管理Bean
    C++信息学奥赛1191:流感传染
    MyBatis系统学习(三)——动态SQL
    数据中台、BI业务访谈(二):组织架构梳理的坑
    Java基础(五)
  • 原文地址:https://blog.csdn.net/yaodunlin/article/details/126710022