简介
本文将介绍如何通过GitLab CI/CD自动构建、测试maven项目并将它打包发布到maven私有仓库,并在此过程中可能会遇到的问题做一个汇总
本文假设已经在gitlab上准备了一个maven项目
操作步骤
配置环境变量
配置仓库地址
配置仓库账号
配置CI文件
运行流水线
详细步骤
配置环境变量
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 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>流水线,点击运行流水线,然后等待运行结果
查看流水线运行状态与结果
也可以点开Stages查看运行日志
job运行日志
运行成功以后可以确认一下项目是不是已经发布到自己的私有仓库了
问题汇总
不发布某个模块
在对应模块pom文件中的properties节点中将maven.deploy.skip配置为true
<properties> <maven.deploy.skip>true</maven.deploy.skip> </properties>
作者:核子飞弹
链接:https://www.jianshu.com/p/f9bb639e03b4
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦