blog.dopana

Back

GitHub-hostedランナーからBlacksmithへCI/CDワークフローを移行するのは非常に簡単です。Blacksmithは完全なドロップインドロップアウトの互換性(ドロップイン代替)を備えているため、パイプラインを再構築したり、プラットフォームを変更したり、コアのYAML構文を書き換える必要はありません。

本記事では、Blacksmithへの移行手順、事前要件、そして5分以内で完了する2つの移行方法を詳しく解説します。

標準のGitHub-Hostedランナーにおける課題#

プロジェクトの規模が拡大するにつれて、CI/CDの実行時間は開発速度のボトルネックになります。GitHub標準のランナー(ubuntu-latest)には、vCPU性能やI/Oスループットの面で限界があります。

  • ビルド時間の長期化: Dockerイメージのキャッシュがネットワーク経由の取得となるため、時間がかかります。
  • コストの増加: 高スペックなGitHubランナーの利用時間が積み重なり、コストが増大します。
  • リソース不足: 大規模なテスト実行時にCPU不足が発生しやすくなります。
flowchart LR
    A[Commit Code] --> B[GitHub Workflow Triggered]
    B --> C{Runner Selection}
    C -->|標準| D[GitHub Standard Runner\n- 標準的な速度\n- ネットワーク経由キャッシュ]
    C -->|Blacksmith Drop-in| E[Blacksmith High-Perf Runner\n- 高性能vCPU\n- ローカルNVMeキャッシュ]
    D --> F[Build Time: 10-15 分]
    E --> G[Build Time: 3-5 分]

前提条件(Prerequisites)#

移行を開始する前に、以下のインフラ要件を満たしているか確認してください。

  • GitHub Organizationアカウントのみ対象: BlacksmithはGitHub Organization専用に構築されており、個人アカウント(Personal Account)には対応していません。
  • ネットワークアクセス(IP許可リスト): 組織で厳格なIP許可リストを運用している場合は、事前にBlacksmithのコントロールプレーンIPを許可リストに追加する必要があります。

方法1: 自動移行ウィザードの使用(推奨)#

最も簡単な方法は、リポジトリに対して自動的にPull Requestを生成する公式の移行ウィザードを使用することです。

  1. アカウント登録: Blacksmith Dashboardにアクセスし、アカウントを作成します。
  2. GitHub連携: BlacksmithにGitHub Organizationへのアクセス権限を付与します。
  3. ウィザードの実行: Dashboard内で移行したいリポジトリを選択します。
  4. PRの確認: ウィザードが .github/workflows/ ディレクトリをスキャンし、自動的にPull Requestを作成します。
  5. マージ: 変更内容を確認してPRをマージすれば、次のコミットからBlacksmith上で処理が実行されます。

方法2: 手動移行(1行の変更)#

手動で更新したい場合は、YAML設定ファイルの runs-on プロパティを変更するだけです。

対象のワークフローファイル(例: .github/workflows/ci.yml)を開き、ubuntu-latest を指定のBlacksmithランナーに書き換えます。

.github/workflows/ci.yml
# 移行前: GitHub標準ランナー
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

# 移行後: Blacksmithの高性能ランナー
jobs:
  test:
    runs-on: blacksmith-4vcpu-ubuntu-2404 // [!code ++]
    steps:
      - uses: actions/checkout@v4
yaml

[!TIP] steps 内の各アクションを変更する必要はありません。既存のGitHub Actions構文がそのまま利用可能です。

利用可能なランナーサイズ#

ワークフローの負荷に応じて適切なランナープロファイルを選択してください。

  • blacksmith-4vcpu-ubuntu-2404: 標準的なワークロード用。
  • blacksmith-8vcpu-ubuntu-2404: 中規模のテストやDockerビルド用。
  • blacksmith-16vcpu-ubuntu-2404: 大規模なテストスイートや大規模なコンパイル処理用。

[!NOTE] Blacksmithは、Ubuntu 22.04やARM64アーキテクチャが必要な場合にも対応するプロファイルを用意しています。

移行後に期待できる効果#

  • 超高速なネイティブキャッシュ: 既存の actions/cache ブロックはそのまま動作し、BlacksmithのローカルNVMeストレージを利用してキャッシュダウンロードが大幅に高速化されます。
  • Dockerビルドの最適化: docker/setup-buildx-action などのレイヤーキャッシュが最適化され、イメージ構築時間が大幅に短縮されます。
  • 詳細なアナリティクス: 実行完了後、Blacksmith Dashboardで実行履歴の比較や速度向上、コスト削減効果をリアルタイムに確認できます。
sequenceDiagram
    autonumber
    participant Dev as Developer
    participant GH as GitHub Actions
    participant BS as Blacksmith Runner
    participant NVMe as Local NVMe Cache

    Dev->>GH: Push Commit / PR
    GH->>BS: ジョブ起動 (runs-on: blacksmith)
    BS->>NVMe: ローカルNVMeからキャッシュ取得
    NVMe-->>BS: キャッシュレイヤーを返却
    BS->>BS: ビルド & テスト実行
    BS-->>GH: ステータス報告

参考文献#

  1. Blacksmith Quickstart Documentation
  2. Blacksmith - 2x Faster GitHub Actions for Half the Cost
  3. Want to make your GitHub Actions workflows faster?
  4. Blacksmith Observability & Dashboard