繁体   English   中英

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

[英]Use docker without registry for 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"

我在 gitlab 上的秘密变量:

我在管道中的错误消息:

我尝试过的其他方法使用 gitlab 存储库。 这正确地使用了 ros 的 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?

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

pull_policy = "如果不存在"

够了,然后删除以下命令:

码头推...
码头拉...

或者甚至在 push pull 命令的末尾插入“|| true”,如果你想保持 push pull 以防万一,像这样:

码头工人拉... || 真的;

如果命令失败,这将使您的代码继续。 只是不要忘记: pull_policy = "if-not-present" ,它允许您在没有拉和推的情况下运行 docker 镜像。 由于图像是在构建 mussing 的情况下,这是有效的。

例子:

[[runners]]
  name = "Runner name"
  url = ...
  ...
  executor = "docker"
  [runners.docker]
    image = ...
    pull_policy = "if-not-present"
    ...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM