『DevOps最佳实践』使用Jenkins和Harbor进行持续集成和交付的解决方案

请添加图片描述

请添加图片描述
📣读完这篇文章里你能收获到

  • 全文采用图文形式讲解
  • 学会使用Harbor配置项目
  • 学会在Jenkins中配置Harbor推送权限
  • 使用Jenkins和Harbor进行持续集成的实践
  • 感谢点赞+收藏,避免下次找不到~

请添加图片描述

文章目录

  • 一、准备工作
    • 1. 环境准备
    • 2. 修改Docker配置文件
    • 3. Docker登陆Harbor
    • 4. Harbor项目准备
  • 二、配置 Jenkins 任务
    • 1. 构建一个自由风格的软件项目
    • 2. 选择 Git 并填写你的代码仓库 URL
    • 3. 参数化构建过程
    • 4. 构建触发器
  • 三、保存并启动 Jenkins 任务
    • 1. 参数化构建任务
    • 2. 查看Harbor项目
  • 四、持续集成解决方案
    • 1. 基于 Webhook 的方案
  • 五、异常处理
    • 1. Jenkins中Docker Push时没权限
      • 1.1 现象及原因
      • 1.2 解决方式

请添加图片描述

在现代软件开发中,自动化部署是提高效率和可靠性的关键。本文将带你深入探索如何使用Jenkins和Harbor实现.NET Core项目的自动化部署。我们将一步步指导如何配置Jenkins、Harbor和Docker环境,以及使用最佳实践来简化部署流程。


一、准备工作

1. 环境准备

  • Docker环境
  • DockerFile文件(需要提前写好DockerFile文件)

2. 修改Docker配置文件

$ vi /etc/docker/daemon.json 

{
  "registry-mirrors": ["https://k728i8z5.mirror.aliyuncs.com"],
  "insecure-registries":["harborip:port"]//添加harbor地址
}
  • 重新启动Docker
systemctl daemon-reload
systemctl restart docker

3. Docker登陆Harbor

docker login harborip:port

# 退出登陆则为:docker logout harborip:port

image.png

#2. 把.docker复制到/var/lib/jenkins目录下
cp -r /root/.docker/ /var/lib/jenkins/

#3. 修改文件夹权限
cd /var/lib/jenkins/
chown -R jenkins.jenkins .docker

4. Harbor项目准备

  • 提前新建一个devops项目

image.png

请添加图片描述

二、配置 Jenkins 任务

1. 构建一个自由风格的软件项目

image.png

2. 选择 Git 并填写你的代码仓库 URL

  • 在 Jenkins 任务配置页面的 “源码管理” 中填写

image.png

3. 参数化构建过程

  1. 勾选参数化构建过程
  2. 添加文本参数

image.png

  1. 分别添加pName、pVersionPrefix、port、IMG

image.png

4. 构建触发器

  1. 在 “构建” 部分,点击 “增加构建步骤” 并选择 “执行Shell”
  2. 在命令框中输入以下命令:
export pVersion=${pVersionPrefix}_${GIT_COMMIT:0:8}_`date +%Y%m%d%H%M`
export container=${IMG}${pName}:${pVersion}

# 到Dockerfile文件所在目录
# cd src

# 使用Docker构建镜像
docker build -t ${container} .

# 推送至Harbor仓库
docker push ${container}

# 检查容器是否存在
if docker inspect --type=container ${pName} >/dev/null 2>&1; then
  # 停止容器
  docker stop ${pName}
  # 删除容器
  docker rm ${pName}
fi

# 运行新的容器
docker run -d -p ${port}:80 --name ${pName} ${container}

请添加图片描述

三、保存并启动 Jenkins 任务

1. 参数化构建任务

  1. 保存 Jenkins 任务配置并返回主页
  2. 点击任务名称进入任务详情页面
  3. 点击 “立即构建"或者"通过参数构建”

Jenkins 将开始监测代码仓库并自动构建和部署 .NET Core 项目

image.png

2. 查看Harbor项目

image.png

请添加图片描述

四、持续集成解决方案

1. 基于 Webhook 的方案

  • 在 Jenkins 项目中实现自动构建,持续集成,点击查看文章

请添加图片描述

五、异常处理

1. Jenkins中Docker Push时没权限

1.1 现象及原因

这是因为jenkins在推送镜像的时候使用的是jenkins的伪用户,那么既然要推送就要登录,那么首先在当前用户生成config.json

unauthorized: unauthorized to access repository: ocp/eureka-server, action: push: unauthorized to access repository: ocp/eureka-server, action: push

1.2 解决方式

#1. 当前用户使用docker login生成config.json
docker login http://ip:port


image.png

#2. 把.docker复制到/var/lib/jenkins目录下
cp -r /root/.docker/ /var/lib/jenkins/

#3. 修改文件夹权限
cd /var/lib/jenkins/
chown -R jenkins.jenkins .docker

请添加图片描述

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SpringCloud】三、Nacos服务注册+配置管理+集群搭建

文章目录 一、认识Nacos1、安装2、服务注册和发现3、服务分级存储模型4、负载均衡策略--NacosRule5、服务实例的权重设置5、环境隔离namespace6、Eureka和Nacos的区别 二、Nacos配置管理1、统一配置管理2、微服务配置拉取3、配置热更新4、多环境配置共享 三、Nacos集群搭建1、初…

架构-嵌入式模块

章节架构 约三分,主要为选择题 #mermaid-svg-z6RGCDSEQT5AhE1p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-icon{fill:#552222;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-text…

Apifox(1)比postman更优秀的接口自动化测试平台

Apifox介绍 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman Swagger Mock JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自…

利用腾讯云函数隐藏C2服务器

1、简介 腾讯云函数,可以为企业和开发者提供无服务器执行环境,无需购买和管理服务器,只需要在腾讯云上使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性 安全地运行代码。 C2服务器所有流量通过腾…

AB32VG1:SDK_AB53XX_V061(4)蓝牙音频测试笔记

文章目录 1. 淘宝上两种开发板,有一种的蓝牙功能不正常2. 蓝牙音频测试2.1 《config.h》和《Boombox.setting》两个配置以哪个为准2.2 codeblocks更换链接库2.2.1 这样进入build options是错的2.2.2 build options正确打开方式 2.3.编译工程,下载运行2.3…

手撕学生管理系统超详解——【c++】

题目要求:设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。 实现按班级输出学生的成绩单;实现按学号和姓名进行查询,按平均成绩进行排序功能。 问题描述 该程序的目标是提供一个简单且易于使用…

Linux本地搭建GitLab服务器 - 内网穿透远程访问

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自cpolar极点云文章:Linux搭建GitLab私有仓库,并内网穿透实…

为什么我们需要API接口?API接口的核心又是什么?

API(Application Programming Interface)是一种连接不同软件之间的标准化的接口,可以让不同软件间进行数据交互和通信。API接口的作用很多,以下是几个主要的原因: 1.提高软件系统的灵活性和可扩展性。API接口可以将不…

Banana Pi BPI-R3 Mini:2.5GbE 嵌入式路由器板,MTK7986方案

香蕉派 BPI-R3 Mini Banana Pi BPI-R3 Mini 是一款功能强大的 SBC 路由器板,专为需要高速网络功能的个人和企业而设计。这款路由器是广受欢迎的 Banana Pi R3 路由器板的小兄弟,配备了先进的功能,旨在提供可靠的性能,是需要可靠网…

2.MATLAB篇——基本操作与矩阵输入

>> cos(((12345)^5)^0.5)ans -0.3623>> help sinsin - 参数的正弦,以弧度为单位此 MATLAB 函数 返回 X 的元素的正弦。sin 函数按元素处理数组。该函数同时接受实数和复数输入。 对于 X 的实数值,sin(X) 返回区间 [-1, 1] 内的实数值。 对于…

离散数学题目收集整理练习(期末过关进度50%)

✨博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 ✨博主的其他文章:点击…

flutter DevTools(1)

在VSCODE中调试 第一步: ① 切换到 vscode 的调试和运行模式, ② 配置好 .vscode 中的启动项 launch.json ③ 共有四种模式 [1] debug : 模式编译产物适合纯 Flutter 侧代码的开发、调试 [2] profile : 的用来做性能分析和测试 [3] release : 的用于打包发布 [4]…

【C++】C++11新特性重点:可变参数+lambda

C11新特性第二篇重点 文章目录 上一篇的补充一、可变参数模板二、lambda函数总结 前言 上一篇我们重点讲解了右值引用移动语义,关于移动构造和移动赋值还有一些需要补充的知识: 如果你没有自己实现移动构造函数,且没有实现析构函数 、拷贝构…

RabbitMq消息堆积问题及惰性队列

消息堆积问题 当生产者发送消息的速度超过了消费者处理的速度,就会导致队列的消息堆积,知道队列存储消息达到上限。最早接受的消息,可能就会成为死信,会被丢弃,这就是消息堆积问题。 解决消费对接问题 1.增加更多的消…

【数据库一】MySQL数据库初体验

MySQL数据库初体验 1.数据库基本概念1.1 数据Data1.2 表1.3 数据库1.4 数据库管理系统1.5 数据库系统 2.数据库的发展3.主流的数据库介绍3.1 SQL Server(微软公司产品)3.2 Oracle (甲骨文公司产品)3.3 DB2(IBM公司产品…

XSS—存储型xss

xss >跨站脚本攻击>前端代码注入>用户输入的数据会被当做前端代码执行。 原理:使用者提交的XSS代码被存储到服务器上的数据库里或页面或某个上传文件里,导致用户访问页面展示的内容时直接触发xss代码。 输入内容后直接在下方回显,回…

Linux UPS配置详解 (山特SANTAK TGBOX-850 )

目录 起因 安装NUT NUT简介 配置 ups配置 (nut-driver) nut-server配置 nut.conf upsd.conf upsd.users nut-client配置 upsmon.conf 设置自动启动 释疑 起因 配置了一台All in One主机,系统是装的PVE,一个linux的虚…

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】 文章目录 和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】一、前言二、数据读取和初步探索三、数据探索及可视化1、获取拥有最多充电站的 10 个国家2、一年中各月新开业数量…

微软wsl2 + ubantu + docker + 部署本地项目

windows 操作系统版本要达到要求 开启 wsl2 安装实用工具 Windows Terminal 和 Visual Studio Code 安装 Ubuntu 子系统 安装 Docker Desktop 并让 Docker Desktop 基于 wsl2 来运行 基础环境准备可以完全参照《搭建 Laravel Sail 开发环境 - Windows》来进行,我跟教…

微信小程序基础使用-请求数据并渲染

小程序基本使用-请求数据并渲染 小程序模板语法-数据绑定 在js中定义数据 Page({data: {isOpen: true,message: hello world!} })小程序的data是一个对象,不同于vue的data是一个函数 在模块中获取使用数据 小程序中使用 {{}} 实现数据与模板的绑定 内容绑定&a…