forge

cisco-openApache-2.0活跃维护

在 AWS 上自托管 GitHub Actions 跑者的多租户平台,用 IaC 方式为多个租户仓库管理临时 EC2 跑者和 ARC/Kubernetes 弹性伸缩组。

ForgeMT is a multi-tenant platform for self-hosted GitHub Actions runners on AWS. It gives platform teams an IaC-driven way to operate ephemeral EC2 runners and ARC/Kubernetes runner scale sets for many tenant repositories.

v4.18.1发布于 2026-11-02 23:07 UTC214star12fork同步于 2026-11-10 12:04 UTC

怎么上手

由 README 提炼,执行前请确认
cd examples/deployments/platform/terragrunt/environments/prod/regions/eu-west-1/vpcs/main/tenants/acme
terragrunt init
terragrunt plan
terragrunt apply
硬件要求按 README 说明

README 未说明具体硬件要求;EC2 lane 需自备 AMI,ARC lane 需已有 EKS 集群与可达容器镜像。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

在 AWS 上自托管 GitHub Actions runner 的多租户平台,用 IaC 管理 EC2 与 ARC 运行器

在 AWS 上自托管 GitHub Actions 跑者的多租户平台,用 IaC 方式为多个租户仓库管理临时 EC2 跑者和 ARC/Kubernetes 弹性伸缩组。

核心能力

  • 为多个租户提供临时性 EC2 runner 与 ARC/Kubernetes 运行器规模集
  • 按租户隔离标签、IAM/OIDC 角色、网络、镜像与 runner 规格
  • 提供可复制的 Terragrunt 部署示例,覆盖平台、基础设施与集成
  • 内置镜像、ECR、清理、Renovate、冒烟测试等运维模式
  • 可选集成 Splunk、Teleport、OpenTelemetry、OpenCost 与 webhook relay

容易踩的坑

需先准备 S3 状态桶与 DynamoDB 锁表,并注册 GitHub App 把私钥存入 SSM;不要一开始就部署所有模块,最小可用安装是一个组织、一个租户、一条 lane;Splunk 等集成模块是可选的,不用时跳过对应示例与模块目录。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v4.18.1
  1. v4.18.1最新正式版2026-11-02 · 2026-11-02 23:07 UTC

    4.18.1 (2026-11-02)

    Bug Fixes

    • eks: apply Karpenter node class updates in place (#817) (e8369b7)
  2. v4.18.02026-10-02 · 2026-10-02 15:54 UTC
    查看更新说明

    4.18.0 (2026-10-02)

    Features

    • add enable_app_registry opt-out to wrapper modules (#764) (033fb47)
  3. v4.17.12026-10-01 · 2026-10-01 15:52 UTC
    查看更新说明

    4.17.1 (2026-10-01)

    Bug Fixes

    • arc: make storage class upgrades safe (#756) (cd26eb7)
  4. v4.17.02026-09-30 · 2026-09-30 10:01 UTC
    查看更新说明

    4.17.0 (2026-09-30)

    Features

    • add opt-out flag for deprecated AppRegistry (#748) (46c7a4e)
  5. v4.16.72026-09-28 · 2026-09-28 00:25 UTC
    查看更新说明

    4.16.7 (2026-09-27)

    Bug Fixes

    • arc: skip Karpenter resources for empty tenants (#743) (bf64539)

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    ForgeMT

    GitHub stars GitHub issues Release License Maintainer Docs OpenSSF Scorecard OpenSSF Best Practices CI Commits since latest release Contributors

    ForgeMT is a multi-tenant platform for self-hosted GitHub Actions runners on AWS. It gives platform teams an IaC-driven way to operate ephemeral EC2 runners and ARC/Kubernetes runner scale sets for many tenant repositories.

    Think of ForgeMT as the runner control plane and operating model, not only a Terraform module. The platform team owns GitHub App integration, runner images, AWS placement, tenant configuration, lifecycle cleanup, and optional observability. Tenant teams consume approved runs-on labels and AWS role access from their workflow YAML.

    Architecture Diagram

    What You Get

    • Ephemeral self-hosted GitHub Actions runner capacity in AWS.
    • EC2 runner lanes for full VM isolation, custom AMIs, Windows, macOS, ARM64, or heavier builds.
    • ARC runner lanes for Kubernetes-based runner scale sets on EKS.
    • Tenant boundaries for labels, IAM/OIDC role access, networks, images, runner specs, and GitHub App scope.
    • Copyable Terragrunt deployment examples for platform, infra, helpers, and integrations.
    • Day-2 operating patterns for runner images, ECR images, cleanup, Renovate, smoke tests, and optional Splunk/Teleport/OpenTelemetry/OpenCost integrations.

    When To Use It

    Use ForgeMT when you need:

    • self-hosted GitHub Actions runners inside your AWS accounts.
    • tenant boundaries for labels, IAM roles, networks, images, and runner specs.
    • reviewed IaC changes for tenant onboarding instead of manual runner setup.
    • one operating model for EC2 runners, ARC runners, or both.
    • repeatable cleanup, image, upgrade, and validation workflows.

    Do not start by deploying every module. The smallest useful install is one GitHub.com organization, one tenant, one runner lane, and one smoke workflow. Add helpers, EKS, Splunk, Teleport, OpenCost, OpenTelemetry, and webhook relay modules only when your operating model needs them.

    Before You Deploy

    Have these answers before applying the examples:

    DecisionMinimum answer
    GitHub targetGitHub.com or GHES URL, organization, runner group, and GitHub App installation scope.
    AWS placementAccount, region, VPC, subnets, security groups, and tenant AWS role access.
    State backendS3 bucket and DynamoDB lock table for Terraform or OpenTofu state.
    First laneEC2, ARC on EKS, or both. Start with one lane and add the other after the first smoke workflow.
    Runner imageAMI owner/name for EC2 runners or reachable container images for ARC runners.
    Tenant boundaryTenant name, generated labels, allowed repositories, IAM roles, and metadata ownership.
    IntegrationsWhich systems are mandatory now and which can be skipped until the runner path works.

    Pick EC2 first when you already have a runner AMI or need VM-level isolation. Pick ARC first when EKS is already available and the first workloads fit a Kubernetes runner model. You can skip EKS for an EC2-only first deployment.

    Module Layout

    ForgeMT modules are grouped by operating responsibility:

    CategoryPathPurpose
    Platformmodules/platformForge runtime modules for EC2 and ARC tenant runners.
    Infrastructuremodules/infraEKS foundation for ARC/Kubernetes runner scale sets.
    Helpersmodules/helpersAccount preparation and operations helpers such as AMI, ECR, S3.
    Integrationsmodules/integrationsOptional external systems such as Splunk, Teleport, and relays.
    Examplesexamples/deployments/...Functional Terragrunt roots grouped like the module layout.

    Splunk is optional. If your company does not use Splunk, skip the Splunk example folders, all modules/integrations/splunk_* modules, and modules/integrations/splunk_dependency_monitor.

    Quick Start

    Start with the platform path:

    1. Read Platform Engineer Quick Start and Minimal Install.
    2. Choose the first lane: EC2, ARC, or both.
    3. Copy examples/deployments/platform into your operations IaC repo.
    4. Replace the AWS, GitHub, VPC, runner image, and tenant values.
    5. Create or register the GitHub App and store the private key in SSM.
    6. Run terragrunt init, terragrunt plan, and terragrunt apply.
    7. Queue one smoke workflow with the generated runner labels.

    The first install path is the platform example:

    examples/deployments/platform
    

    After replacing the values and storing the real GitHub App PEM in SSM, run from the tenant folder:

    cd examples/deployments/platform/terragrunt/environments/prod/regions/eu-west-1/vpcs/main/tenants/acme
    terragrunt init
    terragrunt plan
    terragrunt apply
    

    For the full sequence, including backend bootstrap and GitHub App registration, use Bootstrap and Minimal Install.

    Read next:

    Tenant Usage

    After the platform team onboards a tenant, repository owners request the runner with labels generated by ForgeMT:

    ---
    name: Forge smoke
    
    on:
      workflow_dispatch:
    
    jobs:
      smoke:
        runs-on:
          - self-hosted
          - type:small
          - x64
          - ec2
          - tnt:acme
        steps:
          - run: echo "Forge runner is online"
    

    Tenant teams should use Tenant Usage for label, AWS role, ECR, and troubleshooting patterns.

    Learn More

    Technical background:

    Implementation foundations:

    Contributing

    Contributions are welcome via issues or pull requests. See CONTRIBUTING.md for details.

    License

    Apache 2.0. See LICENSE.

    Contact

    Track progress or open issues on GitHub: https://github.com/cisco-open/forge/issues