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

news2024/10/5 19:11:40

在这里插入图片描述

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

  • 全文采用图文形式讲解
  • 学会使用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}

# 使用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

请添加图片描述
在这里插入图片描述

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

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

相关文章

Netty实战(十一)

预置的ChannelHandler和编解码器(一)HTTP和SSL/TLS的添加和使用 一、SSL和TLS添加二、基于Netty的HTTP程序2.1 HTTP解码器、编码器和编解码器2.2 聚合HTTP消息2.3 HTTP压缩 一、SSL和TLS添加 作为一个通讯框架,通讯数据的安全性也是不可或缺的…

LVS+KeepAlived集群

LVSKeepAlived集群 一.KeepAlived的原理 1.1基于什么协议 KeepAlived基于VRRP热备份协议# VRRP协议号112# VRRP组播地址224.0.0.18# VRRP通告报文的TTL值必须是2551.2如何选举Master 1)初始化时根据state判断master和backup。 2)最终根据优先级决定m…

【小沐学Python】Python实现在线电子书(Sphinx + readthedocs + github + Markdown)

文章目录 1、简介2、安装3、创建测试工程4、项目文件结构5、编译为本地文件6、编译为http服务7、更改样式主题8、支持markdown9、修改文档显示结构10、项目托管到github11、部署到ReadtheDocs结语 1、简介 Sphinx 是一个 文档生成器 ,您也可以把它看成一种工具&…

Win10开启混合现实模拟器

最近要做一个类似工业元宇宙的项目,准备先在Win10上先进行模拟,而Win10已经提供了混合现实模拟器,可以在没有头显的情况下进行模拟。本文讲解如何开启这个模拟器。 微软官方给了一个链接讲述如何开启混合现实模拟器,可以点击这里…

嘀嗒陪诊小程序v1.0.8+小程序前端

嘀嗒陪诊小程序功能相对简单,后台也简捷,如果只是做个陪诊服务的小程序也基本能满足了,整体测试了下海参崴发现BUG,小程序端也能正常为使用,唯一用户授权接口是老的。 应用背景:人口老龄化少子化&#xff…

【数据结构】--单链表力扣面试题⑦环形链表

注:本篇文章不含环形链表的数学推理证明,只提供图解等思路 环形链表是一个非常经典的问题 题述:给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续追踪 next 指针再次到达,则链表中…

代码随想录算法训练营第五十三天|1143.最长公共子序列|1035.不相交的线|53. 最大子序和

LeetCode1143.最长公共子序列 动态规划五部曲: 1,确定dp数组(dp table)以及下标的含义:dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]。为什么要定…

【无功优化】“碳中和”目标下电气互联系统有功-无功协同优化模型(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

从零玩转系列之微信支付实战基础框架搭建

一、前言 halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端) 在此之前已经更新了微信支付开篇、微信支付安…

【Matlab代码实现】电动过滤器:LPF和HPF、模拟调制:调幅和调频、WiFi、蓝牙和蜂窝网络的容量分析.....

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

第五章 二次型

引言 题型总结中推荐例题有蓝皮书的题型较为重要,只有吉米多维奇的题型次之。码字不易,如果这篇文章对您有帮助的话,希望您能点赞、评论、收藏,投币、转发、关注。您的鼓励就是我前进的动力! 知识点思维导图 补充&…

十一、进程间通信——管道

目录 零、前置知识 一、什么是进程间通信 (一)含义 (二)发展 (三)类型 1.管道 2.System V IPC 3.POSIX IPC 二、为什么要有进程间通信 三、怎么进行进程间通信 (一)什么是…

PoseiSwap的趋势性如何体现?

DEX 代表了一种先进的意识形态,相对于 CEX 其更强调无许可、去中心化以及公开透明。然而随着 DeFi 赛道逐渐从 2021 年年底的高峰逐渐转向低谷,DEX 整体的交易量、TVL等数据指标也开始呈现下滑的趋势,DEX 正在面临发展的新瓶颈期。 在这样的背…

时间序列预测的20个基本概念总结

1、时间序列 时间序列是一组按时间顺序排列的数据点 比如: 每小时的气压每年的医院急诊按分钟计算的股票价格 2、时间序列的组成部分 时间序列数据有三个主要组成部分。 趋势季节性残差或白噪声 3、趋势 在时间序列中记录的长期缓慢变化/方向。 4、季节性 …

51、基于51单片机洗衣机控制系统(带水位)系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+任务书+流程图+元器件清单等)

摘 要 随着数字技术的快速发展,数字技术被广泛应用于智能控制的领域中。单片机以体积小、功能全、价格低廉、开发方便的优势得到了许多电子系统设计者的青睐。它适合于实时控制,可构成工业控制器、智能仪表、智能接口、智能武器装置以及通用测控单元等。…

【最优PID 整定】PID性能指标(ISE,IAE,ITSE和ITAE)优化、稳定性裕量(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ChatGPT1论文解读《Improving Language Understanding by Generative Pre-Training》(2018)

论文总结 以下是我阅读完整篇论文做的个人总结,基本包含了ChatGPT1设计的完整框架思路,可以仅看【论文总结】章节。 在GPT1实现的核心架构中,包含两个阶段。 第一阶段 在第一阶段基于一个包含7000本书籍内容的海量未标注文本数据集进行无…

PLC模拟量超限报警功能块

模拟量偏差报警功能块请参看下面文章: 模拟量偏差报警功能块(SCL代码)_RXXW_Dor的博客-CSDN博客工业模拟量采集的相关基础知识,可以查看专栏的系列文章,这里不再赘述,常用链接如下:PLC模拟量采集算法数学基础(线性传感器)_plc傳感器數據轉化_RXXW_Dor的博客-CSDN博客。…

GOOGLE | COT(chain of thought)开山之作,利用思维链提升复杂问题推理能力

一、概述 title:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 论文地址:https://arxiv.org/abs/2201.11903 auto COT代码【COT升级版本】:GitHub - amazon-science/auto-cot: Official implementation for &qu…

【LeetCode】HOT 100(8)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…