Gitlab CICD-在构建Docker容器之前运行mvn全新安装

时间:2019-01-22 20:15:45

标签: maven spring-boot docker docker-compose centos7

我们正在运行一个春季启动应用程序,该应用程序要求您先运行mvn clean install -Dmaven.test.skip=true,然后才能运行docker build。是否有同时安装了maven和docker的映像?

我尝试使用maven:3.6.0-jdk-8-slim图像运行before脚本,然后在作业中指定单独的图像。

image: maven:3.6.0-jdk-8-slim

before_script:
      - mvn clean install -Dmaven.test.skip=true

build_archivist_elasticsearch:
  image: docker:latest
  services:
    - docker:dind
  variables:
    DOCKER_DRIVER: overlay
  script:
    - cd archivist
    - docker build -t xxxx/xxxxx:development

需要mvn clean install来构建和创建工件,然后运行docker build -tdocker push到我们的仓库中。

2 个答案:

答案 0 :(得分:2)

解决方案是利用gitlab-ci.yml文件中的工件来存储docker构建所需的依赖项(即* .jar和* .zip文件)

image: docker:latest
stages:
  - build
  - deploy

build_artifacts:
  image: maven:3.6.0-jdk-8-slim
  stage: build
  script:
      - mvn clean install -Dmaven.test.skip=true
  artifacts:
    paths:
      - archivist/target/*.jar
      - elasticsearch/*.zip

build_archivist_elasticsearch:
  stage: deploy
  image: docker:latest
  services:
    - docker:dind
  variables:
    DOCKER_DRIVER: overlay
  script:
    - cd archivist
    - docker build -t xxxxx/xxxxxx:development .

`

https://docs.gitlab.com/ee/ci/yaml/README.html#artifacts

答案 1 :(得分:0)

我们也有类似的问题,需要使用spotify docker-maven-plugin

来构建Spring Boot映像。

这是我们的最终配置:

stages:
  - build

variables:
  MVN_OPTS: "-Dmaven.repo.local=/cache/maven.repository"

build:
  image: maven:3.6.0-jdk-8-slim
  stage: build
  script:
    - mvn $MVN_OPTS clean test -Duser.timezone=CET
  tags:
    - docker

通过docker标签,我们选择了一个配置为基于docker:latest触发容器的kubernetes gitlab-runner