美文网首页Docker容器
通过GitLab CI/CD发布maven项目到私有仓库

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

作者: 核子飞弹 | 来源:发表于2018-11-30 20:37 被阅读3次

    简介

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

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

    操作步骤

    1. 配置环境变量
    2. 配置仓库地址
    3. 配置仓库账号
    4. 配置CI文件
    5. 运行流水线

    详细步骤

    配置环境变量

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

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

    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 job
    image: maven:3.3.9-jdk-8
    
    # define job variables at job level
    variables:
      MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
      MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
    
    # define list of files that should be cached
    cache:
      paths:
      - .m2/repository/
      - target/
    
    # defines a job stage(default: test)
    stages:
    - build
    - package
    - deploy
    
    # define build job
    build:
      stage: build
      script:
      - echo "======== start build ========"
      - mvn $MAVEN_CLI_OPTS compile
    
    # define package job
    package:
      stage: package
      script:
      - echo "======== start package ========"
      - mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true package
    
    # define deploy job
    deploy:
      stage: deploy
      script:
      - echo "======== start deploy ========"
      - mvn $MAVEN_CLI_OPTS deploy
      only:
      - master
    

    运行流水线

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

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

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

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

    job运行日志

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

    问题汇总

    不发布某个模块

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

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

    参考资料

    .gitlab-ci.yml配置

    相关文章

      网友评论

        本文标题:通过GitLab CI/CD发布maven项目到私有仓库

        本文链接:https://www.haomeiwen.com/subject/blqkcqtx.html