GitLab CI流水线未触发。

11
我已经为GitLab CI/CD编写了这个yml文件,配置并运行了一个共享runner。这是我第一次尝试,不确定哪里出错了。我在repo上拥有AngularJS项目,并且有一个gulp构建文件,在本地机器上完美运行。这段代码只需在我的runner存在的VM上触发它。但是在提交时,管道不显示任何作业。请告诉我需要纠正什么!
image: docker:latest

cache:
  paths:
    - node_modules/

deploy_stage:
  stage: build
  only:
    - master
  environment: stage
  script:
  - rmdir -rf "build"
  - mkdir "build"
  - cd "build"
  - git init
  - git clone "my url"
  - cd "path of cloned repository"
  - gulp build
6个回答

9
你正在提交到哪个分支?你的流水线仅配置为运行在 master 分支提交上。
...
  only:
    - master
...

如果您想要其他分支的触发作业,则请从.gitlab-ci.yml文件中移除此限制。
不要忘记启用共享Runner(它们可能默认未启用),设置可以在GitLab项目页面下的设置 -> CI/CD -> Runner中找到。
更新:您的流水线触发器是否曾经在您的项目上起作用?
如果没有,那我建议您尝试配置简单的流水线来测试触发器是否正常工作:
test_simple_job:
  script:
    - echo I should execute for any pipeline trigger.

我正在提交到主分支,共享的Runner也已启用。 - Raagul L
你的流水线在这个项目中是否曾经工作过?你可以提交一些简单的流水线来测试一下你的项目是否能够正确触发任务(示例流水线在更新的答案中)。 - makozaki

4
我通过将 .gitlab-ci.yaml 重命名为 .gitlab-ci.yml 解决了这个问题。

为什么一开始它被命名为.gitlab-ci.yaml - Eric Aya
GitLab 的管道是在这个文件中编写的,.yml 和 .yaml 可以互换使用。 - Alex Omosa
我知道这些扩展名可以互换。但这不是我想问的 :) 我想知道的是,你为什么在这个文件中使用了 .yaml 而不是 .yml,这是怎么发生的。 - Eric Aya
@EricAya,在文本编辑器中手动创建文件时,可能会出现名称错误的情况。此时可以从另一个具有正常流程的项目中复制粘贴内容。这种情况偶尔会发生。 - 3pns

1

请查看https://status.gitlab.com以获取Runner服务的状态。我曾经遇到过一种情况,即服务故障阻止了我运行私有Runner。您需要等待所有状态恢复正常(在GitLab的语言中为“操作”)。


0
我也遇到了这个问题。我想记录一下原因,希望能帮助到其他人(尽管这不是原问题的严格答案,因为我的部署脚本更加复杂)。
在我的情况下,原因是我在.gitlab-ci.yml中有多个具有相同作业ID的作业。后面的作业基本上使前面的作业变得不可见。

# This job will never run:
deploy_my_stuff:
  script:
    - do something for job one

# This job overwrites the above.
deploy_my_stuff:
  script:
    - do something for job two

当我发现错误后,这显然是完全明显的。


0

我只是想补充一下,我遇到了类似的问题。我正在提交我的代码,但根本没有看到管道触发器。在gitlab或我的vscode中也没有错误声明。它之前运行得很完美。我的问题是因为我最近对yaml进行了一些无效的编辑。我将更改还原为已知的有效yaml代码,然后它再次工作并通过了。


0
在我的情况下,我直接在GitLab的网页上添加了.gitlab-ci.yml文件,但它没有起作用。流水线从未触发。
我在本地克隆了代码,删除了yml文件并提交了更改。之后再次添加该文件并再次提交和推送,这样就可以了。

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