一、总体流程
开发人员通过SVN或者Git提交代码至代码仓库,每个发布的版本都会进行更新pom.xml信息。然后Jenkins Pipeline定义参数读取指定pom文件中的相关信息,通过nexus插件上传制品到nexus;最后通过nexus插件可以在Job的Web界面获取到最新的包下载地址,结合shell脚本进行下载。
二、项目配置
- pom.xml文件中主要版本相关信息
- groupId:业务名称简称
- artifactId:应用名称
- packaging:项目的打包类型,pom、jar、war
- version:版本信息

三、所需插件
- Pipeline Utility Steps: 在当前工作目录中查找文件。
- Nexus Artifact Uploader:上传制品到制品库
- Maven Artifact ChoiceListProvider (Ne
文章来源(Source):浅时光博客 xus):读取制品库中的文件文章来源(Source):浅时光博客 - Nexus Platform:一个将Nexus
文章来源(Source):https://www.dqzboy.com Repo原文链接:https://www.dqzboy.com sitory Manager和Nexus Lifecycle文章来源(Source):https://www.dqzboy.com 集成到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、执行发布流程

强