为了账号安全,请及时绑定邮箱和手机立即绑定

通过GitLab CI/CD发布maven项目到私有仓库

标签:
Docker

简介

本文将介绍如何通过GitLab CI/CD自动构建、测试maven项目并将它打包发布到maven私有仓库,并在此过程中可能会遇到的问题做一个汇总

本文假设已经在gitlab上准备了一个maven项目

操作步骤

  1. 配置环境变量

  2. 配置仓库地址

  3. 配置仓库账号

  4. 配置CI文件

  5. 运行流水线

详细步骤

配置环境变量

MAVEN仓库信息属于敏感信息,不应该直接写在项目代码里面,应该通过GitLab变量进行配置,可以保护这些敏感信息不会泄露

转到项目设置>CI/CD>变量,添加以下变量

webp

MAVEN私有仓库配置信息

NEXUS_REPO_USERNAME: 私有仓库账号
NEXUS_REPO_PASSWORD: 私有仓库密码
NEXUS_REPO_RELEASES_URL: release仓库地址
NEXUS_REPO_SNAPSHOTS_URL: snapshot仓库地址

配置仓库地址

编辑项目配置文件,添加配置

    <distributionManagement>
        <repository>
            <id>my-releases</id>
            <url>${env.NEXUS_REPO_RELEASES_URL}</url>
        </repository>
        <snapshotRepository>
            <id>my-snapshots</id>
            <url>${env.NEXUS_REPO_SNAPSHOTS_URL}</url>
        </snapshotRepository>
    </distributionManagement>

配置仓库账号

在仓库的根目录下创建maven配置文件.m2/settings.xml,内容如下

 <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
     xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <servers>
     <server>
       <id>my-releases</id>
       <username>${env.NEXUS_REPO_USERNAME}</username>
       <password>${env.NEXUS_REPO_PASSWORD}</password>
     </server>
     <server>
       <id>my-snapshots</id>
       <username>${env.NEXUS_REPO_USERNAME}</username>
       <password>${env.NEXUS_REPO_PASSWORD}</password>
     </server>
   </servers>
 </settings>

配置CI文件

在仓库根目录下新建GitLab CI的配置文件,可参考如下内容

# define docker image when run jobimage: maven:3.3.9-jdk-8# define job variables at job levelvariables:
  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"# define list of files that should be cachedcache:
  paths:
  - .m2/repository/
  - target/# defines a job stage(default: test)stages:
- build
- package
- deploy# define build jobbuild:
  stage: build
  script:
  - echo "======== start build ========"
  - mvn $MAVEN_CLI_OPTS compile# define package jobpackage:
  stage: package
  script:
  - echo "======== start package ========"
  - mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true package# define deploy jobdeploy:
  stage: deploy
  script:
  - echo "======== start deploy ========"
  - mvn $MAVEN_CLI_OPTS deploy
  only:
  - master

运行流水线

每次提交代码都会自动运行流水线,也可以手工运行

转到项目CI/CD>流水线,点击运行流水线,然后等待运行结果

webp

查看流水线运行状态与结果

也可以点开Stages查看运行日志

webp

job运行日志

运行成功以后可以确认一下项目是不是已经发布到自己的私有仓库了

问题汇总

不发布某个模块

在对应模块pom文件中的properties节点中将maven.deploy.skip配置为true

  <properties>
    <maven.deploy.skip>true</maven.deploy.skip>
  </properties>



作者:核子飞弹
链接:https://www.jianshu.com/p/f9bb639e03b4


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消