GitHub Action Rerunner

초무 @2chanhaeng@hackers.pub

GitHub Action Rerunner

失敗したGitHub Actionsをチームメンバーが直接再実行できるように権限を委任するウェブアプリケーションです。

🎯 なぜ作ったのか?

GitHub Actionsが失敗した場合、再実行するには対象リポジトリに対するWrite権限が必要です。しかし、セキュリティ上の理由からすべてのチームメンバーにWrite権限を与えることは難しいです。

GitHub Action Rerunnerはこの問題を解決します。リポジトリのオーナーがトークンを登録すれば、チームメンバーは自分に割り当てられたPRの失敗したActionのみを再実行でき、リポジトリに対する直接的な権限なしでもCI/CDを再度実行できます!

✨ 主な機能

リポジトリオーナー (Owner)

  • 📦 個人および組織リポジトリの登録
  • 🔑 GitHub Personal Access Tokenの登録(暗号化保存)
  • 🔗 共有可能な固有リンクの生成
  • 👀 すべての失敗したPRの確認と再実行
  • ⚙️ リポジトリ設定の管理

チームメンバー (Assignee)

  • 📋 自分に割り当てられたPRリストの確認
  • 🔄 失敗したGitHub Actionをワンクリックで再実行
  • 📊 ワークフローステータスのリアルタイム確認

アカウント管理

  • 🔐 GitHub OAuth ログイン
  • 👥 複数のGitHubアカウント連携サポート
  • 🔀 アカウント間の簡単な切り替え

🛠 技術スタック

  • Frontend: Next.js 16 (App Router), React 19, Tailwind CSS 4
  • Backend: Next.js API Routes
  • Authentication: NextAuth.js v5 (GitHub OAuth)
  • Database: PostgreSQL + Prisma ORM
  • GitHub API: Octokit

🚀 直接デプロイする方法

現在のプロジェクトは既にデプロイされていますが、機密性の高いトークンを扱うため、直接デプロイしたい場合は以下のガイドを参考にしてください。

1. リポジトリのプル

リポジトリを取得します。

2. 環境変数の設定

.envファイルを作成し、以下の値を設定してください:

# DB (PostgreSQL)
DATABASE_URL="postgresql://..."
DIRECT_URL="postgresql://..."

# NextAuth.js
AUTH_SECRET="use `npx auth secret`"
AUTH_GITHUB_ID="your-github-oauth-app-id"
AUTH_GITHUB_SECRET="your-github-oauth-app-secret"

# Token Encryption (32文字)
ENCRYPTION_KEY="your-32-character-encryption-key"

3. GitHub OAuth Appの作成

  1. GitHub Developer SettingsでOAuth Appを作成
  2. Authorization callback URL: http://localhost:3000/api/auth/callback/github
  3. Client IDとClient Secretを環境変数に設定

4. 開発サーバーの実行

# 依存関係のインストール
pnpm install

# Prismaクライアントの生成
npx prisma generate

# データベースマイグレーション
npx prisma migrate dev

# 開発サーバーの実行
pnpm dev

http://localhost:3000で確認してください。

📖 使用方法

リポジトリの登録(オーナー)

  1. GitHubでログイン
  2. ダッシュボード → リポジトリ登録
  3. 登録するリポジトリを選択
  4. 設定ページでPersonal Access Tokenを登録
    • トークンにはrepoおよびactions権限が必要
  5. 生成されたリンクをチームメンバーと共有

Actionの再実行(チームメンバー)

  1. 共有されたリンクにアクセス
  2. GitHubでログイン
  3. 自分に割り当てられたPRリストを確認
  4. 失敗したワークフロー横の「Rerun」ボタンをクリック

🔒 セキュリティ

  • Personal Access TokenはAES-256-GCMで暗号化して保存されます。
  • チームメンバーは自分に割り当てられたPRのActionのみ再実行できます。
  • すべてのAPIリクエストはセッションベースの認証を経ます。
7

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/019abf2b-0d13-7fd4-afd8-d9f0851b8b4f on your instance and reply to it.