GitLab配置CICD+私服

678 阅读1分钟

今天在使用GitLab的CICD功能配SpringBoot项目时,由于项目需要从nexus私服下载依赖,所以需要配置maven的私服文件,其中.gitlab-ci.yml文件如下:

image: docker:latest  #1
variables:  #2
DOCKER_DRIVER: overlay2
#DOCKER_HOST: tcp://172.17.193.109:2375  # docker host,本地可不写
TAG: root/hello-spring:v0.1  # 镜像名称
MAVEN_CLI_OPTS: "-s .m2/settings-nexus.xml --batch-mode"
cache:  #3
paths:
  - .m2/repository
services:  #4
- docker:dind
stages:  #5
- package
- deploy
maven-package:  #6
image: maven:3.5-jdk-8-alpine
tags:
  - maven
stage: package
script:
  - mvn  $MAVEN_CLI_OPTS -Dmaven.test.skip=true  clean package
artifacts:
  paths:
    - target/*.jar
build-master:  #7
tags:
  - docker
stage: deploy
script:
  - docker build -t $TAG .
  - docker rm -f test || true
  - docker run -d --name test -p 5000:5000 $TAG
only:
  - master

项目目录如下:

图片.png

启动时发现可以从私服拉取依赖

图片.png 但是在gitlab 编译时中一直报:

图片.png

does not exist cannot find symbol 错误

经过排查发现是由于在.gitlab-ci.yml 文件中没指定mvn 本地仓库的地址,而且由于我们单独指定的setting.xml中指定了本地仓库地址:D:/mavenRepository,不会影响镜像的拉取(猜测直接拉取到了一个本地的虚拟文件夹中)但是mvn 在package时就会按照我们指定的setting.xml 文件中的 D:/mavenRepository去寻找依赖包,就会找不到,会报错。 解决方法:在.gitlab-ci.yml文件中指定项目的本地仓库地址修改为:

图片.png

或者将setting.xml中指定仓库的标签注释掉使用默认的.m2/repository