DevOps / Jenkins / Nexus

Jenkins集成Nexus对Maven制品管理

温馨提示:本文最后更新于2021-03-02 18:42:20,某些文章具有时效性,若有错误或已失效,请在下方留言或提交工单提交工单
浅时光 · 3月27日 · 2020年 · 本文1441个字,预计阅读4分钟 83868次已读

一、总体流程

开发人员通过SVN或者Git提交代码至代码仓库,每个发布的版本都会进行更新pom.xml信息。然后Jenkins Pipeline定义参数读取指定pom文件中的相关信息,通过nexus插件上传制品到nexus;最后通过nexus插件可以在Job的Web界面获取到最新的包下载地址,结合shell脚本进行下载。

二、项目配置

  • pom.xml文件中主要版本相关信息
    • groupId:业务名称简称
    • artifactId:应用名称
    • packaging:项目的打包类型,pom、jar、war
    • version:版本信息
Jenkins集成Nexus对Maven制品管理-浅时光博客

三、所需插件

  • Pipeline Utility Steps: 在当前工作目录中查找文件。
  • Nexus Artifact Uploader:上传制品到制品库
  • Maven Artifact ChoiceListProvider (Nexus):读取制品库中的文件
  • Nexus Platform:一个将Nexus Repository Manager和Nexus Lifecycle集成到Jenkins作业中的插件

四、脚本编写

1、生成DSL语句

  • 通过Jenkins流水线语法生成器,生成push Nexus的DSL
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
  • 设置连接Nexus仓库的用户凭据
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
  • 查看Nexus的用户凭据的唯一标识
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客

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报错,被拒绝。
Jenkins集成Nexus对Maven制品管理-浅时光博客

五、创建JOB

1、创建Job任务

Jenkins集成Nexus对Maven制品管理-浅时光博客

2、参数化构建

  • 执行Jenkins-CD时可以选择部署的Nexus中的制品;依赖插件Maven Artifact ChoiceListProvider (Nexus)
  • 设置连接Nexus仓库的用户凭据;上面我们已经添加了,这里直接选择即可
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客

3、执行发布流程

Jenkins集成Nexus对Maven制品管理-浅时光博客



本文作者:浅时光
原文链接:https://www.dqzboy.com/2032.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
转载时请以超链接形式标明文章原始出处和作者信息

1 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. 挽袖未知2020-12-9 · 23:01

本站已稳定运行: | 耗时 0.412 秒 | 查询 11 次 | 内存 38.23 MB