gitlab ci yml图片和服务机制?

时间:2018-10-04 08:37:53

标签: image docker service yaml gitlab-ci

我不了解file.gitlab-ci.yml中关键字imageservices的机制。我们什么时候知道在哪个图像上执行关键字script的命令?

当我阅读gitlabci文档时,我很好地理解了关键字“图像”和“服务”的理论,因此我已经进行了测试,并设法通过wget与httpd服务进行交互,但是,实际上我无法理解图像的用途?

让我解释一下:)

首先,我创建了一个带有作业的结构,该作业通过不声明任何图像来制作“ uname -a”:

job_scriptWithDefaultImage:
  stage: gitlabtest1
  script:
    - uname -a

然后结果显示出在跑步者上运行的“ uname -a”:

$ uname -a
Linux runner-b41b332f-project-9060-concurrent-0 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 Linux

然后我只是在工作中添加一张图像,指定我想使用高山:

job_scriptWithAlpineImage:
  internship: gitlabtest2
  image: registry.hub.docker.com/library/alpine:latest
  script:
    - uname -a

结果是完全一样的,uname总是运行在跑步者身上,而不是我的高山...

$ uname -a
Linux runner-9cade5e3-project-9060-concurrent-0 4.4.0-130-generic #156-Ubuntu SMP Thu Jun 14 08:53:28 UTC 2018 x86_64 GNU/Linux

所以我一点都不明白:

  • 我的图像是干什么的?
  • 如何在管道作业script部分中的该映像中执行命令?

1 个答案:

答案 0 :(得分:0)

Docker使用主机的内核。正如您在uname -a输出中所看到的,它提供了跑步者的机器信息。这就是为什么不管容器如何您都得到相同输出的原因。您甚至可以在计算机上尝试。

https://stackoverflow.com/a/31012367/4551937

关于Gitlab Runner,您的service是独立的。它将附加并提供给您的作业调用它,就像它在它旁边运行一样。

您的工作将使用您用image标签指定的图像来运行script中列出的命令(您可以将它们链接在一起)。如果未指定映像,它将采用运行程序配置(可能是Ubuntu)中定义的默认映像。