はじめに
日々の開発で
- GitHub の Issue に課題を登録し、対応するブランチを作成する
- 課題に対応した後、プルリクエストでマージする
- マージ後、Issue はクローズする
という一連のサイクルでタスクの進捗や管理を行っています。
ところが、上記のサイクルを毎回手動で行っているのは煩わしいと感じたので、自動化できないか調べてみました。
今回調べたもの
GitHubActionsに Create Issue Branch というアクションがあり、自分が自動化したいことを実現してくれるので、利用してみました。
Create Issue Branch を利用するには、事前にインストールする必要があります。
動作
今回は、 Create Issue Branch の中から、次の2つの機能を利用してみました。
- Issueの登録時に特定の命名ルールでブランチを自動作成する
- 対応したブランチをプルリクエストのマージ時に、クローズさせる
他の機能や詳細については、こちらを参照してください。
Issueを追加すると、その番号に対応した issue-54 というブランチを自動で作成してくれました。
また、 issue-54 のコミットをプルリクエストでマージすると、 issue-54 に対応している Issue も自動でクローズしてくれます。
作成したymlファイル
以下のymlファイルは、次の3つのいずれかを実行した際に、動作します。
- Issue の登録
- Issue へのコメント投稿
- プルリクエストのクローズ
on:
issues:
types: [ assigned ]
issue_comment:
types: [ created ]
pull_request:
types: [ closed ]
name: CreateIssueBranch
jobs:
create_issue_branch_job:
runs-on: ubuntu-latest
steps:
- name: Create Issue Branch
uses: robvanderleek/create-issue-branch@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ブランチの命名については、以下を .github/workflows と並列に配置することで、設定できます。
# Issue作成時に自動的に作成されるブランチの名称ルールを設定する
# 組み込みの指定は以下です。”branchName: tiny”のように利用できます。
# tiny => iその後に発行番号が続きます。例:i15
# short => 単語のissue後に発行番号が続きます。例: issue-15
# full =>「issue」という単語の後に「issuenumber」の後に「issuetitle」を続けます。例:issue-15-Fix_nasty_bug
# 独自のルールを設定する場合に利用できるプレースホルダー名は以下を参照ください。
# https://github.com/robvanderleek/create-issue-branch/blob/main/tests/test-fixtures/issues.assigned.json
# '${issue.number}-${issue.title}' => Issueの番号-Issueのタイトル。例: ”37-ImprovePerformanceForReviewGrid” となる
branchName: 'issue-${issue.number}'
# プルリクエストのマージ後にIssueを自動的に閉じる機能の有効無効
# 自動的に閉じるには"issue-XX"あるいは"iXX"(XXはIssue番号)のようなブランチ名が設定されている必要がある。
autoCloseIssue: true
# trueの場合、Issue作成後、コメントを作成しないと自動ブランチ作成が行われない
# falseの場合、Assigneesが入れば自動でブランチが作成される。(IssuesAssignAuthor.ymlと組み合わせることでアサインも自動化可能)
silent: false
おわりに
今回はGitHubでIssue追加と同時にブランチを自動作成し、プルリクエストのクローズに併せてIssueを自動的にクローズする方法を行いました。
Create Issue Branch を用いることで比較的行いやすい実装でした。
まだまだ自動化できることはあるので、様々なところに目をつけて日々の作業の効率をよくしていきましょう。