DevOps / Jenkins / Nexus

Jenkins与Nexus集成:实现Maven制品管理

浅时光博客 · 3月27日 · 2020年 · 16.4w 次已读

一、总体流程

开发人员通过SVN或Git向代码仓库提交代码。每个发布版本都会更新 pom.xml 文件中的信息。接着,Jenkins Pipeline会定义参数来读取特定pom文件中的相关信息。这些信息将被用于通过Nexus插件将制品上传至Nexus

一旦上传完成,Nexus插件使得在作业的Web界面上获取最新的包下载地址成为可能。这一地址可结合shell脚本使用,以实现下载操作。

这样的流程设计,实现了代码版本管理与制品上传的自动化,以及在Nexus中获取最新包地址的便捷性。

二、项目配置

  • pom.xml 文件中主要版本相关信息
    • groupId:业务名称简称
    • artifactId:应用名称
    • packaging:项目的打包类型,pomjarwar
    • version:版本信息

三、所需插件

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

四、脚本编写

1、生成DSL语句

  • 通过Jenkins流水线语法生成器,生成push Nexus的DSL
    原文链接:https://dqzboy.com
  • 设置连接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、执行发布流程


本文作者:浅时光博客
原文链接:https://www.dqzboy.com/2032.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

1 条回应

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

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