LoginSignup
1
0

More than 1 year has passed since last update.

GitHubでIssue追加と同時にブランチを自動作成してプルリクエストのクローズに併せてIssueをクローズしたい

Posted at

はじめに

日々の開発で

  1. GitHub の Issue に課題を登録し、対応するブランチを作成する
  2. 課題に対応した後、プルリクエストでマージする
  3. マージ後、Issue はクローズする

という一連のサイクルでタスクの進捗や管理を行っています。
ところが、上記のサイクルを毎回手動で行っているのは煩わしいと感じたので、自動化できないか調べてみました。

今回調べたもの

GitHubActionsに Create Issue Branch というアクションがあり、自分が自動化したいことを実現してくれるので、利用してみました。

Create Issue Branch を利用するには、事前にインストールする必要があります。

動作

今回は、 Create Issue Branch の中から、次の2つの機能を利用してみました。

  • Issueの登録時に特定の命名ルールでブランチを自動作成する
  • 対応したブランチをプルリクエストのマージ時に、クローズさせる

他の機能や詳細については、こちらを参照してください。

Issueを追加すると、その番号に対応した issue-54 というブランチを自動で作成してくれました。
create-branch.png

また、 issue-54 のコミットをプルリクエストでマージすると、 issue-54 に対応している Issue も自動でクローズしてくれます。
close-issue.png

作成したymlファイル

以下のymlファイルは、次の3つのいずれかを実行した際に、動作します。

  • Issue の登録
  • Issue へのコメント投稿
  • プルリクエストのクローズ
createIssueBranch.yml
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-branch.yml
# 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 を用いることで比較的行いやすい実装でした。

まだまだ自動化できることはあるので、様々なところに目をつけて日々の作業の効率をよくしていきましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0