【问题标题】:Start build on a windows ec2 with gitlab runner使用 gitlab runner 在 windows ec2 上开始构建
【发布时间】:2020-12-04 02:20:07
【问题描述】:

gitlab CI 新手。我有一个自定义的 windows ami(带有所需的预安装软件),我想在其中运行构建。

我的一个选择是让这个实例始终开启并在其上安装运行器,但这似乎是在浪费计算(我已经尝试过这种设置)。

我可以从 gitlab CI 启动实例吗?我意识到跑步者仍然需要在某个地方运行,可能在较低层的机器上。我参考了 gitlab 上提供的 AWS 自动缩放文档,但它强调了如何使用 docker 进行自动缩放。我不能使用 docker 设置,有点绑定到自定义图像。

如何在 ec2 实例中生成和运行我的管道?

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    Gitlab 不知道跑步者在哪里运行,他们只会知道跑步者是否连接,所以不,Gitlab 本身将无法启动实例。

    但是,您可以做的是专门使用一个小实例来访问 Gitlab API,以确定有多少待处理的作业以及有多少运行器可以使用它。如果没有跑步者但有工作要做,则启动一个跑步者实例。如果有跑步者但没有作业,请停止实例。

    以下是一些应该派上用场的 Gitlab API:

    • Runners API(获取跑步者列表、注册新跑步者、删除跑步者等):https://docs.gitlab.com/ee/api/runners.html
    • 管道 API(获取项目的管道、获取单个管道等)
    • 作业 API(获取管道作业、取消作业、重试等)

    以下是我将如何实现它: 首先,我会为最大跑步者定义一个阈值,并且在将跑步者增加 1 之前为最大挂起作业定义一个阈值。例如,也许我希望一次运行的跑步者不超过 10 个,队列中的作业不超过 6 个在我添加另一个跑步者之前(最多)。

    那么,

    • 点击 Runners API 以获取跑步者的数量。
    • 点击 Projects API 以获取所有启用管道的项目。
    • 为每个项目点击 Pipelines API 以获取所有待处理/正在进行的 Pipelines。
    • 为每个管道点击 Jobs API 以获取所有待处理的作业
    • 如果没有跑步者但有待处理的作业,请添加 1 名跑步者。
    • 如果跑步者超过 1 人但小于最大跑步者,并且超过作业阈值,则将 1 名跑步者添加到最大值。
    • 如果有超过 0 个运行器且没有待处理的作业,请销毁一个休眠运行器(并从 Gitlab 注销它,以便 Runners API 调用保持干净)。
    • 睡一两分钟,然后从顶部循环。

    这只是一个简单的示例,可以轻松扩展以满足您的需求。

    【讨论】:

      猜你喜欢
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 2021-12-24
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      相关资源
      最近更新 更多