返回介绍

Nexus3 对接最佳实践

发布于 2024-05-30 23:00:45 字数 21833 浏览 0 评论 0 收藏 0

1. 前言

本文针对当下最流行的私服管理软件 Nexus3 的使用场景,阐述云效对接 Nexus3 的最佳实践路径,详细说明了在应用开发平台上的整个研发流程中各个阶段的实际工作过程。


2. 最佳实践概述

Nexus3 作为最流行的私服管理软件,可以搭建目前几乎所有常见的仓库,如 npm、maven、docker 和 yum 等。Nexus 有两个版本 Nexus Repository OSS 和 Nexus Repository Pro,其中 OSS 版本免费,Pro 专业版需要收费。本文以 Nexus3 OSS 版本为例,讲解云效如何对接 Nexus。

【适用场景】

  • 云效接入 Nexus3 的 maven 仓库
  • 云效接入 Nexus3 的 npm 仓库

方案优势

  • 全自动的配置管理,减少配置管理工程师的投入,尤其适合多地协同研发场景。
  • 可进行权限收敛,开发人员不需要使用 Nexus3 账号密码,仓库管理更加安全。
  • 统一的仓库管理方案,避免一个企业多套仓库,提供资源利用率。

3. 前置条件

在执行本文操作前,请完成以下准备工作:

  • 所在公司已购买并开通配置管理和集成自动化模块。
  • 已注册云效账号并完成认证,可以登录云效平台。
  • 完成云效产品培训并通过相关考试。
  • 加入云效的钉钉答疑群(联系本公司云效接口负责人入群)。
  • 已完成应用管理,其中有应用是主干模式和分支模式。

4. 工具准备

  • 本方案使用 Chrome 浏览器,需提前准备。
  • 安装钉钉。

5. 仓库分类说明

Nextus3 仓库都有三种类型:

  1. hosted(本地类型):资产的提交和拉取都基于本地存储。hosted 类型一般用于自己开发二方库的管理,通常会创建 snapshots 和 release 两个仓库,分别用于存储快照和发布版本的二方库。
  2. proxy(代理类型):本地不做数据存储,直接代理外部仓库地址。proxy 类型一般用于代理中央仓库、第三方库和本地建立的私库,方便仓库集中化管理。
  3. group(组合类型):可以按顺序组合多个 hosted 和 proxy,并提供统一访问地址。group 类型通常会建立 public 仓库,作为企业级统一仓库使用。

6. Maven 库管理实践

6.1 环境准备

【前置条件】:统一 Nexus3 仓库的搭建。 在完成仓库搭建后,可以使用 admin 用户登录 Nexus3 管理页面,建立仓库和用户。

6.1.1 仓库准备

Nexus3 默认会建立 maven-public、maven-central、maven-snapshots 和 maven-releases 四个仓库,并且 maven-public 已经与 maven-central、maven-snapshots 和 maven-releases 建立连接,所以我们只要按需增加第三方库(包括企业内部私有仓库)即可。

  • 隔离环境方案 隔离环境依据情况分为两种方案:1)完全隔离环境;2)通过中转机器单向打通网络。

  • 方案一:完全隔离环境 通过 Nexus 代理仓库方式实现依赖包的更新,实现方案如下图所示:nexus方案说明:

    1. 在外网环境搭建一个 Nexus3 私有仓库用于下载项目依赖包;
    2. 云效 maven 的构建命令,完成项目构建,同时依赖包会同步缓存到 Nexus3 私库;
    3. 将 Nexus3 私有仓库所有安装文件都拷贝到内网服务器,并启动 Nexus 服务;
    4. 在统一 maven 仓库中创建代理仓库 maven-security-proxy,代理 “步骤3” 搭建的私有仓库;
    5. 完成上述操作后,私有仓库的依赖包便可通过统一仓库地址提供服务,后续私库依赖包更新,直接覆盖私库文件即可。
  • 方案二:通过中转机器单向打通网络 通过中转机单向打通网络的方案比较简单,方案说明如下:
    1. 在可通外网的中转机器上搭建 Nexus3 私有仓库;
    2. 打通统一仓库服务器与中转机器的网络,默认 8081 端口;
    3. 在统一的 maven 仓库中创建代理仓库 maven-security-proxy,代理 “步骤1” 搭建的私有仓库。

6.1.2 角色和用户准备

根据如下信息建立角色:

序号角色名称权限列表备注
1maven-snapshotnx-repository-view-maven2-maven-snapshots-*snapshot 库发布角色
2maven-releasesnx-repository-view-maven2-maven- releases-*releases 库发布角色

权限说明:

  1. nx-repository-admin 开头的是针对仓库本身的相关权限。
  2. nx-repository-view 开头的是针对仓库里jar的相关权限。

根据如下信息建立用户:

序号用户名称角色名称备注
1mvnsnapmaven-snapshotsnapshot 库发布用户
2mvnrelmaven-releasesreleases 库发布用户

6.2 实践方案

云效平台是通过构建机与企业统一仓库进行对接的,对接场景包括部署包构建、snapshots 二方包构建,releases 二方包构建三种,为了保障 maven 仓库的操作安全,建议将maven仓库的发布权限回收,所有二方库发布都由云效接管,保证 maven 的发布规范和安全。对接 Nexus3 实践方案如下:nexus

6.2.1 部署包构建

通过云效配置管理 > 应用 > 应用管理功能,为应用配置构建脚本即可。云效构建机默认会在 settings.xml 中指定构建依赖仓库为 maven-public 仓库。示例配置如下:

<mirrors>
    <mirror>
       <id>maven-public</id>
       <url>http://xxx.xxx.xxx.xxx:8081/repository/maven-public/</url>
       <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

注意:不能通过项目的 pom 文件配置仓库。

6.2.2 二方库构建

云效二方库发布流程如下:nexus 【构建机配置】 在云效构建机的 settings.xml 文件中增加下面配置信息:

<servers>
    <server>  
        <id>releases</id>  
        <username>mvnrel</username>  
        <password>xxxxxx</password>  
    </server>
    <server>  
        <id>snapshot</id>  
        <username>mvnsnap</username>  
        <password>xxxxxx</password>  
    </server>
</servers>

【二方库项目 pom 配置】

  1. 二方库项目的 pom.xml 中增加下面配置信息:

    <distributionManagement>
        <repository>
            <id>releases</id>
            <name>releases</name>
            <url>http://xxx.xxx.xxx.xxx:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshot</id>
            <name>snapshot</name>
            <url>http://xxx.xxx.xxx.xxx:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    
  1. 二方库开发阶段,需要对模块版本号后加上-SNAPSHOT,保证开发阶段只是发布快照版本,如下

    <groupId>com.gdrcu.xxx </groupId>
    <artifactId>test</artifactId>
    <version>0.0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    

7. Npm 库管理实践

7.1 环境准备

【前置条件】:统一 Nexus3 仓库的搭建。 在完成仓库搭建后,可以使用 admin 用户登录 Nexus3 管理页面,建立仓库和用户。

7.1.1 仓库准备

建立 npm-public、npm-central、npm-snapshots 和 npm-releases 等四个仓库,并且 npm-public 已经与 npm-central、npm-snapshots 和 npm-releases 建立连接,另外按需增加第三方库(包括企业内部私有仓库)就可以了。

建议:中央仓库可以使用:https://registry.npm.taobao.org

7.1.2 角色和用户准备

根据如下信息建立角色:

序号角色名称权限列表备注
1npm-snapshotnx-repository-view-npm-npm-snapshots-*snapshot库发布角色
2npm-releasesnx-repository-view-npm-npm- releases-*releases库发布角色

权限说明:

  1. nx-repository-admin 开头的是针对仓库本身的相关权限。
  2. nx-repository-view 开头的是针对仓库里jar的相关权限。

根据下面信息建立角色:

序号用户名称角色名称备注
1npmsnapnpm-snapshotsnapshot库发布用户
2npmrelnpm-releasesreleases库发布用户

7.1.3 开启 npm 的认证组件

nexus

7.1.4 Nrm 安装和使用

安装命令:npm install -g nrm 添加仓库:

nrm add public   http://localhost:8081/repository/npm-public/
nrm add release http://localhost:8081/repository/npm-release/
nrm add snapshots   http://localhost:8081/repository/npm-snapshots/

7.2 实践方案

云效平台是通过构建机与企业统一仓库进行对接的,对接场景包括部署包构建、snapshots 二方包构建,releases 二方包构建三种。对接 Nexus3 实践方案如下:nexus

7.2.1 部署包构建

通过云效配置管理 > 应用 > 应用管理功能,为应用配置构建脚本即可。切换仓库为 npm-public:

nrm   use public

7.2.2 snapshots 二方包构建发布

通过云效配置管理 > 应用 > 应用管理功能,为应用配置开发构建脚本即可。切换仓库为 npm-snapshots:

nrm use snapshots
npm login –用 npmsnap 用户登录
npm publish

7.2.3 releases 二方包构建发布

通过云效配置管理 > 应用 > 应用管理功能,为应用配置开发构建脚本即可。切换仓库为 npm-release:

nrm use release
npm login  --用 npmrel 用户登录
npm publish

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文