📝 はじめに
GitHub Issueの運用で「誰が担当するか」を毎回手動で決めるのは手間です。
この記事では、以下のような自動アサインワークフローをGitHub Actionsで実装する方法を紹介します:
- Issue作成 or ラベル追加がトリガー
- iOS・Androidチームから1名ずつランダムに抽出
- 除外リストを考慮(休職中・退職済みなど)
さらに、必要なPersonal Access Tokenの作成手順も画像付きで解説しています。
⚙️ 実現すること
- GitHub CLI (
gh
) を使って組織のチームメンバーを取得 - 除外リストにマッチしないメンバーからランダムで1名ずつ選出
- その2名をIssueにAssigneeとして自動追加
🧪 事前準備:トークン(PAT)の作成
GitHub CLIでチームメンバーを取得するには、以下のようにPersonal Access Token (classic) を発行し、権限を適切に付与する必要があります。
🔧 ステップ1:設定画面へ移動
サイドバーのメニューから Settings
→ Developer settings
→ Personal access tokens
を選びます。

🔧 ステップ2:「Generate new token (classic)」を選択

🔧 ステップ3:必要なスコープを付与
-
repo
(リポジトリ操作) -
read:org
(組織メンバーの読み取り)
⬇️ これが必要!

✅ トークン作成後は、GitHub Secrets
に ISSUE_TOKEN_COMMON
などわかりやすい名前で保存しておきましょう。
📄 実際のYAMLファイル(コメント付き)
name: Issue assignment
on:
issues:
types: [opened, labeled]
env:
EXCLUDE_LIST: |
user1
user2
...
jobs:
assign-random:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
token: ${{ secrets.ISSUE_TOKEN_COMMON }}
repository: my-org/my-repo
- name: Setup Exclude Pattern
id: setup
run: |
PATTERN=$(echo "$EXCLUDE_LIST" | grep -v '^$' | tr '\n' '|' | sed 's/|$//')
echo "exclude_pattern=^($PATTERN)$" >> $GITHUB_OUTPUT
- name: Load Teams
id: load_teams
env:
GH_TOKEN: ${{ secrets.ISSUE_TOKEN_COMMON }}
run: |
EXCLUDE_PATTERN="${{ steps.setup.outputs.exclude_pattern }}"
IOS_MEMBER=$(gh api orgs/my-org/teams/team-ios/members --jq '.[].login' | grep -v -E "$EXCLUDE_PATTERN" | shuf -n 1 || true)
echo "teamiOS=${IOS_MEMBER}" >> $GITHUB_OUTPUT
ANDROID_MEMBER=$(gh api orgs/my-org/teams/team-android/members --jq '.[].login' | grep -v -E "$EXCLUDE_PATTERN" | shuf -n 1 || true)
echo "teamAndroid=${ANDROID_MEMBER}" >> $GITHUB_OUTPUT
- name: Assign Users
env:
GH_TOKEN: ${{ secrets.ISSUE_TOKEN_COMMON }}
run: |
gh issue edit ${{ github.event.issue.number }} \
--add-assignee "${{ steps.load_teams.outputs.teamiOS }}" \
--add-assignee "${{ steps.load_teams.outputs.teamAndroid }}"
🔁 応用アイデア
-
labeled
イベント時に特定のラベルがついたら実行する条件分岐を入れる - Assigneeの選出ロジックに重みづけ(最近担当していない人を優先)を追加
- Botの投稿を除外(例:
if: github.actor != 'github-actions[bot]'
)
🏁 おわりに
GitHub Actionsでの自動化はCI/CDだけではなく、チーム運用にも活用できます。
小さな手間を減らして、開発体験を改善していきましょう!