ポンコツエンジニアのごじゃっぺ開発日記。

いろいろポンコツだけど、気にするな。エンジニアの日々の開発などの記録を残していきます。 自動で収入を得られるサービスやシステムを作ることが目標!!

ファイル差分によってプルリクにラベルを自動で付けるactions/labelerの挙動を確認してみた【GitHub】

Pull requestを作成したときに、変更されたファイルによって自動でラベルを付けることは、GitHub Actionsのactions/labelerを使えば簡単に実現できます。

今回は、そのactions/labelerを使ってみようと思い、導入しつつ、挙動の確認をしてみたので、そのメモを残しておきたいと思います。

actions/labelerの導入

まずは、ラベルを自動でつける処理を実装します。

やり方はactions/labelerのリポジトリのREADME.mdに書かれているので、今回はそれを参考に作っていきたいと思います。

github.com

.github/labeler.ymlの作成

まずは、.github/labeler.ymlを作成します。

ここには、どのファイルが変更されたときにどのラベルを付けるかを定義します。

hoge:
- hoge/*

今回は雑にhogeディレクトリ内のファイルが変更されたらhogeというラベルを付けるというものを作成してみました。

workflowの作成

次にworkflowを作成します。こちらもREADME.mdに書かれている内容を真似します。

以下の内容で.github/workflows/labeler.ymlを作成します。

name: "Pull Request Labeler"
on:
- pull_request_target

jobs:
  triage:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/labeler@v3
      with:
        repo-token: "${{ secrets.GITHUB_TOKEN }}"

GITHUB_TOKENの設定が必要になるかもしれないです。ただ、自分の環境では特に何も設定しなかったので、設定済みだったのか、設定が不要なのかがちょっとわからず。。

挙動を確認してみる

さて、いろんな挙動を確認してみたいと思います。

ワークフローをベースブランチにマージしないと動かない

まずは、上記のworkflowファイル(.github/labeler.yml.github/workflows/labeler.yml)を追加した対応のプルリクエストを作成して、動くかを確認してみました。

・・・。

動きませんでした!

ドキュメントを確認してみましょう。

docs.github.com

今回使用しているpull_request_targetのWebhookイベントのところのGITHUB_SHAを見てみると、PR ベースブランチの直近のコミットと書いています。

f:id:ponkotsu0605:20211012095634p:plain

git-flowのようなブランチ運用を利用せず、masterブランチ(今でいうmainブランチ)にマージしていくプルリクの場合だと、mainブランチにワークフローがマージされてないと動かないということでしょうか。

とりあえずワークフローの設定はマージしないと反映されないということだけ覚えておけば良さそうですね。

ファイルを変更してみる

基本挙動になりますね。ちゃんと対象のファイルを変更したらラベルがつくのかを確認しましょう。

改めて.github/labeler.ymlの中身についてですが、以下のように設定しています。

hoge:
- hoge/*

この定義に対して、以下のようにhoge/fugaファイルに変更を加えてみました。

f:id:ponkotsu0605:20211012101352p:plain

(1つ前のステップでfugaファイルを作成していたので、ここでは内容の変更になります)

この変更でPull requestを作成してみます。

f:id:ponkotsu0605:20211012102000p:plain

スクショの赤枠で囲まれているところのように、無事ラベルが設定されました。

なので、対象のファイルが追加・変更された場合に定義したラベルが付くことが確認できました。

変更したファイルをリバートしてみる

次に、変更加えたけど、やっぱその変更は取り消し!のように、ラベルを付けてもらったけど、外してもらいたいという状況も起こり得るでしょう。

その時、ちゃんとラベルが外されるのかを確認してみたいと思います。

f:id:ponkotsu0605:20211012104417p:plain

このスクショだとわかりにくいですが、ラベルが付いた直後のコミットでファイルの変更がないように戻しています。変更内容をリバートしているイメージです。(リバートすればよかったと後悔)

すると、ちゃんとラベルが削除されています。

すなわち、プルリク内でファイルを変更しているけど、結果差分がない場合はラベルがちゃんと外れることが確認できました。

さいごに

今回、actions/labelerについて導入して動作確認をしてみましたが、自分がやりたいこと、こう動いてほしいなって思ったことはそのまま動いてくれました。さすがgithubですね!

便利なのでチーム開発でも利用していこうかなと思います!

お問い合わせプライバシーポリシー制作物