GitLab CI Job卡住无匹配build-docker-image标签的活跃Runner如何解决
问题根因
build-docker-image任务持续pending是因为GitLab未调度到符合要求的Runner,结合配置判断核心问题是任务标签与现有Runner标签不匹配:
配置中可正常运行的build-app、test任务均绑定build标签,说明项目/组下当前在线的可用Runner都携带build标签,但Docker构建任务被单独配置了build-docker-image标签,无任何在线Runner匹配该标签,任务无法分配执行资源。
错误提示列出的另外两类诱因也需同步排查:
- 无处于在线激活状态的Runner
- 任务运行在受保护分支,但对应Runner未开启受保护分支执行权限
修复方案
- 对齐任务标签
无需专属Runner构建镜像的场景下,直接将build-docker-image任务的标签修改为和其他正常任务一致的build即可,配置片段参考:
如果需要为镜像构建分配专属Runner,进入项目「设置>CI/CD>Runners」页面,给目标Runner添加build-docker-image: stage: build-docker-image variables: GIT_DEPTH: 5 image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] dependencies: - build-app tags: - build # 替换原有build-docker-image标签 script: - mkdir -p /kaniko/.docker - echo $GCP_DOCKER | base64 -d > /kaniko/.docker/config.json - >- /kaniko/executor --context "${CI_PROJECT_DIR}" --dockerfile "${CI_PROJECT_DIR}/Dockerfile" --destination "us.gcr.io/mycompany-ops/${CI_PROJECT_NAME}:${CI_COMMIT_SHORT_SHA}" --build-arg GIT_SHA=${CI_COMMIT_SHORT_SHA} --build-arg GIT_TAG=${CI_COMMIT_TAG} --build-arg BUILT_ON="$(date)"build-docker-image标签,同时确认Runner处于在线、未暂停状态。 - 校验受保护分支权限
若任务运行在main等受保护分支,需在Runner配置页勾选「Run on protected branches」,开放受保护分支任务执行权限。 - 清理无效配置
当前build-docker-image任务下when:字段为空,后续注释了原main分支触发规则,空字段虽不会直接阻断运行,但可能触发配置解析异常,直接删除空when:行和注释掉的only规则即可,默认配置下任务会在前序build-app、test阶段执行成功后自动运行。
内容的提问来源于stack exchange,提问作者Woodsman
相关产品推荐
相关产品推荐

