GitLab Runner 实际应该在哪里运行?

问题描述 投票:0回答:2

我正在尝试使用 GitLab CI 设置持续集成/部署管道,并且我正在努力理解(并且在文档中没有真正找到任何信息)GitLab Runner 实际应该存在的位置。我应该在本地计算机上运行一个吗?是否应该有一个服务器只托管 Runner?

根据我的理解,运行程序的目的是执行由提交触发的作业。提交后,GitLab Runner 将尝试执行 .gitlab-ci.yml 文件中定义的作业。

我知道这些工作可以做很多事情,但作为一个起点,我只想通过 SSH 连接到服务器,并部署我的代码。

我的困惑来自于不明白跑步者实际生活和跑步的推荐地点是什么?将其存储在我的本地计算机上似乎可能存在问题,因为这将依赖于我的计算机处于打开状态并可用于部署工作。这是否意味着我们需要另一台服务器来供跑步者本身使用?

gitlab-ci gitlab-ci-runner
2个回答
7
投票

哪里?好吧,只要你愿意。 Gitlab 运行器以拉模式运行,即运行器联系服务器的 Web api 并检查作业,它还联系服务器上传所有日志。这意味着 gitlab 运行程序可以位于 NAT 之后,也可以非常动态。

SSH 执行器通过从运行器到目标的 SSH 连接来运行。这意味着带有运行器的机器必须有到目标服务器的路由。

至于你应该在哪里跑步?好吧,这取决于你。也许您需要偶尔在笔记本电脑上运行它以连接到本地虚拟机,也许您需要云中的一台强大的机器,也许您想在地下室的旧服务器上运行一台便宜的机器。也许三个都可以。


2
投票

正如文档所述,GitLab 运行程序是隔离的(虚拟)机器,通过 GitLab CI 的协调器 API 来获取作业。它们可以安装在每个发行版中。在配置之前,从管理/跑步者页面获取跑步者令牌。然后注册

 sudo gitlab-runner register

您可以在 VPS 上的 docker 镜像中使用 GitLab Runner,例如AWS。这是 runners-machine 的示例。驱动程序设置为amazonec2,有多个选项,例如access-keyregionsec-group

  [runners.machine]
    IdleCount = 1
    IdleTime = 1800
    MaxBuilds = 10
    OffPeakPeriods = [
      "* * 0-9,18-23 * * mon-fri *",
      "* * * * * sat,sun *"
    ]
    OffPeakIdleCount = 0
    OffPeakIdleTime = 1200
    MachineDriver = "amazonec2"
    MachineName = "gitlab-docker-machine-%s"
    MachineOptions = [
      "amazonec2-access-key=XXXX",
      "amazonec2-secret-key=XXXX",
      "amazonec2-region=us-central-1",
      "amazonec2-vpc-id=vpc-xxxxx",
      "amazonec2-subnet-id=subnet-xxxxx",
      "amazonec2-zone=x",
      "amazonec2-use-private-address=true",
      "amazonec2-tags=runner-manager-name,gitlab-aws-autoscaler,gitlab,true,gitlab-runner-autoscale,true",
      "amazonec2-security-group=xxxxx",
      "amazonec2-instance-type=m4.2xlarge",
    ]

[runners.docker] 部分设置默认 Docker 镜像。

请参阅文档:https://docs.gitlab.com/runner/configuration/autoscale.html

© www.soinside.com 2019 - 2024. All rights reserved.