仅使用单个GitLab CI Runner构建

7
我最近安装了GitLab并尝试使用GitLab CI。我在GitLab服务器上成功启用了GitLab CI,并成功安装了一个CI Runner(如果这有关的话,在Windows上)。我为Windows CI Runner启用了一个项目,当我提交到仓库时,Runner被执行,我可以看到构建过程。
我按照文档安装了第二个CI Runner(在Debian上)。我可以看到Debian CI Runner已注册,以及Windows CI Runner。Debian CI Runner分配了相同的项目。然而,当我提交到仓库时,只有Windows CI Runner被执行,Debian CI Runner没有尝试构建。
我犯了什么错误或者还需要哪些配置才能使其生效?我已经尝试重新注册Debian CI Runner,但未成功。
更新1:Debian CI Runner现在正在执行,但Windows CI Runner没有执行。它似乎只选择单个Runner。
更新2:升级到“GitLab CI 7.14.1 2dee1b3”,但行为仍然存在。
更新3:在Scientific Linux机器上添加了第三个Runner。它已注册并分配给该项目,但只有单个Runner执行(目前是Debian CI Runner)。
GitLab CI 7.12.0 e96755c。
2个回答

7
当GitLab CI触发构建时,它将执行在.gitlab-ci.yml文件中列出的作业。可以将这些作业视为构建中独立且并行的步骤。这些作业是由任何可完成该作业的可用runner执行的。然而,你可能会被绊倒的问题是,一个作业只能被第一个可用的runner完成一次。将runner视为资源池,而不是构建步骤。拥有多个runner可以让你并行执行作业。
如果你想每个runner都要执行同一个作业,请尝试使用标签。例如:
job1:
  tags:
    - windows
  script:
    - job command 1
    - job command 2

job2:
  tags:
    - debian
  script:
    - job command 1
    - job command 2

在GitLab CI中,您可以通过为不同的runner分配标签来创建相同但在不同runner上运行的作业。其中,job command 1job command 2等是您希望作业执行的步骤,而windowsdebian则是您将分配给runner的标签。您只需为每个runner创建一个相同的作业,但分配不同的标签即可。然后,您需要确保每个runner都具有其作业所指定的标签。您可以通过编辑gitlab CI中的runner来实现此目的。
以下是具体步骤:
  1. 进入Runners
  2. 向下滚动到“为该项目激活的Runner”
  3. 单击编辑符号
  4. 将标记添加到runner中
  5. 单击保存
有关标签的更多信息,请参见GitLab YAML自述文件

谢谢您的答复。我会尝试这个方法,并告诉您结果。 - hmjd
再次感谢,这正是我所需要的。 - hmjd
很酷,很高兴它对你有效!我们有一个类似的问题,需要在不同的环境中测试我们的构建。到目前为止,我还没有找到更好的方法来避免任务重复。 - Dizzyspiral
看起来您实际上可以在一个作业下指定多个“tags”部分。例如,如此所示:https://gist.github.com/dom96/1b393c507b62868ea7fc0c6d1d641a80 - dom96

0

它以源代码或作为一个简单的万能安装包分布在受支持的Linux发行版之一上。但是,有些领域使用起来相当困难,其中之一是:

  • Runner一次只能运行一个并发任务。如果您想要运行更多任务,则需要设置新服务器或创建附加用户来构建任务。

尝试使用Docker。

重要的是,每次构建项目时,它将在干净的环境中运行,没有任何先前构建留下的残余物。通过几个简单的命令,您无需安装任何依赖项,因为Docker将下载运行测试所需的所有内容。

希望这可以帮助。


我不打算在单个运行程序上运行多个构建。我有多个运行程序在不同的机器上。 - hmjd

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