Erlo

maven deploy 集成 gitlab ci 自动发版

时间:2021-05-26   阅读:67次   来源:开源中国
页面报错
点赞

背景

多模块的 maven 项目,抽象了通用的代码逻辑作为单独的 maven 模块,这样,不仅自己项目可以用,也可以提供依赖给其他项目用,那么这个时候需要将这个模块上传到 maven 私服,发布 maven 私服时,release 版本不支持覆盖,所以需要集成 ci 工具,给 maven 模块自动加上版本号,并自动完成 deploy 操作。本文方案依赖 maven 打包插件 flatten-maven-plugin,maven 版本要求大于等于 3.5.0

maven 配置

1、将 root 模块的 version 变量化,如新增如下的版本号 properties 参数

4.0.0
com.github.kl
demo
pom
${revision}
 
${project.artifactId}
 

    core
    common
    admin

 

    1.0

2、子模块依赖父模块,依然使用 ${revision} 占位符代替,依赖子模块使用 ${project.version},如:

4.0.0

    com.github.kl
    demo
    ${revision}

core
jar
${project.artifactId}

    
        com.github.kl
        common
        ${project.version}
    

3、不纳入自动版本号的模块,指定 version,同时,这种模块也不需要 deploy 到私服,配置跳过,如:

4.0.0
    
        com.github.kl
        demo
        1.0
    
    admin
    jar
    ${project.artifactId}
 
    
        true
    
 
    
        
            com.github.kl
            common
            ${project.version}
        
    

4、root 模块添加支持外部传入版本号参数的构建插件 flatten-maven-plugin,添加私服仓库地址


    
        
            org.codehaus.mojo
            flatten-maven-plugin
            1.1.0
            
                true
                resolveCiFriendliesOnly
            
            
                
                    flatten
                    process-resources
                    
                        flatten
                    
                
                
                    flatten.clean
                    clean
                    
                        clean
                    
                
            
        
    


    
        repo
        https://nexus.dev.com/repository/maven-releases/
    

完成如上步骤后,deploy 时,就可以通过传入系统参数的方式,动态指定版本号,如:mvn  deploy -Drevision=xxx

gitlab ci 配置

1、在项目根目录创建文件 .ci/settings.xml ,  内容如下:


  
    
      repo
      ${env.NEXUS_REPO_USERNAME}
      ${env.NEXUS_REPO_PASSWORD}
    
  

这个文件配置了 repo 的 maven 私服仓库 server,因为这个配置跟随项目的 git 走的,为了防止用户名和密码泄露,从环境变量中获取(提前在 gitlab 里配置好)

2、在.gitlab-ci.yml 中新增 build-deploy 流程

build-deploy:
  stage: build-deploy
  image: maven:3.6.3-openjdk-8-slim
  only:
    - master
    - dev
  variables:
    MAVEN_OPTS: "-Xmx512m -Xms512m -Dmaven.repo.local=$CI_PROJECT_DIR/repository"
  script:
    - mvn -s .ci/settings.xml --batch-mode clean deploy -Drevision=1.0-${CI_PIPELINE_IID}
  artifacts:
    paths:
      - admin/target
    expire_in: 1 week
  cache:
    paths:
      - repository

 

相关推荐

提交留言

评论留言

还没有评论留言,赶紧来抢楼吧~~

吐槽小黑屋()

* 这里是“吐槽小黑屋”,所有人可看,只保留当天信息。

  • Erlo吐槽

    Erlo.vip2021-07-29 14:35:26Hello、欢迎使用吐槽小黑屋,这就是个吐槽的地方。
  • 返回顶部

    给这篇文章打个标签吧~

    棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认