标签: gitlab-ci-runner

Docker-in-Docker与Gitlab共享运行器,用于构建和将docker镜像推送到注册表

一直试图建立可以构建码头图像的Gitlab CI,并且发现DinD最初仅针对不同的跑步者而启用,而博客建议它很快就会为共享的跑步者启用,

运行DinD需要在运行器中启用特权模式,在注册运行器时将其设置为标志,但无法找到共享运行器的等效机制

docker gitlab-ci gitlab-ci-runner

8
推荐指数
1
解决办法
5383
查看次数

在gitlab ci中找不到yarn命令

我正在尝试配置我的gitlab-ci yarn install而不是使用npm install

我目前的gitlab-ci.yml看起来像:

image: node:6.9.4

cache:
  paths:
  - node_modules/
  - .yarn

before_script:
  - apt-get update -qq && apt-get install -qy libelf1

stages:
  - test

test_core:
  stage: test
  script:
  - yarn config set cache-folder .yarn
  - yarn install
  - npm run build
  - npm run test
  tags:
    - 2gb
Run Code Online (Sandbox Code Playgroud)

但是构建失败并出现错误: /bin/bash: line 48: yarn: command not found

有什么我想念的吗?我尝试安装纱线:

curl -o- -L https://yarnpkg.com/install.sh | bash

这给了我同样的错误,可能是因为我需要重新加载bash环境以使yarn命令可用.

以上配置完美搭配npm install.

请帮我解决这个问题.如果我的配置文件中缺少某些内容或gitlab-ci出现问题.谢谢.

node.js npm gitlab-ci gitlab-ci-runner yarnpkg

8
推荐指数
1
解决办法
9498
查看次数

Gitlab-CI DinD 不会启动

我正在尝试将 DinD(Docker 中的 Docker)与我的 Gitlab-CI 构建脚本一起使用,无论我更改什么,我都会收到相同的错误。我究竟做错了什么?

错误

Service container logs: 
2018-08-21T22:54:00.129660274Z mount: permission denied (are you root?)
2018-08-21T22:54:00.129701426Z Could not mount /sys/kernel/security.
2018-08-21T22:54:00.129706380Z AppArmor detection and --privileged mode might break.
2018-08-21T22:54:00.130334774Z mount: permission denied (are you root?)
...
$ docker info
error during connect: Get http://docker:2375/v1.38/info: dial tcp: lookup docker on 8.8.8.8:53: no such host
Run Code Online (Sandbox Code Playgroud)

gitlab-ci.yml

django_build:
  stage: build
  variables:
    DOCKER_HOST: tcp://docker:2375/
    DOCKER_DRIVER: overlay2
  image: docker:stable
  services:
    - docker:dind
  before_script:
    - docker info
  script:
    - echo "Building something." 
Run Code Online (Sandbox Code Playgroud)

gitlab-runner config.toml …

gitlab docker gitlab-ci gitlab-ci-runner docker-compose

8
推荐指数
1
解决办法
5230
查看次数

GitLab CI/CD 管道,部署到 Windows Server

Using GitLab Runner I have on Linux, I am trying to connect to a Windows Server and run some basic commands there such as git pull.

Does GitLab runner provide any capabilities for accessing windows server?

What other options are there to get such requirement done?

gitlab gitlab-ci gitlab-ci-runner

8
推荐指数
1
解决办法
6517
查看次数

使用GitLab v11.11及更高版本的include语句的CodeQuality?

今天,在尝试在.gitlab-ci.yml(上的)中设置CodeQuality 时gitlab-ee 11.10gitlab-runner 11.10遇到了以下问题:

GitLab文档告诉您的第一件事是可以在DockerInDocker gitlab-runner和单个配置行的帮助下进行设置:

include:
  - template: Code-Quality.gitlab-ci.yml
Run Code Online (Sandbox Code Playgroud)

也有免责声明此gitlab 11.11版本或更高版本受支持,这很奇怪,因为截至2019年4月23日,最新版本为11.10。不知道这是一个错字,还是在发布实际可用版本之前是否发布了文档。

我尝试按照以下说明进行操作,但很多事情尚不清楚:

  1. 我意识到include应该在stages定义之后添加该语句以使语法检查通过。

  2. 一个code_quality工作出现并通过:


(来源:cozyo.io

但是,后来我从这个答案中得知,我需要创建一个.codeclimate.yml文件并以某种方式添加它.gitlab-ci.yml。该答案共有两个链接,可用于了解如何使用该链接,CodeClimate但我还没有找到添加的方法gitlab-ci.yml。我在与gitlab相关的页面中找到了一些示例,但没有使用include文档中描述的语句。

  1. 我找不到code_quaity通过的工作报告。在此答案中,有人指出该报告仅可在的合并请求上下载gitlab-ee。但是,这不切实际,因为开发人员必须开始发送垃圾邮件模拟合并请求,以查看他们的代码是否降级。

gitlab-ci.yml我使用看起来像这样:

image: docker:stable

variables:
  ARTEFACT: my_app
  VERSION: 0.1
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2

services:
  - docker:dind

before_script:
  - docker info

stages: …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-ci-runner gitlab-omnibus gitlab-ee

8
推荐指数
1
解决办法
497
查看次数

GitLab Runner Docker Executor 中的缓存层 - Long Time DinD Container

我正在我的项目中研究 GitLab CI,我创建了一个图像来进行我的测试和构建。当我在 docker executor 中运行它时,每个作业都需要从一开始就下载图像。我需要缓存层和拉取的图像以改善我的构建和部署时间(5 分钟,使用不安全选项最多 1 分钟)。

我搜索了多个链接和多个文章,很多人都有同样的问题。但是,GitLab 团队并没有解决这个问题。而且社区没有可靠且安全的解决方案。下面的链接遵循同样的问题:

  1. 最佳答案不起作用:在 gitlab ci docker executor 中存储层
  2. 多次更改绕过问题,但没有任何效果:https : //blog.scottlogic.com/2018/02/09/multi-dind-ci-boxes.html
  3. 不使用挂载docker.sock 的讨论https : //gitlab.com/gitlab-org/gitlab-foss/issues/17769
  4. 使用挂载docker.sock 的讨论:https : //jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
  5. 构建一个长时间的容器(不要和我一起工作):https : //medium.com/@tonywooster/docker-in-docker-in-gitlab-runners-220caeb708ca
  6. 不挂载docker.sock 的文档:https : //docs.gitlab.com/ce/ci/docker/using_docker_build.html#use-docker-in-docker-executor
  7. 卷配置示例:https : //github.com/ayufan/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md#the-runnersdocker-section

最可能的方法(使用层缓存)是使用单独的容器并使运行器连接到它,并从中触发执行。这样,所有层都将位于“无限生命”容器中,并且不会在阶段结束时丢失所有缓存。考虑将docker.sock作为挂载公开的方法不仅不安全,而且在容器之间共享文件时也存在许多问题,因为它们都是兄弟姐妹,而不是共享卷的父子。

使用无限生命容器的方法如下所示:

docker run --privileged --name gitlab-dind -d --restart=always  docker:19-dind --storage-driver=overlay2
Run Code Online (Sandbox Code Playgroud)

或者

docker network create gitlab-runner-net

docker run --privileged --name gitlab-runner-dind --network gitlab-runner-net --publish=2375:2375 --publish=2376:2376 -d docker:19-dind …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner dind

8
推荐指数
1
解决办法
1392
查看次数

无法连接到 tcp://localhost:2375/ 处的 Docker 守护程序。docker 守护进程是否正在运行。在 GitLab 上

我正在尝试在 GitLab 中构建 CI 管道。我想问一下在 GitLab CI 中工作的 docker。

从这个问题:https : //gitlab.com/gitlab-org/gitlab-runner/issues/4501#note_195033385

我遵循两种方式的说明。使用 TLS 而未使用 TLS。但它仍然卡住了。哪个错误相同

无法连接到 tcp://localhost:2375/ 处的 Docker 守护程序。docker 守护进程是否正在运行

我已尝试解决此问题。跟着下面,

1)启用TLS

其中使用 .gitlab-ci.yml 和 config.toml 在 Runner 中启用 TLS。

这是我的.gitlab-ci.yml

image: docker:19.03
variables:
  DOCKER_HOST: tcp://localhost:2375/
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: "/certs"
  IMAGE_NAME: image_name

services:
  - docker:19.03-dind

stages:
  - build

publish:
  stage: build
  script:
    - docker build -t$IMAGE_NAME:$(echo $CI_COMMIT_SHA | cut -c1-10) .
    - docker push $IMAGE_NAME:$(echo $CI_COMMIT_SHA | cut -c1-10)
  only:
    - master   
Run Code Online (Sandbox Code Playgroud)

这是我的config.toml

[[runners]]
  name …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner

8
推荐指数
2
解决办法
2万
查看次数

在 Docker 场景中,在 Docker 中挂载 `/var/run/docker.sock` 的结果是什么?

我读过Can Anybodyterpret docker.sock来了解/var/run/docker.sock它的作用,但它在 GitLab CI 的Use Docker socket binding中的使用让我感到困惑。

这是他们的注册命令示例gitlab-runner

sudo gitlab-runner register -n \
  --url https://gitlab.com/ \
  --registration-token REGISTRATION_TOKEN \
  --executor docker \
  --description "My Docker Runner" \
  --docker-image "docker:19.03.12" \
  --docker-volumes /var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

我看到可以从两个地方获取生成的容器docker

  1. Unix 套接字/var/run/docker.sock
  2. docker包含在基础映像中的二进制文件docker:19.03.12

这不是PATH冲突吗?我认为应该是其中之一,我可以docker从主机的 unix 套接字或基本映像中获得使用的能力。

我认为--docker-image应该是ubuntu:latest或者不带有 的东西docker,因为已经来自主机套接字PATHdocker或者,可以移除 docker 套接字安装座。

关于 的双重包含,实际上发生了什么docker

unix-socket docker gitlab-ci gitlab-ci-runner docker-in-docker

8
推荐指数
1
解决办法
1万
查看次数

gitlab-runner 的 git 克隆失败,并显示“SSL CA 证书有问题(路径?访问权限?)”

几个月来,我遇到了gitlab-runner随机失败的问题,日志如下:

Running with gitlab-runner 13.7.0 (943fc252)
  on <gitlab-runner-name> <gitlab-runner-id>
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:00
Running on <hostname>...
Getting source from Git repository
00:00
Fetching changes...
Reinitialized existing Git repository in /var/gitlab-runner/builds/<gitlab-runner-id>/0/<gtlab-group>/<gitlab-project>/.git/
fatal: unable to access 'https://gitlab-ci-token:[MASKED]@<hostname>/<gtlab-group>/<gitlab-project>.git/': Problem with the SSL CA cert (path? access rights?)
ERROR: Job failed: exit status 1
Run Code Online (Sandbox Code Playgroud)

这一行是关键的一行:

fatal: unable to access 'https://gitlab-ci-token:[MASKED]@<hostname>/<gtlab-group>/<gitlab-project>.git/': Problem with the SSL CA cert (path? access rights?)
Run Code Online (Sandbox Code Playgroud)

我尝试取消注册跑步者并注册一个新跑步者。一段时间后,它也因相同的错误而失败(第一次运行通常运行良好)。
此外,其他机器上的运行程序也可以正常工作,并且不会因上述错误消息而失败。

我认为该问题是由CI_SERVER_TLS_CA_FILE以下位置的文件丢失引起的:

/var/gitlab-runner/builds/<gitlab-runner-id>/0/<gtlab-group>/<gitlab-project>.tmp/CI_SERVER_TLS_CA_FILE …
Run Code Online (Sandbox Code Playgroud)

ssl gitlab gitlab-ci-runner

8
推荐指数
1
解决办法
6102
查看次数

如何使用 docker 执行器禁用同一个 gitlab 运行器上的并发作业?

我正在使用 gitlab 社区版 14.4.1 以及一个版本 14.4.0 的 gitlab 运行程序。其配置如下:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "My runner"
  limit = 1
  url = "https://my-gitlab-instance.com"
  token = "my-gitlab-token"
  executor = "docker"
  [runners.custom_build_dir]
    enabled = true
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "gitlab/dind:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/builds:/builds:rw", "/cache"]
    shm_size = 1000000000
Run Code Online (Sandbox Code Playgroud)

特别注意两个选项

concurrent = 1
Run Code Online (Sandbox Code Playgroud)

[[runners]]
  limit = 1 …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner

8
推荐指数
1
解决办法
4299
查看次数