一、总体流程
开发人员通过SVN或Git向代码仓库提交代码。每个发布版本都会更新 pom.xml 文件中的信息。接着,Jenkins Pipeline会定义参数来读取特定pom文件中的相关信息。这些信息将被用于通过Nexus插件将制品上传至Nexus。
一旦上传完成,Nexus插件使得在作业的Web界面上获取最新的包下载地址成为可能。这一地址可结合shell脚本使用,以实现下载操作。
这样的流程设计,实现了代码版本管理与制品上传的自动化,以及在Nexus中获取最新包地址的便捷性。
二、项目配置
- pom.xml 文件中主要版本相关信息
- groupId:业务名称简称
- artifactId:应用名称
- packaging:项目的打包类型,
pom、jar、war - version:版本信息

三、所需插件
- Pipeline Utility Steps: 在当前工作目录中查找文件。
- Nexus Artifact Uploader:上传制品到制品库
- Maven Artifact ChoiceListProvider (Nexus):读取制品库中的文件
- Nexus Platform:一个将Nexu
文章来源(Source):https://dqzboy.com s Repository Manager和Nexus Lifecycle集成到Jenkins作业中的插件
四、脚本编写
1、生成DSL语句
- 通过Jenkins流水线语法生成器,生成push Nexus的DSL

- 设置连接Nexus仓库的用户凭据
- 查看Nexus的用户凭据的唯一标识

2、编写Pipeline
pipeline {
agent {
node { label 'master'}
}
#此处省略了多个步骤,直接上传制品的步骤
stages {
stage ('上传制品') {
steps {
script {
def nexusDate = sh returnStdout: true, script: 'date +%Y%m%d-%H%M%S'
def pom = readMavenPom file: './项目目录/pom.xml' #指定读取的pom文件路径
nexusArtifactUploader(artifacts: [[artifactId: "${pom.artifactId}",
classifier: '',
file: "./项目目录/target/${pom.artifactId}-${pom.version}.${pom.packaging}",
type: "${pom.packaging}"]],
credentialsId: 'Nexus凭据ID',
groupId: "${pom.groupId}",
nexusUrl: 'Nexus—IP:8090',
nexusVersion: 'nexus3',
protocol: 'http',
repository: "maven-releases(Nexus仓库名称)",
version: "${pom.version}-${nexusDate}-${BUILD_ID}")
}
}
}
stage('部署') {
steps {
script {
sh '''
ssh ${server_user}@${serverIP} "cd /data/app && wget ${Package}" #${Package}引用Job参数化构建传的值,然后该值传给由远程目标服务器上的脚本进行引用下载
'''
}
}
}
}
}
- Nexus配置允许匿名访问服务器,不然通过wget下载会出现401报错,被拒绝。

五、创建JOB
1、创建Job任务

2、参数化构建
- 执行Jenkins-CD时可以选择部署的Nexus中的制品;依赖插件Maven Artifact ChoiceListProvider (Nexus)
- 设置连接Nexus仓库的用户凭据;上面我们已经添加了,这里直接选择即可


3、执行发布流程








强