在AWS spot实例通过 Github Runner使得CI更灵活

本文介绍了如何在AWS Spot实例上配置GitHub Actions自托管运行器,以便以低成本运行CI作业。自托管运行器适用于私有仓库和需要高级硬件的情况。通过使用Spot实例和自动缩放组,即使实例被中断,也能确保运行器的持续运行。配置包括创建启动模板、自动缩放组,并在实例上安装和配置运行器。

在这里插入图片描述

本文介绍如何在 AWS spot实例上设置 GitHub Actions 自托管运行器。但在此之前,我们先来聊聊什么是自托管 GitHub 运行器,为什么我们应该用它。

什么是 GitHub Actions 运行器?

GitHub Actions 运行器是一种在机器上运行 GitHub Actions 工作流中作业的应用程序。
您可以使用在 GitHub 服务器上运行的现成 GitHub 托管运行器(Windows、Ubuntu 或 MacOSX,每个都有特定硬件),也可以使用您自己环境中的自托管运行器。

GitHub 运行器可用于:

  • 编译
  • 运行测试
  • 静态代码分析 (SCA)
  • 构建容器图片

等等!

我们之前在这篇文章中讨论过如何在 C++ 项目中使用 GitHub 操作,并且还在这篇文章中讨论过如何将其与 Incredibuild 结合使用。今天,我们将重点介绍如何使用 GitHub 操作来触发 AWS spot实例上的操作。

为什么使用自托管运行器?

如果您想要快速轻松地运行工作流,那么 GitHub 托管运行器会是一个非常好的选择。但是,在某些情况下,自托管是您的最佳选择(与 GitHub 托管运行器相反):

  • 您正在使用一个私有仓库,并且不希望在运行作业的每一分钟都要花钱。
  • 您正在运行一个复杂作业,并且所用机器的硬件需要优于 GitHub 托管运行器的机器硬件

您可以在 GitHub 文件中找到关于自托管运行器的更多信息。

什么是 AWS spot实例?

AWS 提供了各种可在云上部署的实例类型,例如按需实例、预留实例和spot实例。

这三种实例类型在运行时都具有相同的功能,而定价是唯一的区别。按需实例是没有长期承诺的实例,您必须支付一定的每秒费率。预留实例是在特定时间段内以低于按需实例的每秒费率租用的实例。

与前两个实例不同,spot实例使用备用 AWS 容量,并且价格是这些实例类型中最低的(比按需价格低 90%)。 然而,这里有一个问题。由于您正在使用未使用的资源,您的实例可能会被中断(带有 2 分钟通知)。

尽量避免将spot实例用于包含敏感信息的有状态应用程序、数据库或工作负载。

对于应用测试、持续集成、数据分析、图像渲染等运行时间短且可中断的无状态应用,spot实例是理想的选择。

那我们该怎么办?

在此例中,工作流将使用 Flake8 和 Pylint 验证仓库中 Python 文件的语法(当然,任何其他工作流也可以)。

您需要设置一个 AWS spot 实例来运行 GitHub Actions 自托管运行器,并将其配置为在 AWS 将其中断时重新部署,从而以最低成本提高持续集成 (CI) 作业的灵活性。

该自托管运行器将执行工作流作业。

用于部署spot实例的所有文件都能在此 GitHub 仓库的 aws-files 目录下找到。在此仓库中,还能找到 GitHub Actions 工作流示例。

预排先决条件:

创建和配置spot实例

创建并正确配置spot实例时,只需要使用 3 个文件。

1.user-data.sh:一个 Bash 脚本文件,包含将在启动时在实例上运行的命令。在我们的例子中,脚本将在已部署的每个实例上运行,甚至是在用于替换中断的spot机器的新实例上运行。该文件中包含一个脚本,用于安装和配置自托管运行器并启动其服务。(有关 user-data.sh 文件的更多信息,请参阅 AWS 文件)。

#!/bin/bash

github-user="Your GitHub Username"
github-repo="Your GitHub Repository name"
PAT="Your Super Secret PAT"

# Download jq for extracting the Token
yum install jq -y

# Create and move to the working directory
mkdir /actions-runner && cd /actions-runner

# Download the latest runner package
curl -o actions-runner
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值