使用没有注册表的docker for gitlab-ci

时间:2018-04-30 12:09:48

标签: docker continuous-integration gitlab gitlab-ci

我的学校有个人gitlab设置,但它没有针对docker图像的注册表设置。

我想要做的是使用docker运行我的管道,以便我可以在docker环境中构建,测试等。

现在我正在尝试随机的东西,因为我不知道我在做什么。这就是我现在所拥有的:

Gitlab-CI:

image: docker:latest

services:
  - docker:dind

before_script:
  - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY

build-master:
  stage: build
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE" .
    - docker push "$CI_REGISTRY_IMAGE"

build:
  stage: build
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"

My secret variables on gitlab:

My error message in the pipeline:

我试过的其他东西使用gitlab repo。这正确地使用了docker镜像,但在我的应用程序中我也使用opencv,所以我想在docker镜像中添加更多内容。如果我知道如何在下面的示例中这样做,那也是一个选项。最重要的是,在下面的示例中,我无法运行测试。

Gitlab-CI:

image: ros:kinetic-ros-core

stages:
- build

variables:
  ROS_PACKAGES_TO_INSTALL: ""
  USE_ROSDEP: "true"

cache:
  paths:
    - ccache/

before_script:
 - git clone https://gitlab.com/VictorLamoine/ros_gitlab_ci.git
 - source ros_gitlab_ci/gitlab-ci.bash


catkin_make:
  stage: build
  script:
    - catkin_make

catkin_build:
  stage: build
  script:
    - catkin build --summarize --no-status --force-color

正如我所说,我尝试了很多东西,这只是我尝试过的最新事情。如何在没有gitlab注册表的情况下使用docker运行我的跑步者和gitlab-ci?

2 个答案:

答案 0 :(得分:0)

您可以将这些秘密变量更改为指向docker-hub注册服务器。

您必须在https://hub.docker.com/上创建帐户,然后使用该详细信息配置 - gitlab秘密变量。

答案 1 :(得分:0)

只需在没有注册表的情况下使用它。 您只需要将其插入到gitlabRunner配置文件中即可:

pull_policy =“如果不存在”

足够了,并删除以下命令:

docker push ...
docker pull ...

或者,如果您想保持推拉,甚至在推拉命令的末尾插入“ || true”,就像这样:

docker pull ... ||正确;

如果命令失败,这将使您的代码继续执行。 只是不要忘记: pull_policy =“ if-not-present” ,它使您可以在不拖拉的情况下运行docker映像。 如果图像是假的,那是可行的。

示例:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("src/de/therealjan/tools/pictures/pic.png");
ImageIcon icon = new ImageIcon(resource);