Terraform-aws-github-runner: 自动创建离线跑步者

创建于 2021-02-06  ·  11评论  ·  资料来源: philips-labs/terraform-aws-github-runner

当前方法要求我们alwsys重新注册一个离线赛跑者。 那些离线赛跑者被github每60天删除一次。 因此,使该过程自动化以保持1个脱机运行程序是很方便的,这样我们就可以缩小到0。

潜在解决方案方向

通过ED2实例注册

使用与我们使用带有额外lambda的跑步者相同的机制,该lambda仅在配置步骤之前执行用户数据。 并确保ec2实例已关闭

反向egineer github配置过程

根据反向工程创建使用github http调用的lamda,请参阅https://github.com/actions/runner/issues/558

在Lambda中运行配置

创建一个可以通过lambda层执行配置的lambda

enhancement help wanted

最有用的评论

@npalm我已经弄清楚了注册跑步者所涉及的大部分逻辑,URL等。 我计划制作一个python模块来使用python 3x和请求来处理此问题。 这可能是这个周末我下班时。

如果您希望自己实施,可以在此之前分享我收集的有关该过程的笔记。

老实说,我想花更多的时间来跟踪整个过程,这样它实际上也可以拉动并执行工作流程,但是对我来说,新的跑步者注册是必须的。

基本上,我发现这个过程有效:
使用pat或app凭据通过api获取跑步者令牌
将令牌发布到秘密端点,使用新的秘密端点和jwt接收回json数据
使用jwt通过身份验证承载头进行身份验证,使用新显示的端点,可以查询现有的“代理”(在api中称为它们),添加新的代理或更新现有的“代理”。

显然,其中涉及更多细节,包括创建RSA密钥和一堆标题。 我没有比注册更进一步...

所有11条评论

@npalm我已经弄清楚了注册跑步者所涉及的大部分逻辑,URL等。 我计划制作一个python模块来使用python 3x和请求来处理此问题。 这可能是这个周末我下班时。

如果您希望自己实施,可以在此之前分享我收集的有关该过程的笔记。

老实说,我想花更多的时间来跟踪整个过程,这样它实际上也可以拉动并执行工作流程,但是对我来说,新的跑步者注册是必须的。

基本上,我发现这个过程有效:
使用pat或app凭据通过api获取跑步者令牌
将令牌发布到秘密端点,使用新的秘密端点和jwt接收回json数据
使用jwt通过身份验证承载头进行身份验证,使用新显示的端点,可以查询现有的“代理”(在api中称为它们),添加新的代理或更新现有的“代理”。

显然,其中涉及更多细节,包括创建RSA密钥和一堆标题。 我没有比注册更进一步...

@gertjanmaas我想你会喜欢上面的评论

@ miked63017让我知道您是否不了解它。 我们也在寻找这个,所以我将有一些时间来处理它。

编辑:不确定是否看到了,但这是针对Python的最新发布: https

@npalm @mcaulifn这是一个链接,它仍然是beta版,并且没有很好的文档记录,但是我想我们通常可以对Runners / Actions API讲同样的话:-)

https://github.com/miked63017/pyghrunner

@mcaulifn在RE到ghapi模块看起来很酷,但大多数这些调用在API的无证件,并可能有所变动。

总体看来,它应该工作。 您是否打算将其添加到此仓库中?

@gertjanmaas有什么意见吗?

@npalm @mcaulifn不确定我是否有上下文将其添加到此仓库中,我个人正在GKE运算符中进行类似操作,但认为它可以帮助其他人共享一些简单的代码以与其他项目集成。 似乎是对此功能的相当普遍的要求。 如果您希望我通过PR在这里添加内容,我也许可以花一些时间在这个周末。

我快速浏览了一下python代码,这似乎可以确认我一段时间前尝试进行反向工程时所看到的内容。 如果可以在这里实现,那就太好了。 厌倦了手动添加离线跑步者:P

@gertjanmaas (在私有库中)运行此代码(等效)的位置,我们只是定期运行少数方法,或响应事件,然后覆盖以前的“虚拟运行程序”。 我们基本上只是将其用作占位符,因此作业会排队而不是失败,因为不存在带有标签的运行器。 然后,我们查看作业的详细信息,并根据需要使用适当的标签并带有--once标志来启动适当的运行器。

我仍然有进一步研究计划,以创建一个完全自定义的运行器,很可能是用python编写的,然后可以将其嵌入其他地方。 对我来说,这还没有成为当务之急。

如何取消跑步者的注册?

脱机运行程序基本上需要每30天重新创建一次,以使组织中永远不会有0个运行程序。

这也应该是自动化的。

此页面是否有帮助?
0 / 5 - 0 等级