持续集成交付CICD:Jenkins流水线操作Harbor仓库

目录

一、实验

1.Jenkins主节点安装Docker

2.Jenkins主节点安装Harbor

3.Jenkins从节点安装Docker

4.Jenkins流水线操作Harbor仓库

二、问题

1.Jenkins主节点登录Harbor仓库报错

2.Jenkins流水线里从节点操作docker报错

3.Jenkins流水线里从节点远程登录Harbor仓库报错


一、实验

1.Jenkins主节点安装Docker

(1)YUM安装Docker

目前 Docker 只能支持 64 位系统。

#关闭防火墙和selinuxsystemctl stop firewalld.servicesetenforce 0​#安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2 --------------------------------------------------------------------------------------------#yum-utils:提供了 yum-config-manager 工具。#device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。#device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。--------------------------------------------------------------------------------------------​#设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ​#安装 Docker-CE并设置为开机自动启动yum install -y docker-ce      #docker-ce-cli、containerd.io 会作为依赖包被安装​systemctl start docker.servicesystemctl enable docker.service 

(2) 查看Docker信息


#查看 docker 版本信息docker version#注意:Yum安装默认安装最新版本,目前最新版本是24.0.7版本。​#docker信息查看docker info

(3) 镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置​mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"]   #写入自己的加速器地址}EOF​systemctl daemon-reload      #重新加载systemctl restart docker     #重启docker​docker info   #查看是否启用了镜像加速

2.Jenkins主节点安装Harbor

(1)安装

#上传 docker-compose 和 harbor-offline-installer-v1.2.2.tgz 到 /opt 目录中
cd /opt
chmod +x docker-compose
mv docker-compose /usr/local/bin/#部署 Harbor 服务
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/vim +5 /usr/local/harbor/harbor.cfg
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.204.15cd /usr/local/harbor/
./install.sh

(2)登录harbor,创建项目

#在 Harbor 中创建一个新项目
(1)浏览器访问:http://192.168.204.15 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345
(2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮
(3)填写项目名称为“devops03”,点击“确定”按钮,创建新项目

(3) 登录Harbor仓库上传镜像

# docker login -u admin -p Harbor12345 http://192.168.204.15# docker pull maven# docker tag maven:latest 192.168.204.15/devops03/devops03-maven-service:1.9.1# docker push 192.168.204.15/devops03/devops03-maven-service:1.9.1

3.Jenkins从节点安装Docker

(1)YUM安装Docker

目前 Docker 只能支持 64 位系统。

#关闭防火墙和selinuxsystemctl stop firewalld.servicesetenforce 0​#安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2 --------------------------------------------------------------------------------------------#yum-utils:提供了 yum-config-manager 工具。#device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。#device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。--------------------------------------------------------------------------------------------​#设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ​#安装 Docker-CE并设置为开机自动启动yum install -y docker-ce      #docker-ce-cli、containerd.io 会作为依赖包被安装​systemctl start docker.servicesystemctl enable docker.service 

 (2) 查看Docker信息


#查看 docker 版本信息docker version#注意:Yum安装默认安装最新版本,目前最新版本是24.0.7版本。

(3) 镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置​mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"]  ,"insecure-registries": ["http://192.168.204.15"]}EOF​systemctl daemon-reload      #重新加载systemctl restart docker     #重启docker​docker info   #查看是否启用了镜像加速

指定私有镜像仓库地址


4.Jenkins流水线操作Harbor仓库

(1)GitLab的maven项目添加Dockerfile

(2) 修改Jenkins流水线代码,在回放中运行

@Library("mylib@master") _
import org.devops.*def checkout = new Checkout()
def build = new Build()
def unittest = new UnitTest()
def sonar = new Sonar()pipeline {agent { label "build"}options {skipDefaultCheckout true}stages{stage("Checkout"){steps{script {println("GetCode")checkout.GetCode("${env.srcUrl}","${env.branchName}")}}}stage("build"){steps{script{println("Build")sh "mvn clean package"}}}stage("UnitTest"){steps{script{println("Test")unittest.CodeTest("${env.buildTool}")}}}// stage("Upload"){//     steps{//         script{//             NexusUploadByPlugin("${env.artifactId}",//                     "target/maven-test-1.0-SNAPSHOT.jar",//                                 "${env.type}",//                                 "${env.groupId}",//                                 "${env.version}")//         }//     }// }stage("DockerBuild"){steps{script{sh """#登录镜像仓库docker login -u admin -p Harbor12345 192.168.204.15#构建镜像docker build -t 192.168.204.15/${JOB_NAME}:${env.branchName} .#上传镜像docker push  192.168.204.15/${JOB_NAME}:${env.branchName}#删除镜像sleep 2docker rmi 192.168.204.15/${JOB_NAME}:${env.branchName}"""}}}}
}//NexusUploadByPlugin('devops-test','target/maven-test-1.0-SNAPSHOT.jar','jar','com.jenkins','1.1.2')def NexusUploadByPlugin(artifactId,file,type,groupId,version ){nexusArtifactUploader artifacts: [[artifactId: artifactId,classifier: '',file: file,type: type]],credentialsId: '318df1ad-083b-4158-ac88-2f584446563e',groupId: groupId,nexusUrl: '192.168.204.13:8081',nexusVersion: 'nexus3',protocol: 'http',repository: 'mymavenrepo',version: version
}

(3)Blue Ocean 查看

(4)查看日志

(5)查看Harbor

二、问题

1.Jenkins主节点登录Harbor仓库报错

(1)报错

(2)原因分析

为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现错误。

(3)解决方法

 
解决方法:
1)在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。 
vim /usr/lib/systemd/system/docker.service --13行--修改为
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.204.15 --containerd=/run/containerd/containerd.sock2)或者修改为
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.204.153)重新加载system并重启docker
systemctl daemon-reload
systemctl restart docker.service

成功:

2.Jenkins流水线里从节点操作docker报错

(1)报错

[Pipeline] sh
+ docker login -u admin -p Harbor12345 192.168.204.15
/opt/jenkins03/workspace/devops03/devops03-maven-service@tmp/durable-8e4804f6/script.sh:行3: docker: 未找到命令

(2)原因分析

Jenkins从节点未安装docker

(3)解决方法

从节点安装docker

3.Jenkins流水线里从节点远程登录Harbor仓库报错

(1)报错

操作都是在 Harbor 服务器本地操作没有问题。如果其他客户端登录到 Harbor,就会报如下错误。

[Pipeline] sh
+ docker login -u admin -p Harbor12345 192.168.204.15
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.204.15/v2/": dial tcp 192.168.204.15:443: connect: connection refused

(2)原因分析

出现这问题的原因为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

(3)解决方法

方法一解决办法是:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。

vim /usr/lib/systemd/system/docker.service
--13行--修改
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.204.15 --containerd=/run/containerd/containerd.sock
或
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.204.15

重启 Docker,再次登录

systemctl daemon-reload
systemctl restart docker

方法二:

创建daemon.json文件,添加配置。

vim /etc/docker/daemon.json {"registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"]  ,"insecure-registries": ["http://192.168.204.15"]}

重启 Docker,再次登录

systemctl daemon-reload
systemctl restart docker

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

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

相关文章

thinkphp 使用array_reduce 处理返回的数据格式

我想要的效果&#xff1a; 不使用array_reduce 的效果 &#xff1a; 代码&#xff1a; public function teamList($userId,$good_id){$nowbuyers $this->order->where(good_id,$good_id)->count();$data GroupTotalOrder::alias(t_order)->where(merchant_Id,$u…

Jmeter性能测试:ForEach控制器的用法解析(含视频讲解)

引言 最近我在进行JMeter性能测试时遇到了一些问题&#xff0c;特别是在使用ForEach控制器时感到有点棘手。 但是经过不断地摸索和实践&#xff0c;终于成功地掌握了这个神奇的工具&#xff0c;提高了我的测试效率。因此&#xff0c;今天我想和大家分享我的经验&#xff0c;让…

ssh配置学习,ssh连接不上解决方法

ssh 配置学习 文章目录 ssh 配置学习一、基本概念二、ssh常用配置三、ssh常用命令1、指定端口号连接远程主机2、传输文件到远程主机3、sftp 命令用于和远程主机进行文件传输 四、关于ssh现场问题的处理总结 一、基本概念 ssh全称为Secure Shell 简称&#xff0c;是一种加密传输…

产品入门第二讲:Axure产品元件库的使用

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是…

聊聊AsyncHttpClient的RequestFilter

序 本文主要研究一下AsyncHttpClient的RequestFilter RequestFilter org/asynchttpclient/filter/RequestFilter.java /*** A Filter interface that gets invoked before making an actual request.*/ public interface RequestFilter {/*** An {link org.asynchttpclient…

HTML 字体样式

目录 使用属性样式使用 CSS 样式表HTML 中常用的字体样式属性总结 HTML 是一种用于创建网页的标记语言&#xff0c;开发者可以通过 HTML 编写网页结构和内容。在 HTML 中&#xff0c;字体样式是非常重要的&#xff0c;可以通过设置字体大小、字体颜色、字体样式等方式来让网页内…

力扣322. 零钱兑换

动态规划 思路&#xff1a; 假设 dp[i] 表示金额 i 的零钱兑换最小数量&#xff1b;它可以由 dp[i - C(j)] 1&#xff0c;即由币值C(j) 与 dp[i - C(j)] 组成&#xff0c;要使得数量最少&#xff0c;则 dp[i - C(j)] 最小&#xff1b;边界条件 dp[0] 0&#xff1b;自下而上分…

Android View闪烁动画AlphaAnimation,Kotlin

Android View闪烁动画AlphaAnimation&#xff0c;Kotlin private fun flickerAnimation(view: View?) {val animation: Animation AlphaAnimation(1f, 0f) //不透明到透明。animation.duration 500 // 1次过程时长。animation.interpolator LinearInterpolator() // 线性速…

Axure电商产品移动端交互原型,移动端高保真Axure原型图(RP源文件手机app界面UI设计模板)

本作品是一套 Axure8 高保真移动端电商APP产品原型模板&#xff0c;包含了用户中心、会员成长、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 本模板由一百三十多个界面上千个交互元件及事件组…

android项目实战之编辑器图片上传预览

现状分析 项目的需求用到编辑器&#xff0c;编辑器中又可能用到图片上传功能。 实现方案 1. 增加依赖库&#xff0c;可以参考前面的几篇文章&#xff0c;都有描述。 2. 核心代码实现 PictureSelector.create(GoodItemContentFragment.this) .openGallery(SelectMimeType.…

如何在上架App之前设置证书并上传应用

App上架教程 在上架App之前想要进行真机测试的同学&#xff0c;请查看《iOS- 最全的真机测试教程》&#xff0c;里面包含如何让多台电脑同时上架App和真机调试。 P12文件的使用详解 注意&#xff1a; 同样可以在Build Setting 的sign中设置证书&#xff0c;但是有点麻烦&…

Python查找列表中不重复的数字

Python每日一练 文章目录 Python每日一练问题&#xff1a;函数输入函数输出 代码实现示例输入&#xff1a;示例输出&#xff1a; 总结 问题&#xff1a; 编写一个程序来查找列表中不重复的数字。 定义函数find_unique()&#xff0c;它接受一个列表作为参数。 在函数内部&…

Log4j.xml配置说明

介绍 Log4j 2 是一款广泛使用的 Java 日志框架&#xff0c;它支持多种日志级别、异步日志、过滤器等功能&#xff0c;并且具有高性能和可扩展性。以下是 Log4j 2 的详细配置说明&#xff1a; 配置文件名称和存放位置&#xff1a;Log4j 2 的配置文件名可以是任意有效的文件名&a…

微信小程序:上传图片到别的域名文件下

效果 wxml <!-- 上传照片 --> <view class"addbtn"><view classpic name"fault_photo" wx:for"{{imgs}}" wx:for-item"item" wx:key"*this"><image classweui-uploader_img src"{{item}}"…

Kafka-客户端使用

理解Kafka正确使用方式 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&#xff0c;是企业开发过程中最常用的客户端API。 LowLevel API则需要客户端自己管理Kafka的运行细节&#xf…

使用spring-boot-devtools时可能会引起缓存实体转换异常

多次访问API接口时&#xff0c;会报底层实体转换异常排查&#xff0c; 排查自己写的代码&#xff0c;及使用的框架&#xff0c; 最终发现是引用了 热部署插件引起&#xff0c;关闭了插件无影响&#xff1b; 使用spring-boot-devtools时&#xff0c;需要注意这个问题了。 <…

得帆云为玉柴打造CRM售后服务管理系统,实现服务全过程管理|基于得帆云低代码的CRM案例系列

广西玉柴机器股份有限公司 广西玉柴机器股份有限公司始建于1992年&#xff0c;是国内行业首家赴境外上市的中外合资企业&#xff0c;产品远销亚欧美非等180多个国家和地区。公司总部设在广西玉林市&#xff0c;下辖11家子公司&#xff0c;生产基地布局广西、江苏、安徽、山东等…

交友系统:打造独具魅力的社交平台!APP小程序H5三端源码交付,支持二开!

随着社交媒体的兴起&#xff0c;交友系统成为了现代社会不可或缺的一部分。人们希望通过网络结识新朋友&#xff0c;拓展社交圈&#xff0c;寻找志同道合的伙伴&#xff0c;甚至找到自己的爱情。本文将为您介绍交友系统的定义、功能以及如何打造一个独具魅力的社交平台。 一个成…

类加载机制与反射

类加载机制与反射 一.虚拟机类加载机制 1.虚拟机类加载机制概述 虚拟机把描述类的数据从class文件加载到内存 将类的数据进行校验,转换解析和初始化 形成可以被java虚拟机直接使用的java类型 2.类加载过程 当程序要使用某个类时,如果该类还未被加载到内存中,系统会通过加…

Git 常用命令速查

一、 Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释git remote add origin git192.168.1.119:ndshowgit push origin mas…