这个任务被卡住了,因为该项目没有分配任何在线的Runner。请前往Runner页面。

216

我正在学习GitLab CI/CD。

我从官方安装了GitLab和GitLab Runner。每当我在Maven构建期间运行流水线时,作业就会卡住。我有一个注册的Runner,并且它对我的项目可用,但作业仍然卡住。

.gitlab-ci.yml

image: docker:latest
services:
- docker:dind

variables:
 DOCKER_DRIVER: overlay
 SPRING_PROFILES_ACTIVE: gitlab-ci

stages:
- build
- package
- deploy

maven-build:
 image: maven:3-jdk-8
 stage: build
 script: "mvn package -B"
 artifacts:
 paths:
  - target/*.jar

docker-build:
stage: package
script:
 - docker build -t registry.com/ci-cd-demo .
 - docker push registry.com/ci-cd-demo

k8s-deploy:
 image: google/cloud-sdk
 stage: deploy
 script:
  - echo "$GOOGLE_KEY" > key.json
  - gcloud container clusters get-credentials standard-cluster-demo -- 
  zone us-east1-c --project ascendant-study-222206
   - kubectl apply -f deployment.yml

我的运行设置

My shared runner

My project runner

当运行者已经与项目关联时出现错误消息:

Job error message

你能帮我吗?

8个回答

484

工作被卡住了,因为您的运行器有标签而您的工作没有。按照以下4个步骤使您的运行器能够无需标签运行:

enter image description here enter image description here

或者为您的工作设置标签。更多信息请参见:.gitlab-ci.yml配置您的工作-标签


20
这个跑步机的设置有点难以辨认 (^_-)-☆ - Yeheshuah
2
@JakubZáruba 我在哪里可以找到带有“运行未标记作业”的选项屏幕? - Frak
3
我现在深爱着你……我想知道为什么他们不直接告诉你,而要用那条信息 :( - genuinefafa
3
此外,如果您要使用的runner是由您注册的,请记住,即使在UI中列出并显示为活动状态,该runner仍可能无法工作,因为gitlab-runner服务未启动。我还必须运行gitlab-runner install && gitlab-runner start才能使其工作(在这种情况下)。 - jaguililla
我在寻找演示的跑步者设置时遇到了一些困难,它们并不在存储库的CI/CD设置下。相反,我可以在GitLab根帐户中找到它们:https://<mygitlabserver>/admin/runners/ - a.t.
显示剩余3条评论

11

对我而言相当简单,只需在我的电脑上运行gitlab-runner run命令。


这对我来说是有效的,但我不应该每次做一些更改时都要运行这个命令。你知道我可以做什么来自动化这个过程吗? - undefined

8

你可以使用以下语法在文件.gitlab-ci.yml中为你的任务打标签:

stages:
  - check
  - build
  - test
  - analyze
  - package
  - release
  - deploy
nohttp:
  stage: check
  tags:
    - dev

除此之外,不要忘记在项目的特定/共享 runner 中添加 "dev" 标签。

请问您能帮我解决一个疑问吗?我该如何在Gitlab中创建共享Runner?目前我已经创建了自定义Runner并且运行良好,但我的问题是它依赖于我的系统来创建构建(apk),否则就无法运行。是否可以使用不依赖于我的系统的共享Runner进行运行?请帮帮我,谢谢。 - Ravindra Kushwaha

6

请确保使用正确的标签,即与项目配置运行器相对应的标签。

在您的情况下,应该像这样:

maven-build:
 image: maven:3-jdk-8
 stage: build
 tags: my project ci-cd
 script: "mvn package -B"
 artifacts:
 paths:
  - target/*.jar

请问您能帮我解决一个问题吗?我该如何在Gitlab中创建共享Runner?目前,我已经创建了自定义Runner并且它可以正常运行,但我的问题是它依赖于我的系统来创建构建(apk),否则就会运行失败。是否可以使用不依赖于我的系统的共享Runner来运行?请帮我解决这个问题,谢谢。 - Ravindra Kushwaha

1
在我的情况下,我不得不修改管理区域中的标签,从'Tag1,Tag2'到'Tag1,Tag2'。空格导致了我的问题。

0
据我所知,普通用户无法检查GitLab服务器上的共享Runner是否设置为仅运行已标记的作业。
我建议GitLab将此信息添加到项目CI/CD设置页面中有关Runner的信息中,即可查看哪些Runner可用,它们运行的标签以及它们是否仅运行已标记的作业。

0
工作因为您没有给此 Runner 分配标签而被卡住了。
您可以前往设置并编辑此 Runner,使其能够无标签地运行作业。

0
请确保您的服务正在运行。 brew services start gitlab-runner // 相当于 gitlab-runner run

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接