运行 docker 来自 gitlab 的命令-ci
Run docker commands from gitlab-ci
我有这个 gitlab-ci 文件:
services:
- docker:18.09.7-dind
variables:
SONAR_TOKEN: "$PROJECT_SONAR_TOKEN"
GIT_DEPTH: 0
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
DOCKER_HOST: "tcp://docker:2375"
DOCKER_DRIVER: overlay2
sonarqube-check:
image: maven:latest
stage: test
before_script:
- "docker version"
- "mkdir $PWD/.m2"
- "cp -f /cache/settings.xml $PWD/.m2/settings.xml"
script:
- mvn $MAVEN_CLI_OPTS clean verify sonar:sonar -Dsonar.qualitygate.wait=true -Dsonar.login=$SONAR_TOKEN -Dsonar.projectKey="project-key"
after_script:
- "rm -rf $PWD/.m2"
allow_failure: false
only:
- merge_requests
由于某些原因 docker 在 docker 服务中找不到 docker 的二进制文件(docker 版本 命令, 第 16 行):
/bin/bash: line 111: docker: command not found
我想知道是否有在 gitlab-ci 文件中执行此操作的方法,因为我需要 运行 docker 进行测试,如果有包含 maven 和 docker 二进制文件的图像,或者如果我必须创建自己的 docker 图像。
它必须在一个阶段,我不能把它分成两个阶段(或者至少我不知道如何在一个阶段在 maven 中编译,运行 测试 docker 另一个阶段的图像)
谢谢!
正如您正确指出的那样。您用于 GitLab-CI 作业的映像中需要 mvn
和 docker
二进制文件。
最快的胜利可能是在 before_script
部分的 运行 时间内在 maven:latest
构建映像中安装 docker。
before_script:
- apt-get update && apt-get install -y docker.io
- docker version
如果这会大大降低您的工作速度,您可能需要构建自己的自定义 docker 图像,其中包含 Maven 和 Docker.
另外看看 article about dind
on Gitlab 如果你最终移动到 Docker 19.03+
我有这个 gitlab-ci 文件:
services:
- docker:18.09.7-dind
variables:
SONAR_TOKEN: "$PROJECT_SONAR_TOKEN"
GIT_DEPTH: 0
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
DOCKER_HOST: "tcp://docker:2375"
DOCKER_DRIVER: overlay2
sonarqube-check:
image: maven:latest
stage: test
before_script:
- "docker version"
- "mkdir $PWD/.m2"
- "cp -f /cache/settings.xml $PWD/.m2/settings.xml"
script:
- mvn $MAVEN_CLI_OPTS clean verify sonar:sonar -Dsonar.qualitygate.wait=true -Dsonar.login=$SONAR_TOKEN -Dsonar.projectKey="project-key"
after_script:
- "rm -rf $PWD/.m2"
allow_failure: false
only:
- merge_requests
由于某些原因 docker 在 docker 服务中找不到 docker 的二进制文件(docker 版本 命令, 第 16 行):
/bin/bash: line 111: docker: command not found
我想知道是否有在 gitlab-ci 文件中执行此操作的方法,因为我需要 运行 docker 进行测试,如果有包含 maven 和 docker 二进制文件的图像,或者如果我必须创建自己的 docker 图像。
它必须在一个阶段,我不能把它分成两个阶段(或者至少我不知道如何在一个阶段在 maven 中编译,运行 测试 docker 另一个阶段的图像)
谢谢!
正如您正确指出的那样。您用于 GitLab-CI 作业的映像中需要 mvn
和 docker
二进制文件。
最快的胜利可能是在 before_script
部分的 运行 时间内在 maven:latest
构建映像中安装 docker。
before_script:
- apt-get update && apt-get install -y docker.io
- docker version
如果这会大大降低您的工作速度,您可能需要构建自己的自定义 docker 图像,其中包含 Maven 和 Docker.
另外看看 article about dind
on Gitlab 如果你最终移动到 Docker 19.03+