【问题标题】:How do I associate a Gitlab Runner with a physical server/environment?如何将 Gitlab Runner 与物理服务器/环境相关联?
【发布时间】:2021-06-12 18:43:40
【问题描述】:

我正在尝试设置一个由 3 个阶段(开发、登台和生产)组成的开发环境,每个阶段都部署到自己的物理服务器上。我有一个额外的服务器配置了 GitLab 来处理源代码控制。我们有一个名为“main”的分支供开发人员使用。通常,开发人员会从 main 分支,处理他们的更改并合并回 main 触发管道,该管道使用带有 shell 执行器的 gitlab-runner 更新开发服务器。 一旦一些基本测试成功运行,我们现在希望这些提交进入登台服务器。我正在尝试在我们现有管道的末尾添加一个手动步骤,以便如果认为最后一次提交已准备好继续进行更密集的测试,则开发人员可以单击 GitLab Pipelines 中的运行按钮,触发部署到登台服务器。

我想不通的是,在执行部署作业时,应该使用与登台服务器关联的运行器,而不是在开发服务器上运行的运行器。我查看了环境,但没有看到将跑步者链接到特定环境的方法。我认为用“阶段版本”之类的东西标记提交可能会起作用,看起来可能会再次在开发服务器上重新运行管道。物理服务器设置是一项硬性要求,如何实现这一点。我知道能够使用容器会使这更容易,但由于其他原因我还不能这样做。

【问题讨论】:

    标签: gitlab-ci gitlab-ci-runner


    【解决方案1】:

    根据您的描述,您应该能够在所有三种环境中使用相同的跑步者。换句话说,Gitlab 中没有任何东西阻止您使用相同的运行器。但是,如果您有商业理由这样做,那么您正在寻找的是 GitLab CI 标签(不是 git 标签)。

    注册跑步者时,您可以为该特定跑步者指定标签。如果管道作业具有相同的标签,则该作业只能在具有该标签的运行器上运行。例如,如果只有某个跑步者安装了工作需要的某些特定软件,或者该跑步者可以访问外部资源但其他人没有,等等,这很有用。

    这是来自the docs的示例:

    windows job:
      stage:
        - build
      tags:
        - windows
      script:
        - echo Hello, %USERNAME%!
    
    osx job:
      stage:
        - build
      tags:
        - osx
      script:
        - echo "Hello, $USER!"
    

    在此示例中,windows job 具有标签 windows。据推测,带有windows 标签的跑步者在Windows 机器上,而osx job 在Mac 上运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多