我们正在运行一个春季启动应用程序,该应用程序要求您先运行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 -t
和docker push
到我们的仓库中。
答案 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 .
`
答案 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