Jenkins搭建并与Harbor集成上传镜像

devtools/2024/12/23 17:16:31/

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仓库进行验证:

上传成功。

本篇文章至此结束,各位债见。


http://www.ppmy.cn/devtools/144747.html

相关文章

四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能

经过前面3节完成金融问答机器人基本流程,这章将使用Gradio构建web应用,同时加入memory令提示模板带有记忆的,使用LCEL构建问答链。 加载向量数据库 from langchain.vectorstores import Chroma from langchain_huggingface import HuggingF…

OpenSSL 心脏滴血漏洞(CVE-2014-0160)

OpenSSL 心脏滴血漏洞(CVE-2014-0160) Openssl简介: 该漏洞在国内被译为"OpenSSL心脏出血漏洞”,因其破坏性之大和影响的范围之广,堪称网络安全里程碑事件。 OpenSSL心脏滴血漏洞的大概原理是OpenSSL在2年前引入了心跳(hearbea0机制来维特TS链接的…

【老白学 Java】HashSet 应用 - 卡拉 OK(五)

HashSet 应用 - 卡拉 OK(五) 文章来源:《Head First Java》修炼感悟。 通过前几篇文章,老白也了解了基本排序方法,接下来要讨论的是数据重复问题。 ArrayList 不会阻止添加重复数据,那是 Set 集合类的职责…

React工具和库面试题目(二)

1. 使用 Webpack 打包 React 项目时,如何减小生成的 JavaScript 文件大小? 为了减小生成的 JavaScript 文件大小,可以采取以下几种策略: 1.1 代码分割(Code Splitting) Webpack 支持通过 动态导入 和 React.lazy 等…

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍03-SQL注入联合查询注入(Union-Based SQL Injection)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Web Dev Tools Android 项目常见问题解决方案

Web Dev Tools Android 项目常见问题解决方案 web-dev-tools-android Sample Android Application - MVVM, Clean Architecture, Modularization, Repository Pattern [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/web-dev-tools-android 项目基础介绍 Web…

C05S09-Keepalive服务架设

一、Keepalive 1. Keepalive概述 代理服务器和调度器都是单点模式,Keepalive是一种实现LVS调度器实现高可用集群的架设,以提高节点的冗余和容错。 Keepalive是一种基于VRRP协议实现的调度器高可用方案,为了实现LVS的集群而设计开发&#x…

计算机基础复习12.22

Redis实现分布式锁 set lock_key unique_value nx px 10000 lock_key: key键 unique_value:是唯一的标识 nx: 表示lock_key不存在,才对lock_key进行设置 px: 设置过期时间 Linux的排查命令 top 实时监控进程 显示CPU 内存 负载 交换区 netstat:查看网络连接…