02 使用jenkins实现K8s持续集成

news2024/10/7 14:25:16

1.项目架构的代码仓库使用gitlab托管

架构描述我不打算用过多文字描述了,来我们一起直接看图吧....

二.将测试代码上传到gitlab

1.注册gitlab账户

此处使用本地搭建仓库

2.创建仓库名称为"idiaoyan"

如下图所示,安装图解方式创建相应的用户即可。

在这里插入图片描述

3.将本地代码上传到"idiaoyan"仓库在这里插入图片描述

#(1)解压静态文件
上传代码到/data/code下
[root@master code]# unzip yiliaoqixie
#(2)Git本地提交代码到本地仓库
cd /data/code
git init
git config --global user.name "liuyan"
git config --global user.email "liuyan@qq.com"
git config --global credential.helper store  #后面拉取不要密码
mv yiliaoqixie/* idiaoyan/
cd idiaoyan/
#(3)git推送代码到gitlab的远程仓库
git add .
git commit -m "add code"
git push -u origin master

三.提交dockerfile文件

1.编写dockerfile

#(1)编写dockerfile内容如下
cat > Dockerfile <<EOF
FROM idy.com/harbor/alpine:latest

LABEL auther="idy.com"

LABEL school="oldboyedu" \
      class="linux" \
      address="北京,上海,深圳"

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    apk add nginx && \
    rm -rf /var/cache/ && \
    rm -rf /usr/share/nginx/html/*

# ADD idiaoyan.tar.gz /usr/share/nginx/html/
ADD . /usr/share/nginx/html/

EXPOSE 80

COPY default.conf /etc/nginx/http.d/default.conf

CMD ["nginx","-g","daemon off;"]
EOF
#(2)本地测试编译
[root@master idiaoyan]# docker build -t yiliao:v1 .

2.启动容器测试可用性

[root@master idiaoyan]# docker container run -itdp 80:80 yiliao:v1

在这里插入图片描述

3.推送dockerfile文件到仓库中

[root@master idiaoyan]# git add Dockerfile
[root@master idiaoyan]# git commit -m "add Dockerfile"
[master 6d3fc7b] add Dockerfile
 1 file changed, 16 insertions(+)
 create mode 100644 Dockerfile
[root@master idiaoyan]# git push -u origin master

4.部署Jenkins并配置项目源码管理(gitlab环境)

1.部署jenkins服务

Jenkins 快速部署

1.1上传Jenkins 相关文件

上传以下文件
在这里插入图片描述

1.2 部署jenkins 服务

cd /data/jenkins
jenkins.gz  && mv jenkins/* ./
unzip jenkins.tar.zip
docker load -i jenkins.tar

#直接启动:
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
#docker-compose.yml启动
#可能遇到问题,检查对象的目录文件
version: '3.8'
services:
  myjenkins:
    container_name: myjenkins
    hostname: myjenkins
    image: cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
    restart: unless-stopped
    ports:
      - 8080:8080
      - 50000:50000
    environment:
      - TZ=CST-8
    volumes:
      - /data/jenkins/mount/jenkins.yml:/var/jenkins_home/jenkins.yml  
      - /data/jenkins/mount/Dockerfile_openresty:/var/jenkins_home/tools/Dockerfile_openresty
      - /usr/bin/docker:/usr/bin/docker
      - /run/docker.sock:/run/docker.sock
      - /data/jenkins/mount/workspace/:/var/jenkins_home/workspace/

在这里插入图片描述

1.2 创建项目

在这里插入图片描述

1.2.1 添加项目的存储库RUL

在上一步完成之后,会弹出如下图所示对话框,依次点击"源码管理" ---> "Git" ---> "Repositories" ---> ”Repository URL"中添加项目的存储库RUL

在这里插入图片描述

1.2.2 添加凭证(Credentials)信息

依次点击上一步Credentials的"添加"按钮 ---> "jenkins",
就会弹出如下图所示的对话框,然后根据你的账号密码登录即可。

在这里插入图片描述

1.2.3 配置构建指令

如下图所示:
依次点击"构建" ---> "增加构建步骤" ---> 选择"执行shell" ---> "保存"

在这里插入图片描述

1.2.4 点击立即构建

如下图所示,点击"立即构建",就可以成功构建当前的"idiaoyan"这个工程了。

在这里插入图片描述

1.2.5 查看控制台输出

在这里插入图片描述

5.使用Jenkins实现自动构建镜像并推送到私有仓库

1.重新编辑"执行shell的命令"

#jenkins 认证harbor仓库
[root@jenkins jenkins]# docker login idy.com
Username (admin): admin
Password: idy123456
Login Succeeded
docker build -t idy.com/harbor/yiliao:$version .
docker image push  dy.com/harbor/yiliao:$version

在这里插入图片描述

2.添加字符参数

如下图所示:
依次点击"General" ---> "参数化构建过程" ---> "添加参数" ---> 选择"字符参数" ---> 填写"version"变量即可。

在这里插入图片描述
在这里插入图片描述

3.开始传入参数构建

如上图所示,依次点击"Build with Parameters" ---> 输入"version"变量的版本信息 ---> "开始构建"。
如下图所示,构建完成之后,我们可以依次点击"#2"的下拉菜单 ---> 选择查看"控制台输出"的信息。

在这里插入图片描述

4.构建完成后查看镜像是否生成

如下图所示,我们查看了"控制台输出",很明显能看到镜像推送成功了,而且在存储库的确有相关的tag记录哟。
温馨提示:
	我们假设私有仓库的存储卷路径为"$volume",则其对应的"yiliao"项目的tag存储为位于"$volume/docker/registry/v2/repositories/yiliao/_manifests/ta
gs/"

4.1 使用 jenkins pipline 实现 拉取,构建,推送

后面jenkins CICD均有pipline 完成,以下是pipline 脚本,其中添加字符参数与上方一至

pipeline{
    agent any
	// 参数化构建
    parameters {
    //string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'rollback_version', trim: true)
	string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'version', trim: true)
	}	
    // 丢弃旧的构建
	options {
		buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '15', numToKeepStr: '20'))
	}	
	// 定义环境变量
	 environment {
	    //gitlab相关信息	
		harbor_address="idy.com"
		work_space_yiliao="/var/jenkins_home/workspace/test-yiliao"
	 }	
    stages("Build") {
		stage('拉取代码'){
		steps {
			script{
			sh "cd ${work_space_yiliao}  &&  rm -r -f idiaoyan"
			//拉取代码的方式:ssh或者http,根据项目实际情况选择
			sh "git clone http://192.168.221.143:9000/liuyan/idiaoyan.git idiaoyan"
				}
			}
		
		}
			
		stage('构建镜像'){
		steps {
			script{
			sh "cd ${work_space_yiliao}/idiaoyan && docker build -t idy.com/harbor/yiliao:$version ."	       
			//sh "docker image push  idy.com/harbor/yiliao:$version"	  
				}
			}
		
		}	
			
		stage('推送镜像'){
		steps {
			script{   
			sh "docker image push  idy.com/harbor/yiliao:$version"	  
				}
			}
		
		}	
	}
}

4.2 查看推送结果

  • 查看harbor
    在这里插入图片描述

  • 查看Jenkins 推送结果
    在这里插入图片描述

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

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

相关文章

基于Multisim的LC正弦波振荡器的设计与仿真

目 录 1、绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 1 1.3研究主要内容 2 2、系统整体设计 3 2.1开发环境Multisim的介绍 3 2.2方案比较与论证 4 2.2.1振荡电路方案选择 4 2.2.2 控制电路设计方案 4 2.3系统整体设计 5 3、工作原理、硬件电路的设计和参数的计算 6 3.1 反馈…

2022中科院分区表即将公布,今年迎来较大变化

再有一段时间&#xff0c;备受科研人员关注的中科院分区表就要公布了。 据中科院文献情报中心分区表小编今天留言透露&#xff0c;今年的分区表预计11月底或12月初上线。 不少科研人已经开始期待了 。和往年相比&#xff0c;今年的分区表将会有较大变化。 只有升级版期刊分区…

Java多线程(一)

目录 一、基本概念 程序、进程、线程 单核CPU和多核CPU 并行与并发 使用多线程的优点 二、线程的创建与使用 线程的创建和启动 Thread类 Thread类的特性 Thread类的构造器 API中创建线程的两种方式 创建线程方式一&#xff1a;继承Thread类 创建继承Thread类线程方…

魔众文库系统 v3.5.0 预览页数调整,批量操作命令,多处优化

魔众文库系统基于文档系统知识&#xff0c;建立平台与领域&#xff0c;打造流量、用户、付费和变现的闭环&#xff0c;帮助您更好的搭建文库系统。 魔众文库系统发布v3.5.0版本&#xff0c;新功能和Bug修复累计23项&#xff0c;预览页数调整&#xff0c;批量操作命令&#xff…

Java基础深化和提高 ---- 反射技术

目录 反射机制介绍 什么是反射 反射的作用 创建对象过程 Java创建对象的三个阶段 创建对象时内存结构 反射的具体实现 创建Users类 通过getClass()方法获取Class对象 通过.class 静态属性获取Class对象 通过forName()获取Class对象 获取类的构造方法 通过构造方法创…

设计模式之享元模式(十)

目录 1. 享元模式概述 2. 享元模式在Integer中的应用 1. 享元模式概述 享元模式&#xff08;Flyweight Pattern&#xff09; 也叫 蝇量模式&#xff0c;运用共享技术有效地支持大量细粒度的对象。简单来说就是共享对象。 享元模式能够解决重复对象的内存浪费的问题&#xff…

Python3,os模块还可以这样玩,自动删除磁盘文件,非必要切勿操作。

删除磁盘下所有的文件1、引言2、代码实战2.1 模块介绍2.2 获取盘符2.3 获取盘符下的目录2.3.1 os.listdir()2.3.2 os.environ2.3.3 os.getenv()2.4 删除文件2.4.1 删除指定文件下文件2.4.2 删除所有文件下文件3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 请教你个问题…

Flink基础篇(基础算子+WaterMarker)

Flink高可用HA 依赖于zkFlink ON Yarn两种模式Session模式Per-Job模式前置说明Flink原理数据在两个operator算子之间传递的时候有两种模式&#xff1a;Operator ChainTaskSlot And SharingFlink执行图&#xff08;ExecutionGraph&#xff09;APISourceTransformationSink控制台…

【图像识别-车牌识别】基于BP神经网络求解车牌识别问题含GUI界面和报告

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

11个销售心理学方法,帮你搞定客户!

销售心理学中&#xff0c;站在客户的角度&#xff0c;客户都会有以下几个疑问&#xff1a; 1、你是谁&#xff1f; 2、你要跟我介绍什么&#xff1f; 3、你介绍的产品和服务对我有什么好处&#xff1f; 4、如何证明你介绍的是真实的&#xff1f; 5、为什么我要跟你买&…

Linux学习之expect操作详解

一、expect安装介绍 1.expect命令安装 安装语句:yum install expect 2.expect命令含义 expect是一种脚本语言&#xff0c;它能够代替人工实现与终端的交互&#xff0c;主要应用于执行命令和程序时&#xff0c;系统以交互形式要求输入指定字符串&#xff0c;实现交互通信。 …

疟原虫蛋白复合物疫苗科研

疟疾是一种蚊媒疾病&#xff0c;感染者通常会出现发烧、发冷和流感样疾病。如果不及时治疗&#xff0c;严重者甚至会危及生命。世卫组织新近发布的数据表明&#xff0c;2019 年全球估计发生 2.29 亿疟疾病例&#xff0c;死于该病的人数超过 40 万例。 图 1. 2000 年有病例的国…

Flutter 应用程序中的 Quick Actions

Flutter 应用程序中的 Quick Actions 原文 https://medium.com/vijay-r/quick-actions-in-flutter-app-75b63acc420b 前言 在这篇文章中&#xff0c;我们将讨论如何添加 Quick Actions 在我们的 Flutter 应用程序&#xff0c;使我们的应用程序更加友好的用户。 正文 插件 quick…

LVM逻辑卷

要求&#xff1a;在系统下做LVM逻辑卷2G&#xff0c;并将LVM进行扩容到5G 操作环境&#xff1a;7.8.2003 [rootlocalhost ~]# lsblk #列出所有可用块设备信息 我们使用vdb和vdc两块硬盘做lvm 先将一个盘进行分区&#xff08;/dev/vdb&#xff09; [r…

Leetcode808. 分汤

文章目录题目链接题目大意解题思路代码(C)动态规划记忆化搜索题目链接 点我(^_^) 题目大意 注意不是两个概率加和除以2 解题思路 考虑动态规划&#xff0c;因为汤的分配都是以 25 的倍数进行分配的&#xff0c;所以这里把 25 ml 的汤看作一份&#xff0c;总的份数⌈汤的体…

A-Level经济例题解析及练习Analysis of Tax

今日知识点&#xff1a;Analysis of Tax 例题A. Compute consumer surplus, producer surplus, and total surplus without a tax. B. If $100 tax per ticket, compute consumer surplus, producer surplus, tax revenue, total surplus, and deadweight loss.解析下面我们为大…

搭载北京君正X2000主控芯片的成功案例

汉王e典笔S20 Plus搭载北京君正研发的X2000多核异构跨界处理器。X2000多核异构跨界处理器主要面向于智能音频、图像识别、智能家电、智能家居、智能办公等五大领域。CPU采取三核结构&#xff0c;搭载双XBurst2&#xff0c;主频1.2GHz&#xff0c;跨界第三核XBurst0(240MHz)&…

Linux--进程概念

前言&#xff1a; 在学习操作系统的过程中&#xff0c;我们常常能听到进程这一概念以及相关的一些知识。例如什么是父进程&#xff0c;什么是子进程&#xff0c;如何创建子进程&#xff0c;如何杀死进程等。这些知识后面会一一介绍&#xff0c;在迈入学习进程的第一步我只需要知…

[附源码]java毕业设计校园二手交易平台的设计

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

养殖废水总氮超标的解决方法

养殖废水除总氮。入水是100mg/L&#xff0c;处理水量大概在3T/H&#xff0c;要求养殖废水总氮小于5PPM。 生化前置过滤树脂的工艺&#xff0c;通过阳树脂中含有的阳离子会与水中的游离氨&#xff08;NH3&#xff09;和铵离子&#xff08;NH4&#xff09;进行交换&#xff0c;将…