我最近安装了GitLab并尝试使用GitLab CI。我在我的GitLab服务器中成功启用了GitLab CI并成功安装了CI Runner(在Windows上,如果这是相关的)。我为Windows CI 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却没有。它似乎只选择一个跑步者。
更新2:升级为'GitLab CI 7.14.1 2dee1b3',但同样的行为仍然存在。
更新3:在Scientific Linux计算机上添加了第三个跑步者。它已注册并分配了项目,但只执行了一个运行程序(目前是Debian CI Runner)。
GitLab CI 7.12.0 e96755c
答案 0 :(得分:7)
当触发gitlab CI的构建时,它将执行.gitlab-ci.yml文件中列出的作业。将这些作业视为构建中的独立,并发步骤。这些工作由任何能够完成该工作的可用跑步者执行。但是,在我认为你被绊倒的地方,一项工作将只完成一次,并由第一个可用的跑步者完成。将跑步者视为资源池,而不是构建步骤。拥有多个运行程序允许您并行执行作业。
如果每个跑步者每次都要执行一项工作,请尝试使用标签。 E.g:
job1:
tags:
- windows
script:
- job command 1
- job command 2
job2:
tags:
- debian
script:
- job command 1
- job command 2
job command 1
和job command 2
等等,是您希望自己的工作执行的步骤,windows
和debian
是您要做的标记分配给你的跑步者。基本上你只是用不同的标签创建相同的工作,每个跑步者一个工作。然后,您需要确保每个跑步者都有您为其工作指定的标签。您可以通过在gitlab CI中编辑跑步者来完成此任务。
答案 1 :(得分:0)
它作为源代码或简单的omnibus包分发,以便在其中一个受支持的Linux发行版上安装。但是,有些地方使得它很难使用,其中之一就是:
尝试使用Docker。
重要的是,每次构建项目时,它都将在干净的环境中运行,而不会从以前的构建中遗留任何内容。只需几个简单的命令就不必安装任何依赖项,因为Docker将下载运行测试所需的所有内容。
希望这有帮助。