一直试图建立可以构建码头图像的Gitlab CI,并且发现DinD最初仅针对不同的跑步者而启用,而博客建议它很快就会为共享的跑步者启用,
运行DinD需要在运行器中启用特权模式,在注册运行器时将其设置为标志,但无法找到共享运行器的等效机制
我正在尝试配置我的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出现问题.谢谢.
我正在尝试将 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 …
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-ci.yml(上的)中设置CodeQuality 时gitlab-ee 11.10,gitlab-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。不知道这是一个错字,还是在发布实际可用版本之前是否发布了文档。
我尝试按照以下说明进行操作,但很多事情尚不清楚:
我意识到include应该在stages定义之后添加该语句以使语法检查通过。
一个code_quality工作出现并通过:

(来源:cozyo.io)
但是,后来我从这个答案中得知,我需要创建一个.codeclimate.yml文件并以某种方式添加它.gitlab-ci.yml。该答案共有两个链接,可用于了解如何使用该链接,CodeClimate但我还没有找到添加的方法gitlab-ci.yml。我在与gitlab相关的页面中找到了一些示例,但没有使用include文档中描述的语句。
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 CI,我创建了一个图像来进行我的测试和构建。当我在 docker executor 中运行它时,每个作业都需要从一开始就下载图像。我需要缓存层和拉取的图像以改善我的构建和部署时间(5 分钟,使用不安全选项最多 1 分钟)。
我搜索了多个链接和多个文章,很多人都有同样的问题。但是,GitLab 团队并没有解决这个问题。而且社区没有可靠且安全的解决方案。下面的链接遵循同样的问题:
最可能的方法(使用层缓存)是使用单独的容器并使运行器连接到它,并从中触发执行。这样,所有层都将位于“无限生命”容器中,并且不会在阶段结束时丢失所有缓存。考虑将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 中构建 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) 我读过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。
/var/run/docker.sock。docker包含在基础映像中的二进制文件docker:19.03.12。这不是PATH冲突吗?我认为应该是其中之一,我可以docker从主机的 unix 套接字或基本映像中获得使用的能力。
我认为--docker-image应该是ubuntu:latest或者不带有 的东西docker,因为已经来自主机套接字PATH。docker或者,可以移除 docker 套接字安装座。
关于 的双重包含,实际上发生了什么docker?
unix-socket docker gitlab-ci gitlab-ci-runner docker-in-docker
几个月来,我遇到了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) 我正在使用 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)