DevOps / Jenkins / Nexus

Jenkins集成Nexus对Maven制品管理

浅时光 · 3月27日 · 2020年 · 57653次已读

一、总体流程

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

二、项目配置

  • pom.xml文件中主要版本相关信息
    • groupId:业务名称简称
    • artifactId:应用名称
    • packaging:项目的打包类原文链接:https://www.dqzboy.com型,pom、jar、war
    • version:版本信息
1605958563 0e11b725216a18b

三、所需插件

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

四、脚本编写

1、生成DSL语句

  • 通过Jenkins流水线语法生成器,生成push Nexus的DSL
1605959055 6e9959bf4339b50
1605959019 73c597235211c59
  • 设置连接Nexus仓库的用户凭据
image 289
image 290
  • 查看Nexus的用户凭据的唯一标识
1605958962 73969fad5b86e50
1605958926 67770a282d78794

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报错,被拒绝。
image 56

五、创建JOB

1、创建Job任务

image 293

2、参数化构建

  • 执行Jenkins-CD时可以选择部署的Nexus中的制品;依赖插件Maven Artifact ChoiceListProvider (Nexus)
  • 文章来源(Source):https://www.dqzboy.com置连接Nexus仓库的用户凭据;上面我们已经添加了,这里直接选择即可
image 44
1605958792 1ec122c239e3c2a
image 295
image 49

3、执行发原文链接:https://www.dqzboy.com布流程

maven jenkins
1599059641 ae7af2e544b8e09


1 条回应

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

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