一、nexus 介绍

  1. Nexus 是一个强大的仓库管理工具,用于管理和分发 Maven、npm、Docker 等软件包。它提供了一个集中的存储库,用于存储和管理软件包,并提供了版本控制、访问控制、构建和部署等功能。

  2. Nexus 可以帮助开发团队提高软件包管理的效率和可靠性,减少软件包冲突和版本不一致的问题,并提供了一个安全、可靠的软件包分发渠道。

  3. Nexus 支持多种仓库类型,包括 Maven 仓库、npm 仓库、Docker 仓库等,并且可以与其他工具和系统集成,如 Jenkins、Ansible、Kubernetes 等,以实现自动化的构建、部署和管理。

  4. 总的来说,Nexus 是一个非常有用的工具,可以帮助开发团队更好地管理和分发软件包,提高软件开发的效率和质量。

二、 nexus 支持的仓库

仓库名介绍
apt用于存储和管理 Debian 软件包。
bowerWeb 前端包管理器,用于管理 Web 前端资源。
docker用于存储 Docker 镜像。
gitlfs用于存储 Git 大文件。
helm用于存储 Kubernetes Helm charts。
maven2Java 项目构建的仓库。
npmNode.js 软件包管理器。
nuget用于 .NET 平台的软件包管理。
pypiPython 软件包索引。
rR 语言的软件包仓库。
raw一般用于存储任意类型的文件。
rubygemsRuby 的软件包管理器。
yum用于存储 Yum 软件包管理器的仓库。

 三、Jenkins+Nexus的制品库部署

1.部署环境准备两台服务器

        jenkins:192.168.40.128

        nexus:192.168.40.129

        两台服务器均关闭防火墙和seinux

systemctl stop firewalld && setenforce 0

2.安装jenkins11

        运行jdk:

[root@jenkins ~]# ll
-r--------  1 root root   8296049 10月 31 11:30 apache-maven-3.8.8-bin.tar.gz
-r--------  1 root root 169440335 11月 22 19:52 jdk-11.0.19_linux-x64_bin.tar.gz
-r--------  1 root root  89542047 10月 19 00:13 jenkins-2.414.3.war
-r--------  1 root root 297294835 11月 29 06:11 plugins-2.414.3.tar.gz
[root@jenkins ~]# tar xf jdk-11.0.18_linux-x64_bin.tar.gz -C /opt
#处理环境变量
[root@jenkins ~]# vim /etc/profile.d/java.sh
TOMCAT_HOME=/usr/local/tomcat
JAVA_HOME=/usr/local/java
PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH
export TOMCAT_HOME JAVA_HOME PATH
[root@jenkins ~]# source /etc/profile.d/java.sh
[root@jenkins ~]# yum -y install fontconfig
[root@jenkins ~]# mv .jenkins/plugins/ plugins.bak
[root@jenkins ~]# tar xf plugins-2.414.3.tar.gz -C .jenkins/
[root@jenkins ~]# java -jar jenkins-2.414.3.war  #页面初始化

 

3.安装nexus

        安装jdk环境:jenkins8 ,其他版本不支持, 安装流程查:

        安装nexus:

[root@nexus ~]# ll
-r--------  1 root root 194990602 10月 30 11:46 jdk-8u211-linux-x64.tar.gz
-r--------  1 root root 231282880 11月 26 20:29 nexus-3.62.0-01-unix.tar.gz

[root@nexus ~]# tar xf nexus-3.62.0-01-unix.tar.gz -C /opt
[root@nexus ~]# ln -s /opt/nexus-3.62.0-01/ /opt/nexus #创建硬链接方便操作
[root@nexus ~]# cd /opt/nexus
[root@nexus nexus]# ./bin/nexus run  #run前台运行,start后台运行

         192.168.40.129:8081浏览器访问,注册之后才能享有操作权限:

 

 

 

四、nexus 数据备份

设置=> system[tasks] => create task

image.png

Admin-export 导出数据备份

image.png

image.png

五、创建一个内网yum源

创建一个存储库 Blob(Binary Large Object)是一种二进制大对象,通常用于存储图像、音频、视频等大型文件。Blob Stores 是一种用于存储和管理 Blob 的数据存储服务,通常由云服务提供商提供。

image.png

image.png

创建一个Repositories 仓库

image.png

创建仓库类型为yum Nexus 仓库类型包括 Group、Hosted 和 Proxy。 Group(组仓库):用于组织其他仓库,它本身不存储任何软件包。Group 仓库可以包含其他类型的仓库,例如 Hosted 或 Proxy 仓库,以方便管理和访问。 Hosted(宿主仓库):用于存储自己构建或上传的软件包。Hosted 仓库通常用于内部开发团队共享软件包,或者用于存储私有软件包。 Proxy(代理仓库):用于代理其他公共仓库的软件包。Proxy 仓库可以缓存公共仓库中的软件包,以提高下载速度和节省带宽。Proxy 仓库还可以用于管理和控制对公共仓库的访问。

image.png

image.png

找到仓库并拷贝路径

image.png

测试上传包

# 仓库地址:
http://192.168.40.129:8081/repository/yum/
​
# 如果你想上传本地缓存的包,可以通过下列命令进行上传
# 注意,这里的admin admin 指的是nexus的账号密码,可以根据不同的权限进行创建
[root@nexus ~]# find /var/cache/yum/ -name "*.rpm" -exec curl -v --user 'admin:Qq111111' --upload-file {} http://192.168.75.188:8081/repository/yum/{} \;

验证是否成功上传

image.png

尝试使用仓库

[root@nexus ~]# cd /etc/yum.repos.d/
[root@nexus yum.repos.d]# vim nexus-yum.repo
[nexus-yum]
name=nexus-yum
baseurl=http://192.168.40.129:8081/repository/yum
gpgcheck=0
enabled=1

六、创建一个代理yum仓库

image.png

[root@nexus ~]# cd /etc/yum.repos.d/
[root@nexus yum.repos.d]# vim nexus-yum.repo
[nexus-yum]
name=nexus-yum
baseurl=http://192.168.40.129:8081/repository/yum-aliyun/$releasever/os/$basearch/
gpgcheck=0
enabled=1

这时,我们可以看到,已经将阿里云的软件包进行了代理,并且,当我们进行了下载时

[root@localhost yum.repos.d]# yum install -y mariadb mariadb-server
...
====================================================================================================
 Package                          Arch            Version                  Repository          Size
====================================================================================================
Installing:
 mariadb                          x86_64          1:5.5.68-1.el7           nexus-yum          8.8 M
 mariadb-server                   x86_64          1:5.5.68-1.el7           nexus-yum           11 M
Installing for dependencies:
 perl-Compress-Raw-Bzip2          x86_64          2.061-3.el7              nexus-yum           32 k
 perl-Compress-Raw-Zlib           x86_64          1:2.061-4.el7            nexus-yum           57 k
 perl-DBD-MySQL                   x86_64          4.023-6.el7              nexus-yum          140 k
 perl-DBI                         x86_64          1.627-4.el7              nexus-yum          802 k
 perl-Data-Dumper                 x86_64          2.145-3.el7              nexus-yum           47 k
 perl-IO-Compress                 noarch          2.061-2.el7              nexus-yum          260 k
 perl-Net-Daemon                  noarch          0.48-5.el7               nexus-yum           51 k
 perl-PlRPC                       noarch          0.2020-14.el7            nexus-yum           36 k
​
Transaction Summary
====================================================================================================
Install  2 Packages (+8 Dependent packages)
...
Dependency Installed:
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7      perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7     
  perl-DBD-MySQL.x86_64 0:4.023-6.el7               perl-DBI.x86_64 0:1.627-4.el7                   
  perl-Data-Dumper.x86_64 0:2.145-3.el7             perl-IO-Compress.noarch 0:2.061-2.el7           
  perl-Net-Daemon.noarch 0:0.48-5.el7               perl-PlRPC.noarch 0:0.2020-14.el7               
​
Complete!

我们可以看到,包已经缓存了下来

image.png

 

七、jenkins 使用 nexus插件

jenkins 插件文档 测试仓库 easy-springmvc-maven

7.1 jenkins 安装插件

image.png

7.2 配置 maven 工程

这里涉及到的groupid version 等信息,可以在项目的pom.xml文件中找到。

image.png

image.png

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>springmvc-maven</groupId>
  <artifactId>easy-springmvc-maven</artifactId>
  <!-- 注意这里的名字中不要带有snapshot -->
  <version>0.0.1</version>
  <packaging>war</packaging>
  <name>springmvc-maven</name>
  <description>simple demo about how to use maven combine spring mvc</description>
  <build>
  <!-- 使用默认的文件路径 -->
   <!-- 生成的war文件名 避免添加版本号 -->
    <finalName>easy-springmvc-maven</finalName>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
        <configuration> 
        <version>3.0 </version> 
        <!-- maven的web项目默认的webroot是在src\main\webapp。如果在此目录下找不到web.xml就抛出webxml attribute is required的异常 -->
        <!-- 需要在pom.xml中增加<webXml>配置 -->
        <!-- <webXml>WebContent\WEB-INF\web.xml</webXml> -->
        </configuration> 
       </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    
    <!-- spring mvc dependencies start -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- spring mvc dependencies end -->
    <!-- 解决页面访问时发生错误: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config - start -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
    <!-- end -->
  </dependencies>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>3.1.2.RELEASE</spring.version>
  </properties>
</project>

7.3 查看构建和上传

image.png

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐