持续集成交付CICD:Jenkins使用GitLab共享库实现前端项目镜像构建

2023-12-18

目录

一、实验

1. GitLab修改项目文件与Harbor环境确认

2.Jenkins使用GitLab共享库实现前端项目镜像构建

3.优化CI流水线封装Harbor账户密码

4.Jenkins再次使用GitLab共享库实现前端项目镜像构建


一、实验

1. GitLab修改项目文件与Harbor环境确认

(1)GitLab共享库新建k8sci.jenkinsfile

(2) 查看目录

(3)修改k8sci.jenkinsfile

@Library("mylib@master") _
import org.devops.*


def checkout = new Checkout()
def build = new Build()
def unittest = new UnitTest()
def sonar = new Sonar()


pipeline {
    agent { label "build"}

    options {
        skipDefaultCheckout true
    }
    stages{
        stage("Checkout"){
            steps{
                script {
                    println("GetCode")
                    checkout.GetCode("${env.srcUrl}","${env.branchName}")
                }
            }
        }
        stage("build"){
            steps{
                script{
                    println("Build")
                    build.CodeBuild("${env.buildTool}")
                }
            }

        }

        stage("UnitTest"){
            steps{
                script{
                    println("Test")
                    unittest.CodeTest("${env.buildTool}")
                }
            }

        }
        stage("SonarScan"){
            steps {
                script {
                    groupName = "${JOB_NAME}".split("/")[0]
                    projectName ="${JOB_NAME}".split("/")[-1].split("_")[0]
                    sonar.CodeSonar("${env.buildTool}",projectName,groupName)
                }

            }

        }
        stage("PushImage"){
            steps {
                script {
                    repoName = "${JOB_NAME}".split("/")[0]
                    projectName ="${JOB_NAME}".split("/")[-1].split("_")[0]
                    env.registry = "192.168.204.15"
                    env.imageName = "${env.registry}/${repoName}/${projectName}:${env.branchName}"
                   
                        sh """
                            #重写HTML首页
                            echo "${env.imageName}" > dist/index.html 
    
                            #构建镜像
                            docker build -t ${env.imageName} .
                           
                            #登录镜像仓库
                            docker login -u admin -p Harbor12345 ${env.registry}
                            
                            #上传镜像
                            docker push  ${env.imageName}
    
                            #删除镜像
                            sleep 2
                            docker rmi ${env.imageName}
                        """



                }

            }

        }

    }

}

(4)前端项目新增Dockerfile


FROM nginx:1.17.7

COPY dist/ /usr/share/nginx/html

(5)Harbor确认devops03项目

2.Jenkins使用GitLab共享库实现前端项目镜像构建

(1)Jenkins新建流水线

(2)取消构建触发器

(3)修改SCM脚本路径

(4)手动构建前端项目流水线

(5)成功

(6)查看Blue Ocean

(7)Harbor已上传前端项目镜像

(8)本地拉取镜像测试

docker pull 192.168.204.15/devops03/devops03-devops-ui:master

docker run -itd --name devops03demo1 -p 8092:80 192.168.204.15/devops03/devops03-devops-ui:master

curl http://127.0.0.1:8092

(9)删除容器

docker rm devops03demo1 -f

3.优化CI流水线封装Harbor账户密码

(1)Jenkins新建凭据

(2)生成流水线脚本

(3)Jenkins新建视图

(4)列表添加流水线项目

(5)GitLab共享库修改k8sci.jenkinsfile

@Library("mylib@master") _
import org.devops.*


def checkout = new Checkout()
def build = new Build()
def unittest = new UnitTest()
def sonar = new Sonar()


pipeline {
    agent { label "build"}

    options {
        skipDefaultCheckout true
    }
    stages{
        stage("Checkout"){
            steps{
                script {
                    println("GetCode")
                    checkout.GetCode("${env.srcUrl}","${env.branchName}")
                }
            }
        }
        stage("build"){
            steps{
                script{
                    println("Build")
                    build.CodeBuild("${env.buildTool}")
                }
            }

        }

        stage("UnitTest"){
            steps{
                script{
                    println("Test")
                    unittest.CodeTest("${env.buildTool}")
                }
            }

        }
        stage("SonarScan"){
            steps {
                script {
                    groupName = "${JOB_NAME}".split("/")[0]
                    projectName ="${JOB_NAME}".split("/")[-1].split("_")[0]
                    sonar.CodeSonar("${env.buildTool}",projectName,groupName)
                }

            }

        }
        stage("PushImage"){
            steps {
                script {
                    repoName = "${JOB_NAME}".split("/")[0]
                    projectName ="${JOB_NAME}".split("/")[-1].split("_")[0]
                    env.registry = "192.168.204.15"
                    env.imageName = "${env.registry}/${repoName}/${projectName}:${env.branchName}"
                    withCredentials([usernamePassword(credentialsId: '8c662308-4991-4576-9826-74a5417de685', passwordVariable: 'DOCKER_PASSWD', usernameVariable: 'DOCKER_USER')]) {
                        sh """
                            #重写HTML首页
                            echo "${env.imageName}" > dist/index.html 
    
                            #构建镜像
                            docker build -t ${env.imageName} .
                           
                            #登录镜像仓库
                            docker login -u ${DOCKER_USER} -p ${DOCKER_PASSWD} ${env.registry}
                            
                            #上传镜像
                            docker push  ${env.imageName}
    
                            #删除镜像
                            sleep 2
                            docker rmi ${env.imageName}
                        """
                    }


                }

            }

        }

    }

}

4.Jenkins再次使用GitLab共享库实现前端项目镜像构建

(1)GitLab前端项目新建RELEASE-1.1.5分支

(2)Jenkins手动构建流水线

(3)成功

(4)Blue Ocean查看

(5)Harbor已上传前端项目镜像

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

持续集成交付CICD:Jenkins使用GitLab共享库实现前端项目镜像构建 的相关文章

随机推荐

  • SCHNNEIDER140CPS11100 电源模块

    SCHNNEIDER140CPS11100 电源模块 SCHNNEIDER140CPS11100 电源模块 产品详情 PLC 可编程逻辑控制器 系统 电源模块通常用于为PLC系统提供可靠的电力 确保PLC正常运行 工业自动化和控制系统 用于
  • 参与话题讨论

    随着人工智能和低代码的崛起 前端已死 的声音逐渐兴起 前端已死 尊嘟假嘟 快来发表你的看法吧 一 为什么会出现 前端已死 的言论 因为很多公司不重视前端 导致咱们后端程序员顶替开发前端 导致前端岗位受到挤压 但是有追求的老板还是会请前端的
  • 推荐一款图集打包工具,png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0

    png图片打包plist工具 手把手教你使用pngPackerGUI V2 0 此软件是在 pngpacker V1 1 软件基础之后 开发的界面化操作软件 方便不太懂命令行的小白快捷上手使用 1 下载并解压缩软件 得到如下目录 双击打开
  • MOOG D138-002-002 控制器模块

    MOOG D138 002 002 控制器模块 MOOG D138 002 002 控制器模块产品详情 MOOG D138 002 002控制器模块通常是指用于控制和管理其他设备或系统的电子模块 这些模块在工业自动化 机器人技术 运动控制等
  • Redis——Redis常用命令

    Redis提供了丰富的命令 可以对数据库和各种数据类型进行操作 这些命令可以在Windows和Linux中使用 1 键值相关命令 1 1 KEYS KEYS用于返回满足pattern的所有key pattern支持以下通配符 匹配任意字符
  • 计算机毕设项目 - 公寓宿舍后勤管理系统(含源码+论文)(1)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 2 1 系统开发流程
  • BENTLY 146031-01 - 瞬态数据接口 I/O 模块

    BENTLY 146031 01 瞬态数据接口 I O 模块 BENTLY 146031 01 瞬态数据接口 I O 模块 产品详情 通常 这类模块用于采集和处理机械设备的振动 温度 压力等瞬态数据 并将这些数据传输到监控系统进行分析和诊断
  • HONEYWELL 05701-A-0302 单通道控制卡

    HONEYWELL 05701 A 0302 单通道控制卡 HONEYWELL 05701 A 0302 单通道控制卡产品详情 HONEYWELL 05701 A 030 单通道控制卡可能应用于工业自动化 过程控制 监控系统等领域 以下是一
  • Windows7系统powercfg.exe文件丢失问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个powercf
  • Java代码世界的神奇技巧与魔法艺术

    目录 前言 1 Java的独特优势 1 1 跨平台性 1 2 面向对象 1 3 强大的生态系统 2 Java的应用场景 2 1 企业级应用开发 2 2 移动应用开发
  • 吴恩达机器学习笔记七 逻辑回归的梯度下降 过拟合及解决方法

    两个偏导数 逻辑回归的梯度下降 泛化 generalization 对全新的示例也能做出良好的预测 解决过拟合的方法 1 收集更多的测试数据 2 特征选择 feature selection 使用更少的特征 3 正则化 regulariza
  • 题解 | #火车进站#

    解约的同学看过来 提供一份解约思路 题解 火车进站 include
  • Linux性能优化常做的一些事情

    Linux性能优化是一个广泛的主题 涉及多个方面 以下是一些常见的Linux性能优化建议 硬件和系统配置 使用SSD替代HDD 确保系统有足够的RAM 使用多核CPU 配置合适的网络硬件和带宽 磁盘I O性能 使用RAID来提高I O性能
  • Win7系统提示找不到dmvscres.dll文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个dmvscre
  • Win7系统提示找不到dmsynth.dll文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个dmsynth
  • 目标检测深度学习的anchor

    在目标检测深度学习中 Anchor是一种预定义的框 用于在图像中采样不同位置 尺度和长宽比例的区域 作为目标检测模型的候选区域 Anchor是Faster R CNN等基于Anchor的目标检测算法的核心概念 具体来说 Anchor有以下几
  • 深度学习目标检测全连接层什么意思

    在深度学习目标检测中 通常我们使用卷积神经网络 Convolutional Neural Network CNN 进行特征提取 CNN 的主要结构包括卷积层和池化层 用于从输入图像中提取特征 然而 为了最终输出目标的类别和位置信息 通常在网
  • 题解 | #平均活跃天数和月活人数#

    金融科技岗分享 欢聚shopline 凉 又遇毁到offer 爱奇艺互动产品运营实习面经 百度大搜2024校招补录 搜索时效性团队工作职责 1 通过query理解 召回 排序全链路的优化 持续优化百度搜索时效排序效果2 持续探索落地最前沿的
  • WMS系统出库扫描:提升仓储管理效率与准确性

    WMS系统中的出库扫描功能是关键环节之一 它通过扫描物料或货物的条形码或二维码 实现实时 准确地记录和更新库存信息 一 WMS系统出库扫描的重要性 1 实现库存准确性 通过出库扫描 WMS系统能够准确记录物料或货物的出库信息 实时更新库存数
  • 持续集成交付CICD:Jenkins使用GitLab共享库实现前端项目镜像构建

    目录 一 实验 1 GitLab修改项目文件与Harbor环境确认 2 Jenkins使用GitLab共享库实现前端项目镜像构建 3 优化CI流水线封装Harbor账户密码 4 Jenkins再次使用GitLab共享库实现前端项目镜像构建