使用 Jenkins、Gitlab、Harbor、Helm、k8s 来实现流水线作业

文章目录

    • 一、流程
    • 二、Dockerfile

使用 Jenkins、Gitlab、Harbor、Helm、Kubernetes 来实现一个完整的持续集成和持续部署的流水线作业

一、流程

在这里插入图片描述

  1. 开发人员提交代码到 Gitlab 代码仓库
  2. 通过 Gitlab 配置的 Jenkins Webhook 触发 Pipeline 自动构建
  3. Jenkins 触发构建构建任务,根据 Pipeline 脚本定义分步骤构建
  4. 先进行代码静态分析,单元测试
  5. 然后进行 Maven 构建(Java 项目)
  6. 根据构建结果构建 Docker 镜像
  7. 推送 Docker 镜像到 Harbor 仓库
  8. 触发更新服务阶段,使用 Helm 安装/更新 Release
  9. 查看服务是否更新成功。

二、Dockerfile

dockerfile文件详解

Dockerfile是一个文本文件,用于定义Docker镜像的构建过程,它包含了一系列指令和说明,用于指导Docker如何构建镜像。Dockerfile的基本结构包括基础镜像、镜像元信息、镜像操作指令以及容器启动时执行的命令。Docker会从上到下顺序执行Dockerfile中的指令。12

Dockerfile的指令主要包括:

  • FROM:指定基础镜像,必须是Dockerfile中的第一条指令。例如,FROM ubuntu:latest。
  • RUN:在基础镜像之上运行命令,例如,RUN apt-get update或RUN [“executable”, “param1”, “param2”]。
  • CMD:指定容器启动时运行的命令,例如,CMD [“executable”, “param1”, “param2”]或CMD command param1 param2。
  • WORKDIR:设置工作目录,例如,WORKDIR /path/to/workdir。
  • ADD:从宿主机复制文件或目录到容器中,例如,ADD ./path/on/host:/path/in/container。
  • ENV:设置环境变量,例如,ENV VAR_NAME=value。

在编写Dockerfile时,应注意以下几点:

注释:使用#进行注释。
指令格式:指令后面应跟随至少一个参数,且指令本身应大写。
多行命令:避免在单个RUN指令中包含多行命令,因为这可能导致镜像层过多,增加构建和部署的时间。
缓存利用:RUN指令创建的中间镜像会被缓存,使用–no-cache参数可以避免使用这些缓存镜像。

通过这些指令的组合,可以定义复杂的镜像构建过程,包括安装软件包、配置环境变量、复制文件等操作。Dockerfile不仅定义了软件的原材料(Dockerfile),还涉及到Docker镜像和Docker容器的概念,这三者共同构成了Docker体系的基石。

FROM openjdk:8-jdkMAINTAINER meng <meng@mail.com>ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV TZ=Asia/ShanghaiRUN mkdir /appWORKDIR /appCOPY target/poll-0.0.2-SNAPSHOT.jar /app/poll.jarEXPOSE 8080ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar","/app/poll.jar"]

#带上编译

FROM maven:3.6-alpine as BUILDCOPY src /usr/app/src
COPY pom.xml /usr/appRUN mvn -f /usr/app/pom.xml clean package -Dmaven.test.skip=trueFROM openjdk:8-jdkMAINTAINER meng <meng@mail.com>ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV TZ=Asia/ShanghaiRUN mkdir /appWORKDIR /appCOPY --from=BUILD /usr/app/target/poll-0.0.2-SNAPSHOT.jar /app/poll.jarEXPOSE 8080ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar","/app/poll.jar"]

在这里插入图片描述


学如逆水行舟,不进则退。学习如赶路,不能慢一步。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7中常用的网络与用户相关命令详解

CentOS 7中常用的网络与用户相关命令详解 在CentOS 7中,有许多与网络和用户管理相关的命令,这些命令可以帮助我们了解系统上的用户活动、网络连接以及进行基本的通信。下面我们将详细介绍w、who、last、lastlog、write、wall和mail这些命令及其选项和格式。 1. w命令 w命令…

尚硅谷html5+css3(3)布局

1.文档流normal flow -网页是一个多层结构 -通过CSS可以分别为每一层设置样式 -用户只能看到最顶层 -最底层&#xff1a;文档流&#xff08;我们所创建的元素默认都是从文档流中进行排列&#xff09; <head><style>.box1 {background-color: blue;}/*它的父元…

C# + OpencvSharp4 错误信息收集

异常1&#xff1a; 初次使用&#xff0c;如下代码报错&#xff0c;OpenCvSharp.OpenCvSharpException:“imread failed.” Mat src Cv2.ImRead("Source.png", ImreadModes.Unchanged); 原因&#xff1a;检查Nuget包与OpencvSharp4库相关安装是否完整&#xff0c;…

日志脱敏更加优雅性能更好,远超正则。支持 logback+log4j2 插件

项目介绍 日志脱敏是常见的安全需求。普通的基于工具类方法的方式&#xff0c;对代码的入侵性太强&#xff0c;编写起来又特别麻烦。 sensitive 项目提供基于注解的方式&#xff0c;并且内置了常见的脱敏方式&#xff0c;便于开发。 支持 logback 和 log4j2 等常见的日志脱敏…

系统架构评估_3.ATAM方法

架构权衡分析方法&#xff08;Architecture Tradeoff Analysis Method&#xff0c;ATAM&#xff09;是在SAAM的基础发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性进行评价和折中。 &#xff08;1&#x…

Unity2023使用sdkmanager命令行工具安装Android SDK

1&#xff0c;下载cmdline-tools&#xff0c;官网地址&#xff1a;https://developer.android.com/studio或者https://dl.google.com/android/repository/文件名 文件名对应版本名。例如文件名为commandlinetools-win-9862592_latest.zip 引用Android cmdline-tools 版本与其…

道可云元宇宙每日资讯|阿里云通义千问开源7款大语言模型

道可云元宇宙每日简报&#xff08;2024年4月8日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 六部门&#xff1a;支持内蒙古人工智能产业建设 国家发展改革委等六部门发布《关于支持内蒙古绿色低碳高质量发展若干政策措施的通知》。其中提出&#xff0c;加快推…

【网络】什么是RPC

RPC 是Remote Procedure Call的缩写&#xff0c;译为远程过程调用。是一个计算机通信协议。 1、为什么需要远程调用 在如何给女朋友解释什么是分布式这一篇文章中介绍过&#xff0c;为了提升饭店的服务能力&#xff0c;饭店从一开始只有一个负责所有事情的厨师发展成有厨师、切…

一种新兴的身份安全理念:身份结构免疫

文章目录 前言一、从身份管理到身份结构免疫二、身份结构免疫应用实践三、典型应用场景前言 随着组织的数字身份数量激增,基于身份的网络攻击活动也在不断增长。在身份优先的安全原则下,新一代身份安全方案需要更好的统一性和控制度。而在现有的身份管理模式中,组成业务运营…

人工智能的发展ai智能机器人语音后端识别处理

AI智能机器人语音后端识别和处理涉及多个方面&#xff0c;包括语音识别、自然语言理解、意图识别、响应生成等。以下是一般的处理步骤和技术&#xff1a; 语音识别&#xff1a; 使用语音识别引擎将用户的语音输入转换为文本。常用的语音识别引擎包括Google Cloud Speech-to-Tex…

OpenCV图像处理——基于OpenCV的ORB算法实现目标追踪

概述 ORB&#xff08;Oriented FAST and Rotated BRIEF&#xff09;算法是高效的关键点检测和描述方法。它结合了FAST&#xff08;Features from Accelerated Segment Test&#xff09;算法的快速关键点检测能力和BRIEF&#xff08;Binary Robust Independent Elementary Feat…

c语言:操作符

操作符 一.算术操作符: + - * % / 1.除了%操作符之外,其他的几个操作符可以作用与整数和浮点数,如:5%2.0//error. 2.对于操作符,如果两个操作数都为整数,执行整数除法而只要有浮点数执行的就是浮点数除法。 3.%操作符的两个操作数必须为整数。 二.移位操作符:<&…

SSL中的CA证书

目录 一、CA概述 二、数据加密 三、身份认证 一、CA概述 SSL如何保证网络通信的安全和数据的完整性呢&#xff1f;就是采用了两种手段&#xff1a;身份认证和数据加密。身份认证就需要用到CA证书。 CA是证书的签发机构&#xff0c;它是公钥基础设施&#xff08;Public Key In…

【触想智能】工业一体机和普通电脑的区别是什么?

工业一体机和普通电脑的区别是什么&#xff0c;工业一体机可以当普通电脑一样使用吗? 要想了解工业一体机和普通电脑的区别是什么?我们首先来看看工业一体机是什么&#xff0c;它跟普通电脑有哪些相似的地方?下面小编就为大家来详细介绍一下。 在工作原理上&#xff0c;工业…

【华为OD机试】迷宫问题(深度优先搜索—JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

iOS-获取Xcode工程中文件的路径

1、使用Create folder references的Add folders的方式把文件或者文件夹拖到Xcode工程中 拖入时的设置参考下图 注意拖入到工程之后文件夹是蓝色的&#xff08;Xcode10.1环境&#xff09; 2、代码具体实现&#xff1a; 使用NSBundle的API&#xff0c;然后拼接具体路径即可 NS…

云计算(五)—— OpenStack基础环境配置与API使用

OpenStack基础环境配置与API使用 项目实训一 【实训题目】 使用cURL命令获取实例列表 【实训目的】 理解OpenStack的身份认证和API请求流程。 【实训准备】 &#xff08;1&#xff09;复习OpenStack的认证与API请求流程的相关内容。 &#xff08;2&#xff09;熟悉cURL…

【Linux】重定向与管道(十)

文章目录 输出重定向 >追加输出重定向 >>输入重定向 <管道符 |&#xff08;重要&#xff09; 在Linux中&#xff0c;标准输入&#xff08;stdin&#xff09;、标准输出&#xff08;stdout&#xff09;和标准错误输出&#xff08;stderr&#xff09;是与终端和程序之…

【力扣一刷】代码随想录day32(贪心算法part2:122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II )

目录 【122.买卖股票的最佳时机II】中等题 方法一 贪心算法 方法二 动态规划 【55. 跳跃游戏】中等题 【尝试】 递归 &#xff08;超时&#xff09; 方法 贪心算法 【45.跳跃游戏II】中等题 方法 贪心算法 【122.买卖股票的最佳时机II】中等题&#xff08;偏简单&#xff0…

神州数码命令:路由器配置

路由器配置 一、路由器基本配置 1、进入特权模式&#xff1a; Router>en2、进入全局配置模式&#xff1a; Router#config3、定义路由器的名字为DCR &#xff1a; Router(Config)#hostname DCR4、特权用户的口令&#xff1a; DCR (Config)#enable password 1234565、启…