Lau*_*hel 8 gitlab docker gitlab-ci gitlab-ci-runner
我正在使用 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)
现在,我有一个管道,其中某些阶段有多个作业。从上面的运行器配置来看,我希望每个作业都会按顺序一个接一个地运行。然而,这些作业在同一个运行器上同时运行,导致大多数作业由于 git 锁而失败。
为什么会这样?如何真正禁用运行器中的并发?似乎禁用并发是我唯一的选择。事实上,我试图研究如何使其以并发方式工作,例如在我的.gitlab-ci.yml类似中GIT_CLONE_PATH定义
variables:
GIT_CLONE_PATH: ${CI_BUILDS_DIR}/${CI_CONCURRENT_ID}/${CI_PROJECT_NAME}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为$CI_CONCURRENT_IDgitlab 没有正确填充(它始终为 0,无论发生什么)。
增加跑步者的数量并不是一个解决方案,因为我仍然可以观察到完全相同的效果。有时,多个作业仍会在同一时间在同一个运行器上运行。不可能没有解决办法吧?我该如何解决这个问题?
最后,我想使用多个运行程序,但当然要分配最多一个作业/运行程序,否则我的管道不可靠(即它们可能会因为那些烦人的 git 锁错误而失败)。为了实现这一点,我需要禁用运行程序中的并发性。
如果您希望一次在第一阶段运行作业,您可以使用资源组选项。
job1:
resource_group: team
script:
- echo "Hello"
job2:
resource_group: team
script:
- echo "hai"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,job1 将运行,并且只有在它完成后,其他作业才会运行。
| 归档时间: |
|
| 查看次数: |
4299 次 |
| 最近记录: |