Jenkins搭建并与Harbor集成上传镜像
Jenkins介绍
Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)的实践中。它帮助开发人员自动化构建、测试和部署过程,从而提高开发效率、代码质量和项目交付速度。通过丰富的插件支持、分布式构建以及强大的自动化功能,Jenkins能够满足各种复杂的DevOps需求。
1.Jenkins主要功能
持续集成(CI)
Jenkins允许开发人员频繁地将代码集成到主干中,通过自动构建和测试,及时发现和解决问题。这样可以减少集成的风险,提高开发效率。
持续交付(CD)
Jenkins不仅用于持续集成,还可以将构建好的应用自动部署到测试环境、生产环境等,帮助实现自动化的交付流程。
插件支持
Jenkins拥有丰富的插件生态系统,可以与各种工具和服务集成,如版本控制系统(Git、SVN)、构建工具(Maven、Gradle)、容器(Docker、Kubernetes)等。
分布式构建
Jenkins支持分布式构建,可以将构建任务分配给多台机器,提升构建效率,减少构建时间。
可扩展性
由于Jenkins是开源的,用户可以根据自己的需求开发插件和功能,满足不同项目的要求。
自动化任务
Jenkins可以用来自动化许多任务,如代码质量检查、部署、通知、数据库迁移等。通过配置"Job",用户可以设置一系列任务来实现自动化。
2. Jenkins的工作原理
Jenkins的工作流程通常包括以下几个步骤:
代码提交(触发器)
当开发人员将代码提交到版本控制系统(如Git)时,Jenkins会监听版本库中的变更事件,触发自动构建和测试。
构建(Build)
Jenkins会从版本控制系统拉取最新的代码,并使用指定的构建工具(如Maven、Gradle等)编译和打包代码。
自动化测试(Test)
在构建完成后,Jenkins会自动执行单元测试、集成测试等,以验证代码是否正确,确保没有破坏现有功能。
部署(Deploy)
Jenkins可以将经过测试的构建自动部署到开发、测试、预生产或生产环境,减少人工干预,提高交付效率。
通知(Notify)
Jenkins能够通过邮件、Slack、Webhook等方式通知相关人员构建和部署的状态。
Jenkins的安装
1.基础环境准备
由于Jenkins对CentOS系统关闭了维护,为确保实验的可行性以及长远角度看,本文实验不再使用CentOS7系统,选择Rocky9系统作为实验系统。
关闭防火墙与selinux:
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service". [root@localhost ~]# setenforce 0 |
替换阿里云yum源:
[root@jenkins .ssh]# sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \ -i.bak \ /etc/yum.repos.d/[Rr]ocky*.repo |
2. 安装JDK
Jenkins是基于java编写的软件,所以在安装之前需要在主机上安装Java的运行环境,及安装jdK,我们选择安装JDK17版本
[root@localhost ~]# wget https://download.oracle.com/java/17/archive/jdk-17.0.6_linux-x64_bin.rpm |
[root@localhost ~]# yum install -y jdk-17.0.6_linux-x64_bin.rpm |
3. 安装Jenkins
添加yum源文件:
[root@localhost ~]# vi /etc/yum.repos.d/jenkins.repo [jenkins] name=Jenkins baseurl=http://pkg.jenkins.io/redhat gpgcheck=0 |
安装Jenkins
[root@localhost ~]# yum -y install jenkins |
4. 启动Jenkins
[root@localhost ~]# systemctl start jenkins #自体缺失问题:下载字体 yum groupinstall -y "Fonts" yum install -y xorg-x11-fonts-* |
查看端口:
5. 浏览器初始化Jenkins
浏览器访问http://192.168.100.10:8080/
需要解锁Jenkins,密码存放在/var/lib/jenkins/secrets/initialAdminPassword之下,复制添加即可。
[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword d9c12316f3ea4b568bb0d5fa1d8417e9 |
选择安装推荐的插件,并等待安装:
插件安装完成后,会出现“创建第一个管理员用户”页面,填写正确信息后,点击“保存并完成”,这样第一个管理员用户就创建完毕了
至此,Jenkins的基础安装完成。
Jenkins 推送镜像至Harbor仓库
1 .搭建Docker
[root@jenkins ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@jenkins ~]# dnf -y install docker-ce |
添加镜像加速
[root@jenkins ~]# vi /etc/docker/daemon.json { "registry-mirrors": [ "https://rtgofewn.mirror.aliyuncs.com", "https://docker.m.daocloud.io"], "exec-opts": ["native.cgroupdriver=systemd"] } [root@jenkins ~]# systemctl daemon-reload [root@jenkins ~]# systemctl restart docker |
2. 搭建Harbor仓库
安装Docker-compose
[root@Jenkins harbor]# curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 下载Docker-compose二进制文件 |
[root@docker Jenkins]# chmod +x /usr/local/bin/docker-compose赋予执行权限 |
上传文件:harbor-offline-installer-v2.1.3.tgz
解压文件:
[root@jenkins ~]# tar -zxvf harbor-offline-installer-v2.1.3.tgz -C /usr/local/ [root@jenkins ~]# cd /usr/local/harbor/ 上传镜像 修改配置文件: [root@jenkins harbor]# cp harbor.yml.tmpl harbor.yml [root@jenkins harbor]# vi harbor.yml |
在镜像加速文件添加仓库地址:
[root@jenkins harbor]# vi /etc/docker/daemon.json { "registry-mirrors": [ "https://rtgofewn.mirror.aliyuncs.com", "https://docker.m.daocloud.io"], "insecure-registries":["192.168.100.10"], "exec-opts": ["native.cgroupdriver=systemd"] } [root@jenkins ~]# systemctl daemon-reload [root@jenkins ~]# systemctl restart docker |
安装Harbor仓库
[root@jenkins harbor]# docker load -i harbor.v2.1.3.tar.gz [root@jenkins harbor]# ./prepare [root@jenkins harbor]# ./install.sh |
启动成功后可以使用Docker命令检查一下容器是都正常启动.
浏览器登陆harbor仓库:ip
初始账户admin,Harbor12345登陆账户
3. 创建Dockerfile
[root@jenkins ~]# mkdir /dockerfile/ [root@jenkins ~]# cd /dockerfile/ [root@jenkins dockerfile]# vi dockerfile FROM nginx:latest LABEL maintainer="1550988597@qq.com" EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] #构建一个简单的镜像用于实验 |
4. 创建项目
新建一个项目
设置源码管理
gitee的一个开源仓库即可
新建Build Steps
增加命令:
#进入DockerFile目录 cd /dockerfile #登陆Harbor仓库 docker login 192.168.100.10 -u admin -p Harbor12345 #创建镜像 docker build -t hzynginx:latest . #给镜像打标签 docker tag hzynginx:latest 192.168.100.10/jenkins/hzynginx:latest #上传镜像 docker push 192.168.100.10/jenkins/hzynginx:latest |
应用并保存。
5. 构建项目并验证
构建项目:
进入Harbor仓库进行验证:
上传成功。
本篇文章至此结束,各位债见。
相关文章:
Jenkins搭建并与Harbor集成上传镜像
Jenkins介绍 Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)的实践中。它帮助开发人员自动化构建、测试和部署过程,从而提高开发效率、代码质量和项目交付速度。通过丰富的插件支持…...
FutureCompletableFuture实战
1. Callable&Future&FutureTask介绍 直接继承Thread或者实现Runnable接口都可以创建线程,但是这两种方法都有一个问题就是:没有返回值,也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景,而Fu…...
Amazon与Shopee平台对比:跨境卖家如何选对平台打开市场?
在跨境电商领域,选择合适的平台对卖家能否成功打开市场至关重要。如今,Amazon和Shopee成为了众多卖家的热门选择。一个以全球化布局和高端市场著称,一个则专注东南亚新兴市场的潜力。两者各有优势,但也需要根据卖家的业务模式、目…...
【项目实战】redis实现websocket分布式消息推送服务
由于redis并非专业的MQ中间件,消息的防丢失策略并不完整,存在丢失消息的可能。该方案为在再pc web管理平台的右下角弹出,显示新接收到的消息数,哪怕没有收到这个通知,也可以自己在消息中心看看。所以对可靠性要求不高。…...
(自用)配置文件优先级、SpringBoot原理、Maven私服
配置优先级 之前介绍过SpringBoot中支持三类配置文件.properties、.yml和.yaml,他们三者之间也是有着优先级顺序的,为.properties➡.yml➡.yaml。 同时SpringBoot为了增强程序的拓展性,除了支持配置文件属性配置,还支持Java系统属…...
在windows系统中使用labelimg对图片进行标注之工具安装及简单使用
一.背景 还是之前的主题,使用开源软件为公司搭建安全管理平台,从视觉模型识别安全帽开始。我是从运行、训练、标注倒过来学习的。本次主要是学习标注工具labelimg的安装及简单使用。 二.下载 LabelImg是一款广受欢迎的开源图像标注工具,为计…...
数字图像处理技术期末复习
1. 已知图像的分辨率和深度,怎么求图像的存储空间(位,字节,KB)? 题目: 已知图像的分辨率和深度,怎么求图像的存储空间(位,字节,KB)&a…...
点云空洞的边界识别提取 pso-bp 神经网络的模型来修复点云空洞 附python代码
代码是一个Python程序,用于处理3D点云数据,特别是检测和修复点云中的孔洞区域。 1. **导入库**: - `numpy`:用于数学运算。 - `open3d`:用于处理3D数据和可视化。 - `torch`:PyTorch库,用于深度学习。 - `torch.nn`和`torch.optim`:PyTorch的神经网络和优…...
【AutoDL】通过【SSH远程连接】【vscode】
小帅碎碎念 0. 起因1. SSH信息获取2. 给你的vscode安装支持SSH远程连接的插件3. SSH远程连接入口4. 输入密码登陆5. 总结 0. 起因 之前使用AutoDL和Jupyter进行代码编辑和执行确实很方便,尤其是对于交互式数据分析项目。然而,也存在一些限制和不便之处&…...
ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程
本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…...
短链接服务
一 功能描述 1.短链接是将长连接转化为短连接使得链接变得美观清爽,让用户点击率更高,同时规避原始链接中一些关键词、域名屏蔽等问题,最终利用短链每次跳转都需要经过后端的特性,在跳转过程中做异步埋点,用于效果数据…...
【Vue3学习】setup语法糖中的ref,reactive,toRef,toRefs
在 Vue 3 的组合式 API(Composition API)中,ref、reactive、toRef 和 toRefs 是四个非常重要的工具函数,用于创建和管理响应式数据。 一、ref 用ref()包裹数据,返回的响应式引用对象,包含一个 .value 属性࿰…...
Halcon中dots_image(Operator)算子原理及应用详解
在HALCON中,dots_image算子是一个用于增强图像中圆点效果的强大工具,特别适合于点的分割,以及OCR(光学字符识别)应用程序中增强点状印刷字体。以下是对dots_image (ImageResult, DotImage, 5, ‘dark’, 2)算子原理及应…...
【C语言】库函数常见的陷阱与缺陷(四):内存内容操作函数[5]--memchr
C语言中的memchr函数用于在内存块中搜索一个特定的字符(实际上是unsigned char类型的值),并返回该字符第一次出现的指针。虽然这个函数在内存搜索中非常有用,但它也存在一些陷阱。 一、功能与用法 功能:memchr函数在指定的内存块中搜索第一次出现的特定字符,并返回一个…...
【P2P】【Go】采用go语言实现udp hole punching 打洞 传输速度测试 ping测试
服务器端 udpserver/main.go package mainimport ("fmt""net""sync""sync/atomic" )var (clientCounter uint64 0 // 客户端连接计数器mu sync.Mutex )func main() {addr, err : net.ResolveUDPAddr("udp", &q…...
【附源码】Electron Windows桌面壁纸开发中的 CommonJS 和 ES Module 引入问题以及 Webpack 如何处理这种兼容
背景 在尝试让 ChatGPT 自动开发一个桌面壁纸更改的功能时,发现引入了一个 wallpaper 库,这个库的入口文件是 index.js,但是 package.json 文件下的 type:"module",这样造成了无论你使用 import from 还是 require&…...
【SpringBoot 调度任务】
在 Spring Boot 中实现调度任务(Scheduled Tasks),通过使用 EnableScheduling 和 Scheduled 注解来完成。 添加依赖启用调度任务支持创建调度任务运行应用程序 添加依赖 pom.xml 文件中有以下依赖项: <dependency><gro…...
Android v4和v7冲突
android.useAndroidXtrue android.enableJetifiertruev4转成AndroidX...
【HarmonyOS之旅】HarmonyOS开发基础知识(一)
目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…...
【排序算法】——插入排序
目录 前言 简介 基本思想 1.直接插入排序 2.希尔排序 代码实现 1.直接插入排序 2.希尔排序 总结 1.时空复杂度 2.稳定性 尾声 前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列&…...
Vue todoList小项目记录
最初代码 简单搭一个vue2的小项目 App.vue <template><div id"app"><!-- 容器 --><div class"todo-container"><div class"todo-wrap"><!-- 头部 --><MyHeader :addTodo"addTodo"></…...
SQL题目笔记
一、根据需求创建表(设计合理的数据类型、长度)...
电脑开机提示error loading operating system怎么修复?
前一天电脑还能正常运行,但今天启动时却显示“Error loading operating system”(加载操作系统错误)。我已经仔细检查了硬盘、接线、内存、CPU和电源,确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用,说明不是硬…...
Nginx 在不同操作系统下的安装指南
Nginx 在不同操作系统下的安装指南 一、Linux 系统下 Nginx 的安装 (一)基于 Ubuntu 系统 更新软件包列表 打开终端,首先执行sudo apt-get update命令。这一步是为了确保系统的软件包列表是最新的,能够获取到最新版本的 Nginx 及…...
景联文科技入选中国信通院发布的“人工智能数据标注产业图谱”
近日,由中国信息通信研究院、中国人工智能产业发展联盟牵头,联合中国电信集团、沈阳市数据局、保定高新区等70多家单位编制完成并发布《人工智能数据标注产业图谱》。景联文科技作为人工智能产业关键环节的代表企业,入选图谱中技术服务板块。…...
Nginx - 负载均衡及其配置(Balance)
一、概述 定义:在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载目标:最佳化资源使用、最大化吞吐率、最小化响应时间、避免过载功能:使用多台服务器提供单一服务(服务器农场&am…...
MySQL存储引擎-存储结构
Innodb存储结构 Buffer Pool(缓冲池):BP以Page页为单位,页默认大小16K,BP的底层采用链表数据结构管理Page。在InnoDB访问表记录和索引时会在Page页中缓存,以后使用可以减少磁盘IO操作,提升效率。 ○ Page根据状态可以分…...
数据资产入表 解锁智慧城市新潜力
在21世纪的科技浪潮中,智慧城市以信息技术为核心,以数据为血液,通过智能化、精细化的管理,让城市变得更加智慧、更加宜居。而数据资产入表,正是这一变革中的关键一环,它不仅推动了科技的进步,更…...
按类别调整目标检测标注框的写入顺序以优化人工审核效率
引言 在目标检测数据标注审核过程中,我们常常会遇到以下情况:某些小目标的检测框嵌套在大目标检测框内,而在模型进行预标注后,这些小目标的框可能被写入到了大目标框的下层。在人工审核阶段,标注审核人员需要手动移动…...
深入理解YOLO系列目标检测头的设定方式
目录 YOLOv1的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 YOLOv2的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 YOLOv3的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 总结:YOLO 系列检测头的结构演变 YOLOv1的检测头结构 1. 网络…...
智慧农业物联网解决方案:道品科技水肥一体化
在当今科技飞速发展的时代,农业也迎来了一场深刻的变革。智慧农业物联网解决方案中的水肥一体化技术,正逐渐成为现代农业发展的重要助推器。它不仅提高了农业生产效率,还实现了精准施肥和灌溉,为农业可持续发展带来了新的机遇。 …...
单片机上电后程序不运行怎么排查问题?
1.电源检查。使用电压表测量单片机的电源电压是否正常,确保电压在规定的范围内,如常见的5V。 2.复位检查。检查复位引脚的电压是否正常,在单片机接通电源时,复位引脚通常会有一个高电平,按下复位按钮时,复位…...
OceanBase 数据库分布式与集中式 能力
OceanBase分布式数据库与集中式数据库的差异 分布式数据库能解决金融行业最有挑战的高并发低延迟的核心交易系统的稳定性、扩展性、高性能问题。OB之所以一直强调分布式是说它具备很强的数据处理能力,当然从OB4.0开始也支持集中式了。 在实际业务场景中20%是分布式…...
C#多线程
C#中的多线程编程是开发高效并发应用程序的关键技术之一,它允许程序同时执行多个任务,从而提升应用程序的响应速度和性能。为了更好地理解C#中的多线程使用和定义,我们可以从以下几个方面来探讨:线程的基本概念、创建线程的方法、…...
Apache HTTP 服务器深度性能优化
引言 在前几篇文章中,我们讨论了基础和高级性能优化策略。现在,我们将深入探讨一些具体的优化实践,帮助您实现更精细的控制,并确保Apache服务器在各种复杂环境中都能保持最佳性能。 1. 细粒度的Apache配置调整 1.1 MPM参数微调…...
芯片级IO (Pad) Ring IP Checklist
SoC top顶层数字后端实现都会涉及到IO Ring (PAD Ring)的设计。这里面包括VDD IO,VDDIO IO, Signal IO, Corner IO,Filler IO,IO power cut cell等等。 数字后端零基础入门系列 | Innovus零基础LAB学习Day2 数字IC后端实现TOP F…...
无界wujie网址
文档网址:微前端是什么 | 无界 demo:https://wujie-micro.github.io/demo-main-vue/react17...
vulnhub靶场【DriftingBlues】之6
前言 靶机:DriftingBlues-6,IP地址192.168.1.63,因为重装靶机后期为192.168.1.64 攻击:kali,IP地址192.168.1.16 都采用虚拟机,网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1…...
心情追忆- Nginx + OpenResty 构建高可用网关
之前,我独自一人开发了一个名为“心情追忆”的小程序,旨在帮助用户记录日常的心情变化及重要时刻。我从项目的构思、设计、前端(小程序)开发、后端搭建到最终部署。经过一个月的努力,通过群聊分享等方式,用…...
太速科技-527-基于3U VPX XCZU15EG+TMS320C6678的信号处理板
基于3U VPX XCZU15EGTMS320C6678的信号处理板 一、板卡概述 本板卡系我司自主研发的基于3U VPX风冷、导冷架构的信号处理板,适用于高速图像处理等。芯片采用工业级设计。 板卡采用标准3U VPX架构,板上集成一片Xilinx公司ZynqUltraScale系列F…...
Vue3源码笔记阅读1——Ref响应式原理
本专栏主要用于记录自己的阅读源码的过程,希望能够加深自己学习印象,也欢迎读者可以帮忙完善。接下来每一篇都会从定义、运用两个层面来进行解析 定义 运用 例子:模板中访问ref(1) <template><div>{{str}}</div> </template> <script> impo…...
多音轨视频使用FFmpeg删除不要音轨方法
近期给孩子找宫崎骏动画,但是有很多是多音轨视频但是默认的都是日语,电视上看没办法所以只能下载后删除音轨文件只保留中文。 方法分两步,先安装FFmpeg在转文件即可。 第一步FFmpeg安装 FFmpeg是一个开源项目,包含了处理视频的…...
AtomGit 开源生态应用开发赛报名开始啦
目录 1、赛项背景2、赛项信息3、报名链接4、赛题一:开发者原创声明(DCO)应用开发赛题要求目标核心功能 5、赛题二:基于 OpenHarmony 的开源社区应用开发简介赛题要求 6、参赛作品提交初赛阶段决赛阶段 7、参赛作品提交方式 1、赛项…...
使用 NVIDIA DALI 计算视频的光流
引言 光流(Optical Flow)是计算机视觉中的一种技术,主要用于估计视频中连续帧之间的运动信息。它通过分析像素在时间维度上的移动来预测运动场,广泛应用于目标跟踪、动作识别、视频稳定等领域。 光流的计算传统上依赖 CPU 或 GP…...
C语言学习day23:WriteProcessMemory函数/游戏内存数据修改工具开发
简言: 上一章我们说了获取应用进程的某数据(data),这一章我们就说说修改内存地址的数据。想要修改内存,那么就需要我们另一个WinAPI函数:WriteProcessMemory()函数。 WriteProcessMemory()函数 函数原型…...
利用 html_table 函数轻松获取网页中的表格数据
背景/引言 在数据爬取的过程中,网页表格数据往往是研究人员和开发者的重要目标之一。无论是统计分析、商业调研还是信息整理,表格数据的结构化特性都使其具有较高的利用价值。然而,如何快速、准确地从网页中提取表格数据始终是爬虫技术的一个…...
Postman接口测试:全局变量/接口关联/加密/解密
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 全局变量和环境变量 全局变量:在postman全局生效的变量,全局唯一 环境变量:在特定环境下生效的变量,本环境内唯一 …...
手机银行模拟器,一款高仿真银行app的模拟器,可以修改姓名 卡号 余额 做转账记录 做流水
📱手机银行模拟器让你自由定制你的金融生活。无论是流水账单、金额,还是个人信息,一切都可以按照你的意愿来模拟修改,让你体验模拟器带来的快乐! 链接:https://pan.quark.cn/s/c2f614f3447f 提取码&#…...
HT7183:16V, 4.5A的DC-DC升压转换器,常用在数码相机里
HT7183描述: HT7183是一款高功率异步升压转换器,集成120mΩ功率开关管,为便携式系统提供高效的小尺寸解决方案。具有2.6V至5.5V输入电压范围,可为各类不同供电的应用提供支持。该器件具备3A开关电流能力,并且能够提供高…...
Cobalt Strike 4.8 用户指南-第十四节 Aggressor 脚本
14.1、什么是Aggressor脚本 Aggressor Script 是Cobalt Strike 3.0版及更高版本中内置的脚本语言。Aggressor 脚本允许你修改和扩展 Cobalt Strike 客户端。 历史 Aggressor Script 是 Armitage 中开源脚本引擎Cortana的精神继承者。Cortana 是通过与 DARPA 的网络快速跟踪计…...