几天来我一直在努力寻找解决方案。
我的 gitlab runner 无法连接到 git repos,错误是:fatal: unable to access 'https://gitlab.com/project.git/': Could not resolve host: gitlab.com
我尝试了几种解决方案:
但我认为问题出在我机器(debian ovh)的DNS上,我不知道如何解决。
实际上,
我的 ci cd 是:
stages:
- docker
back:docker:
stage: docker
tags:
- wellcov-runner
image: docker:latest
services:
- docker:dind
before_script:
- echo -n $MAIN_REGISTRY_PASSWORD | docker login -u $MAIN_REGISTRY_USER --password-stdin $CI_REGISTRY
variables:
# Pushing into the shared Wellcov container registry (main repository)
IMAGE: $MAIN_REGISTRY/wellcov-back-end:$CI_COMMIT_REF_NAME
cache:
paths:
- target/
script:
- echo "Gitlab CI - Building back-end ${CI_COMMIT_REF_NAME} docker"
- docker build -t $IMAGE . --build-arg MAVEN_IMAGE=$MAVEN_IMAGE --build-arg UBI_IMAGE=$UBI_IMAGE
- docker push $IMAGE
转轮参数:
concurrent = 1
check_interval = 0
shutdown_timeout = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "wellcov-runner"
url = "https://gitlab.com/"
id = 22344137
token = "...."
token_obtained_at = 2023-04-01T17:10:09Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.docker]
tls_verify = false
image = "ruby:2.7"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
shm_size = 0
我也怀疑容器的端口不是服务的8093/tcp
我应该向 iptables 添加 dnas 规则还是更新容器以便它在端口 8093/tcp 上运行
码头服务 ls :
ID NAME MODE REPLICAS IMAGE
x4lq3jnshtii gitlab_runner replicated 1/1 gitlab/gitlab-runner:latest ***:8093->8093/tcp**
Docker 容器 ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
652d53ee4780 gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 14 hours ago Up 14 hours gitlab_runner.1.m3wt71h3f5eldppib83j3uvzj
感谢您的帮助
重新启动您的 docker 实例。例如:
systemctl restart docker
。
这可能会像在类似案例中看到的那样修复它。我也遇到过一次。
检查您的存储库权限,这可能是那个而不是 docker 的问题。它可能缺少访问权限或配置错误等。
可能与防火墙有关。
有一个设置你可以在 gitlab-runner 的 config.toml 中传递:
[[runners]]
...
[runners.docker]
network_mode= <----- THIS
此设置将告诉 gitlab-runner 在启动时将容器放置在哪个网络中,因此如果您知道网络的名称,您的 gitlab 和 gitlab-containers 将在其上运行:
docker inspect --format='{{.NetworkSettings.Networks}}' <gitlab container id>
然后将其添加为网络模式(在这种情况下,网络名称将是
git-lab_default
。无论你有什么改变它):
[[runners]]
...
[runners.docker]
network mode= "git-lab_default"