尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Jenkins与Nexus集成实战:自动化制品上传配置与避坑指南

Jenkins与Nexus集成实战:自动化制品上传配置与避坑指南 1. 项目概述与核心价值在软件开发和运维的日常工作中我们经常会遇到一个经典场景开发团队在本地构建出一个可运行的软件包比如一个Jar包、一个Docker镜像或者一个npm包如何安全、高效、可追溯地将这个“成果物”分发给测试团队、部署到生产环境或者作为依赖被其他项目引用如果每个开发者都手动用FTP或者U盘拷贝那简直就是一场版本管理的噩梦。这正是“制品管理”要解决的核心问题。而Jenkins作为自动化构建的引擎Nexus Repository作为专业的制品库两者的结合就构成了现代CI/CD流水线中至关重要的一环——自动化、标准化的制品发布。简单来说这个项目要做的就是打通Jenkins和Nexus之间的“最后一公里”。让Jenkins在完成代码编译、单元测试、打包等一系列操作后能够自动、准确地将生成的软件包上传到Nexus制品库的指定位置并打上清晰的版本标签。这不仅仅是点一下“上传”按钮那么简单它背后涉及环境准备、权限配置、插件选型、参数化构建等一系列工程实践。我见过不少团队在这一步踩坑要么上传失败找不到原因要么版本混乱要么权限管控出问题。今天我就结合自己多次搭建和优化的经验把从零开始配置Jenkins Nexus插件到成功上传软件包的完整流程和避坑指南毫无保留地分享出来。无论你是刚接触CI/CD的新手还是希望优化现有流水线的资深工程师这篇文章都能给你一套可直接“抄作业”的详细方案。我们会从最基础的环境准备讲起逐步深入到插件的高级配置和复杂场景的处理确保你不仅能完成配置更能理解每一个步骤背后的“为什么”。2. 环境准备与前置条件梳理在动手配置插件之前我们必须确保“舞台”已经搭好。一个稳定的基础环境是后续所有操作成功的前提。这里我们需要准备好三个核心角色Jenkins服务器、Nexus Repository服务器以及一个待构建的项目。2.1 Jenkins服务器基础配置首先确保你的Jenkins已经成功安装并可以正常访问。这里我假设你使用的是比较常见的War包部署方式或者通过系统包管理器如apt、yum安装。版本方面建议使用最新的LTS长期支持版本以获得更好的稳定性和插件兼容性。你可以通过访问http://your-jenkins-server:8080来验证Jenkins是否正常运行。接下来是几个关键的全局配置检查工具配置这是最容易出问题的地方。进入“系统管理” - “全局工具配置”。你需要在这里指定构建项目所需的工具链例如JDK如果你的项目是Java项目必须在这里添加一个JDK安装项。建议不要使用Jenkins自带的“自动安装”而是在服务器上预先安装好指定版本的JDK然后在这里配置其JAVA_HOME路径。例如Name: jdk-11,JAVA_HOME: /usr/lib/jvm/java-11-openjdk。这样做版本可控构建环境更稳定。Maven/Gradle同理为你的构建工具如Maven 3.8.6配置一个明确的安装项。同样推荐使用预先安装在服务器上的版本。凭据管理这是连接Nexus的关键。我们需要创建一个能够访问Nexus的凭据。进入“系统管理” - “管理凭据” - “全局凭据” - “添加凭据”。种类选择“Username with password”。范围保持默认的“全局”即可。用户名/密码填写你在Nexus Repository中创建的有上传权限的用户名和密码。强烈建议不要使用Nexus的admin账户而是专门创建一个具有特定仓库读写权限的“服务账户”例如jenkins-deploy。这符合最小权限原则更安全。ID这里非常重要给它起一个有意义且唯一的ID比如nexus-deploy-credential。后续在插件配置中我们就是通过这个ID来引用这组用户名密码的。描述可以写“用于Jenkins向Nexus上传制品的凭据”。注意很多新手在这里会直接填写密码但忽略ID的设置导致在流水线脚本或插件配置里找不到对应的凭据。ID是凭据在Jenkins内部的唯一标识符务必认真填写。2.2 Nexus Repository服务端配置Nexus的安装部署不是本文重点假设你已经有一个正在运行的Nexus 3实例版本3.87均可。我们需要在Nexus端完成以下关键配置创建存储空间登录Nexus管理界面进入“设置”-“Repository”-“Repositories”。你需要根据你的制品类型创建或确认已有仓库。例如对于Maven项目你至少需要一个maven-releases存放正式版和一个maven-snapshots存放快照版的Hosted类型仓库。对于Docker需要创建docker-hosted仓库类型为docker(hosted)。对于NPM需要创建npm-hosted仓库。 记下你打算上传的仓库名称比如maven-releases。创建部署用户进入“设置”-“Security”-“Users”点击“Create local user”。ID/Username例如jenkins-deploy。First Name/Last Name可随意。Password设置一个强密码。Status确保是“Active”。Roles这是权限控制的核心。不要直接赋予nx-admin角色。我们应该创建一个自定义角色赋予其最小权限。进入“Roles”页面创建新角色例如jenkins-deploy-role为其添加以下权限nx-repository-view-*-*-edit(允许查看和编辑所有仓库内容可根据需要缩小范围为特定仓库如nx-repository-view-maven2-maven-releases-edit)nx-repository-view-*-*-read(允许读取)nx-repository-view-*-*-browse(允许浏览)nx-repository-view-*-*-add(允许添加) 创建好角色后在创建用户时将这个jenkins-deploy-role角色赋予jenkins-deploy用户。获取仓库地址在Nexus的仓库列表页面找到你的目标仓库如maven-releases点击进入详情你可以看到它的URL。这个URL就是Jenkins需要连接的上传地址。通常格式为http://your-nexus-server:8081/repository/maven-releases/。2.3 示例项目准备为了演示我们需要一个简单的、可以构建出制品的项目。这里以一个标准的Maven项目为例。你可以在本地或Git服务器上准备一个最简单的Spring Boot项目或者任何一个有pom.xml并能通过mvn clean package命令成功生成target/*.jar文件的项目。确保项目的pom.xml中已经正确配置了groupIdartifactId和version。例如groupIdcom.example.demo/groupId artifactIdmy-application/artifactId version1.0.0/version packagingjar/packaging这个坐标com.example.demo:my-application:1.0.0将决定你的制品上传到Nexus仓库中的具体路径。3. Jenkins Nexus插件详解与安装Jenkins本身并不具备直接与Nexus通信的“超能力”我们需要通过插件来扩展它的功能。针对Nexus社区有多个相关插件我们需要选择最合适、最稳定的一个。3.1 插件选型与对比在Jenkins插件市场中与Nexus相关的插件主要有两个Nexus Artifact Uploader这是一个比较老牌且功能聚焦的插件。它的核心功能就是上传文件到Nexus仓库支持Maven、Raw通用文件、Docker等多种仓库类型。它的配置相对直观通过图形化界面就能完成大部分设置非常适合在Freestyle项目自由风格项目中使用。Nexus Platform Plugin这是由SonatypeNexus的开发公司官方维护的插件套件功能更加强大和现代。它不仅包含上传功能还集成了Nexus IQ Server用于安全漏洞扫描的对接能力。它的配置方式更贴近Pipeline流水线的脚本化风格。如何选择如果你的需求很简单就是在Freestyle项目里上传构建好的Jar/War包那么Nexus Artifact Uploader插件简单直接足够好用。如果你的团队正在或计划全面转向Jenkins PipelineJenkinsfile或者需要与Nexus IQ进行安全集成那么Nexus Platform Plugin是更面向未来的选择它提供了更丰富的DSL领域特定语言步骤。为了覆盖更广泛的场景我们以Nexus Artifact Uploader插件为例进行详细讲解因为它能最清晰地展示从界面配置到上传成功的完整链路。理解了它再去看Pipeline脚本化的方式就会容易很多。3.2 插件安装步骤安装插件的流程是标准的登录Jenkins点击左侧菜单的“系统管理”。在页面中找到“插件管理”。切换到“可选插件”选项卡。在右上角的搜索框中输入“Nexus Artifact Uploader”。在搜索结果中找到该插件勾选它前面的复选框。点击页面底部的“直接安装”按钮或者“立即下载并在重启后安装”。安装完成后根据提示重启Jenkins服务使插件生效。安装成功后你可以在“系统管理”-“插件管理”-“已安装”选项卡中确认插件状态。同时当你创建或编辑一个Freestyle项目时在构建后操作Post-build Actions的列表中应该能看到一个新的选项“Upload artifacts to Nexus Repository”。3.3 插件配置原理浅析这个插件的工作原理并不复杂可以把它理解为一个智能的HTTP客户端。它的核心任务是认证使用你在Jenkins中配置的凭据用户名密码向Nexus服务器发起带有认证头的HTTP请求。定位文件根据你配置的路径规则在Jenkins的工作空间${WORKSPACE}中找到要上传的制品文件。构造请求根据仓库类型Maven/Raw等按照对应的协议如Maven的部署协议构造一个HTTP PUT或POST请求。对于Maven仓库它会自动根据文件的扩展名和pom.xml中的坐标将文件上传到Nexus仓库中符合Maven仓库布局的路径下例如com/example/demo/my-application/1.0.0/my-application-1.0.0.jar。处理响应接收Nexus服务器的响应判断上传是否成功并在Jenkins控制台输出中给出相应的日志。理解了这个原理当上传失败时你就可以有的放矢地去检查是认证问题403错误是文件找不到问题还是网络连通性问题无法连接Nexus服务器4. 详细配置与上传实操Freestyle项目现在我们进入最核心的实操环节。我们将创建一个Freestyle项目并一步步配置它实现构建后自动上传制品到Nexus。4.1 创建与基础项目配置在Jenkins首页点击“新建Item”。输入一个项目名称例如“my-app-nexus-demo”选择“Freestyle project”点击“确定”。在项目配置页面我们先完成最基础的源码管理和构建触发设置这部分可根据你的实际情况调整源码管理选择Git填入你的项目仓库URL并配置访问仓库的凭据如SSH Key或用户名密码。构建触发器可以设置为轮询SCM例如H/5 * * * *表示每5分钟检查一次代码变更或者根据你的需求选择其他触发方式。4.2 构建环境与打包命令接下来配置如何将代码变成制品。找到“构建”环节点击“增加构建步骤”选择“Execute shell”如果是Windows服务器则选择“Execute Windows batch command”。在命令框中输入你的项目构建命令。对于一个标准的Maven项目通常是# 清理并打包跳过单元测试根据实际情况决定是否跳过 mvn clean package -DskipTests这个命令会在项目的工作空间目录下生成target文件夹里面包含打包好的Jar文件例如my-application-1.0.0.jar和对应的pom文件。实操心得建议在这里使用绝对路径调用Maven或者确保在“全局工具配置”中配置的Maven已正确添加到系统环境变量。你可以使用which mvn命令来确认。直接在命令里写/opt/maven/bin/mvn clean package也是一种避免环境问题的方法。4.3 Nexus插件配置详解核心步骤构建完成后就是配置上传了。滚动到“构建后操作”区域点击“增加构建后操作步骤”在下拉列表中选择“Upload artifacts to Nexus Repository”。这时会展开插件的详细配置表单我们逐一解析每个字段Nexus Instance这是要连接的Nexus实例。通常我们只有一个所以这里需要先添加。点击旁边的“Add”按钮。Nexus URL填写你的Nexus服务器地址就是前面在Nexus端记下的基础URL例如http://192.168.1.100:8081/。注意这里要填写Nexus的根地址而不是具体仓库的地址且末尾的斜杠/最好加上。Server ID给这个实例起个名字比如my-nexus。这个ID会在后续选择时用到。Credentials点击“Add”按钮选择“Jenkins”。这时会弹出一个凭据选择窗口。你应该能看到之前在“全局凭据”中创建的nexus-deploy-credential。选中它。如果没找到请检查凭据的“范围”是否为全局以及ID是否拼写正确。Nexus Repository选择目标仓库。点击“Add”按钮。Repository这里需要填写你在Nexus中创建的仓库名称例如maven-releases。注意是名称Name不是ID或URL。Repository ID给这个仓库配置起个名字例如repo-release。Protocol选择协议。对于Maven仓库就选择maven2。Artifacts这是配置的重中之重定义了要上传哪些文件以及它们在Nexus中的坐标。GroupId, ArtifactId, Version, Packaging这几个字段定义了制品的Maven坐标。这里有三种填写方式方式一手动填写。直接输入com.example.demo,my-application,1.0.0,jar。这种方式最直接但不够灵活版本号写死了。方式二读取pom文件推荐。这是更优雅的方式。你需要先增加一个构建步骤在打包命令之后执行一个脚本或使用Maven插件来将pom.xml中的属性提取到Jenkins环境变量中。例如可以使用mvn help:evaluate命令。但更常见的做法是结合“参数化构建”和“环境变量注入”。方式三使用Jenkins环境变量和构建参数。这是最灵活的方式。我们将项目配置为“参数化构建过程”添加一个VERSION字符串参数。然后在“Artifacts”配置中这样填写GroupId:com.example.demo(固定值或从文件读取)ArtifactId:my-application(固定值或从文件读取)Version:${VERSION}(使用构建参数)Packaging:jar这样每次构建时Jenkins都会提示你输入版本号实现了版本的可控。Classifier分类器通常用于区分同一构件的不同变体比如jdk8或sources。如果不需要留空。Extension扩展名默认为jar会根据Packaging自动推断一般无需修改。Files指定要上传的文件在Jenkins工作空间中的路径。File Path/Pattern这里支持Ant风格的通配符。对于我们的Maven项目通常需要上传两个文件主构件Jar包target/*.jarPOM文件pom.xmlType每个文件需要指定其类型。对于*.jar类型是artifact对于pom.xml类型是pom。 你需要为每个文件添加一条记录。点击“Add”按钮分别添加File:target/*.jar, Type:artifactFile:pom.xml, Type:pomAdditional Properties附加属性一般留空即可。4.4 执行构建与验证配置完成后点击页面底部的“保存”。现在我们可以手动触发一次构建来测试。点击项目页面的“立即构建”。如果是参数化构建会先弹出参数输入框输入版本号如1.0.0。构建开始后你可以点击构建编号进入“控制台输出”查看实时日志。重点关注构建后阶段插件会输出类似以下的日志[Nexus Artifact Uploader] - Uploading file: /var/lib/jenkins/workspace/my-app-nexus-demo/target/my-application-1.0.0.jar [Nexus Artifact Uploader] - Uploading to repository: repo-release (maven-releases) [Nexus Artifact Uploader] - Uploading to URL: http://192.168.1.100:8081/repository/maven-releases/com/example/demo/my-application/1.0.0/my-application-1.0.0.jar [Nexus Artifact Uploader] - Response Code: 201 [Nexus Artifact Uploader] - Artifact uploaded successfully.看到Response Code: 201Created和Artifact uploaded successfully.就表示上传成功了。验证立即打开你的Nexus界面浏览maven-releases仓库。你应该能看到按照路径com/example/demo/my-application/1.0.0/存放的my-application-1.0.0.jar和my-application-1.0.0.pom文件。点击文件还可以看到详细的属性信息比如由谁jenkins-deploy用户在什么时间上传的。5. 高级配置与Pipeline集成Freestyle项目的配置直观但对于复杂的、多步骤的流水线使用Jenkins PipelineJenkinsfile是更佳实践。Nexus Artifact Uploader插件也支持在Pipeline脚本中调用。5.1 在Pipeline脚本中使用插件在Pipeline脚本中我们使用nexusArtifactUploader这个步骤。下面是一个简单的示例pipeline { agent any parameters { string(name: VERSION, defaultValue: 1.0.0, description: 版本号) } stages { stage(Build) { steps { // 检出代码 git https://your-git-repo.git // 使用Maven构建 sh mvn clean package -DskipTests } } stage(Upload to Nexus) { steps { script { // 使用 nexusArtifactUploader 步骤 nexusArtifactUploader( nexusVersion: nexus3, // 指定Nexus版本 protocol: maven2, // 协议 nexusUrl: http://192.168.1.100:8081, // Nexus地址 groupId: com.example.demo, version: ${params.VERSION}, repository: maven-releases, // 仓库名称 credentialsId: nexus-deploy-credential, // 凭据ID artifacts: [ // 可以上传多个文件 [artifactId: my-application, classifier: , file: target/my-application-*.jar, type: jar], [artifactId: my-application, classifier: , file: pom.xml, type: pom] ] ) } } } } }关键参数解释nexusVersion: 指定你的Nexus主版本nexus3对应Nexus Repository Manager 3.x。credentialsId: 这就是我们在“全局凭据”中创建的凭据的ID必须完全匹配。artifacts: 这是一个列表每个元素是一个Map描述一个要上传的文件。注意这里的artifactId等需要与文件对应。5.2 动态版本与坐标管理在Pipeline中动态处理版本号更加方便。除了使用parameters还可以通过读取文件或解析命令输出来获取版本。示例从pom.xml中动态读取版本stage(Read Version) { steps { script { // 使用 readMavenPom 步骤需要 Pipeline Utility Steps 插件 def pom readMavenPom file: pom.xml env.ARTIFACT_VERSION pom.version echo Version from POM: ${env.ARTIFACT_VERSION} } } } stage(Upload to Nexus) { steps { script { nexusArtifactUploader( // ... 其他参数 version: ${env.ARTIFACT_VERSION}, // 使用动态读取的版本 // ... ) } } }5.3 多模块项目与复杂构件上传对于多模块Maven项目你可能需要上传多个子模块的构件。可以在artifacts列表中配置多个条目分别指定不同子模块的artifactId和文件路径。artifacts: [ [artifactId: module-a, file: module-a/target/module-a-*.jar, type: jar], [artifactId: module-a, file: module-a/pom.xml, type: pom], [artifactId: module-b, file: module-b/target/module-b-*.jar, type: jar] // ... 更多模块 ]对于非Maven构件比如一个通用的ZIP包或二进制文件你可以使用raw协议。这时配置会更简单主要指定文件路径和目标仓库即可不需要GroupId等Maven坐标。nexusArtifactUploader( nexusVersion: nexus3, protocol: raw, // 使用 raw 协议 nexusUrl: http://192.168.1.100:8081, repository: raw-hosted-repo, // 你的 raw 类型仓库名 credentialsId: nexus-deploy-credential, artifacts: [ [file: build/output/my-app-${VERSION}.zip] // 直接上传文件路径即仓库路径 ] )6. 常见问题排查与调试技巧实录即使按照步骤配置在实际操作中也可能遇到各种问题。下面是我在多次实践中总结的常见“坑点”和解决方法。6.1 认证失败 (401 Unauthorized / 403 Forbidden)这是最常见的问题控制台日志会明确显示认证错误。症状日志中出现HTTP response code: 401或403。排查步骤检查凭据首先确认Jenkins中配置的凭据ID是否正确用户名和密码是否与Nexus中的jenkins-deploy用户完全一致注意大小写。验证Nexus用户权限登录Nexus检查jenkins-deploy用户是否被正确赋予了目标仓库的nx-repository-view-*-*-edit和add权限。可以临时赋予nx-admin角色测试如果此时上传成功则证明是权限问题再回头细化权限。检查Nexus Realm在Nexus的“设置”-“Security”-“Realms”中确保你使用的认证方式如Local Authentication在“Active”列表里。如果只用了LDAP而本地用户被禁用也会导致失败。手动测试认证使用curl命令在Jenkins服务器上手动测试这是最直接的排查方式# 测试是否能访问Nexus无需认证 curl -I http://192.168.1.100:8081/ # 测试上传接口和认证将USER和PASS替换将URL替换为你的仓库上传地址 curl -v -u jenkins-deploy:YourPassword -X PUT \ --upload-file ./test.jar \ http://192.168.1.100:8081/repository/maven-releases/com/example/test/1.0/test-1.0.jar通过curl的详细输出(-v)可以清晰地看到HTTP请求头和响应能快速定位是网络不通、认证失败还是路径错误。6.2 文件未找到或路径错误症状日志提示File not found: /path/to/file.jar。排查步骤确认工作空间路径在Jenkins项目构建的“控制台输出”最开始部分会打印Building in workspace /var/lib/jenkins/workspace/your-job。这就是${WORKSPACE}的绝对路径。使用绝对路径或相对路径在插件配置的File Path中target/*.jar是相对于工作空间的路径。你可以在构建中增加一个pwd或ls -la的shell步骤来确认构建完成后target目录和jar文件是否确实存在于工作空间中。注意通配符target/*.jar会匹配target目录下所有的jar文件。如果你的构建会产生多个jar比如一个可执行jar和一个sources jar这可能会上传多个文件有时不符合预期。更精确的做法是使用具体的文件名比如target/my-application-${VERSION}.jar但这需要你能在配置时确定完整的文件名。6.3 版本冲突与仓库策略症状日志提示HTTP response code: 400或409 Conflict并伴有“Repository does not allow updating assets”或类似信息。原因与解决Nexus的Maven仓库有部署策略Deployment Policy。release仓库通常配置为Disable redeploy即禁止覆盖相同版本的构件。这是为了保证制品的唯一性和可追溯性。正确做法每次上传正式版release时使用新的、唯一的版本号。例如使用构建号、时间戳或Git提交哈希作为版本的一部分如1.0.0.${BUILD_NUMBER}。快照仓库对于snapshot仓库策略是允许覆盖的Maven会自动为快照版本加上时间戳和构建号。如果你确实需要覆盖一个已存在的release构件生产环境不推荐需要到Nexus管理界面找到该仓库将其“Deployment Policy”临时改为Allow redeploy操作完成后务必改回。6.4 网络与代理问题症状连接超时完全无法连接到Nexus服务器。排查步骤网络连通性在Jenkins服务器上使用ping和telnet或nc命令测试是否能通Nexus服务器的IP和端口默认8081。ping 192.168.1.100 telnet 192.168.1.100 8081防火墙检查Jenkins服务器和Nexus服务器之间的防火墙规则是否放行了8081端口的流量。Jenkins代理配置如果你的Jenkins服务器需要通过代理访问外网而Nexus在内网可能需要为Jenkins配置全局代理“系统管理”-“插件管理”-“高级”-“HTTP Proxy”或者为特定的构建节点配置代理。但注意如果Nexus在内网通常不需要走代理。6.5 插件版本与兼容性症状配置界面显示异常或者Pipeline步骤无法识别。解决确保你的Jenkins版本和Nexus Artifact Uploader插件版本兼容。可以到插件的官方页面查看兼容性列表。如果遇到问题尝试将插件升级到最新版本或者回退到一个已知稳定的旧版本。6.6 调试技巧启用详细日志Jenkins插件通常有自己的日志级别。为了获取更详细的调试信息你可以提高该插件的日志级别。进入“系统管理” - “系统日志”。点击“新增日志记录器”。在“日志记录器”中输入插件的包名对于Nexus Artifact Uploader插件可以尝试org.jenkinsci.plugins.nexus。将日志级别设置为ALL或FINE。保存后重现一次构建失败的操作。回到“系统日志”页面查看对应的日志记录器里面会输出非常详细的HTTP请求、响应和内部处理信息是排查复杂问题的利器。7. 最佳实践与安全加固建议配置通了只是第一步要让这个流程稳定、安全、高效地运行在生产环境中还需要遵循一些最佳实践。7.1 凭据安全管理使用专用服务账户如前所述永远不要使用Nexus的admin账户进行自动化操作。创建权限最小化的专属账户。定期轮换密码为服务账户设置强密码并建立定期更换的机制。利用Jenkins的凭据绑定在Pipeline中使用withCredentials绑定凭据避免在脚本中硬编码密码。withCredentials([usernamePassword(credentialsId: nexus-deploy-credential, passwordVariable: NEXUS_PASS, usernameVariable: NEXUS_USER)]) { // 在这里使用 ${NEXUS_USER} 和 ${NEXUS_PASS} 环境变量 sh curl -u ${NEXUS_USER}:${NEXUS_PASS} ... }7.2 版本命名规范Release版本使用语义化版本控制SemVer如主版本.次版本.修订号。结合构建号${BUILD_NUMBER}或提交哈希确保唯一性例如1.2.3.${BUILD_NUMBER}或1.2.3-${GIT_COMMIT_SHORT}。Snapshot版本Maven快照版本会自动处理无需特殊配置。确保你的pom.xml中版本号以-SNAPSHOT结尾并上传到snapshot仓库。7.3 构建流程优化上传前验证可以在上传步骤前增加一个“制品归档”步骤先将构建产物保存在Jenkins本地。这样即使上传Nexus失败本次构建的产出物也不会丢失便于排查问题。失败重试机制网络抖动可能导致上传失败。可以考虑在Pipeline脚本中为上传步骤添加简单的重试逻辑或者使用具有重试功能的插件。清理策略Nexus仓库空间不是无限的。需要在Nexus端为仓库配置合理的“清理策略”Cleanup Policy定期删除旧的快照包或不必要的发布包。7.4 与完整CI/CD流水线集成上传制品到Nexus通常是CI/CD流水线中的一个环节。一个完整的流水线可能包括代码检出-代码质量扫描-单元测试-构建打包-上传制品到Nexus-部署到测试环境-集成测试-部署到生产环境。将Nexus上传步骤放在“构建打包”之后“部署”之前。这样部署阶段可以直接从Nexus拉取已经验证过的、版本明确的制品实现了构建物与部署环境的解耦。可以考虑使用“Promote Build”或类似插件在制品通过测试后将其从一个仓库如maven-snapshots提升Promote到另一个仓库如maven-releases实现更严格的发布门控。通过以上七个部分的详细拆解你应该已经能够独立完成Jenkins与Nexus的集成配置并处理大部分实践中会遇到的问题。记住自动化流程的搭建是一个迭代过程先从最简单的场景跑通再逐步增加复杂度、安全性和可靠性。
返回列表