技術

GitHub ActionsでプルリクエストとリンクしたIssueを自動で移動

どうも、フリーランスのITエンジニア兼ブロガー兼投資家のKerubitoです。

ソフトウェア開発のワークフリーを自動化してくれるGitHub Actions。

人がやる必要のない面倒な作業は全部コンピューターにやってもらいましょうという素晴らしい仕組みです。

今回はこのGitHub Actionsを使って「プルリクエストとリンクされたIssueを自動で移動させる」をやってみました。

GitHub Actionsといえば「masterやstagingにマージされたらCIまわす」みたいなのが王道だと思うんですが、そんな情報はあちこちに転がっています。

なので、ちょっとググってもあんまり情報がなかったニッチなことを記事にしてみました。

GitHubにて事前準備

GithubのProjectsを使います。

これで開発のワークフロー回していることが前提になりますね。

すでにある人はすっ飛ばしてください。

「kanban」をテンプレートとしたKanbanを適当に作成します。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

さらにプルリクエストが送られたということは、コードレビューなりが入ると想定して「review」というcolumnを追加します。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

さらにIssueを作成します。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

GitHub Actionsのworkflowを作成する

それではGitHub Actionsのworkflowを作成していきます。

 リポジトリ直下にて「Actions」のタプを選択します。

すると下のような画面になりますので、左にある「New workflow」を押します。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

「set up a workflow yourself」を押します。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

下のほうへとスクロールすると、既存のものが選べるようになっていて、「Amazon ECSへの自動デプロイ」、「Azure Web Appへの自動デプロイ」といったメジャーなものは一通り揃っていますね。

ここまできたら、あとはどのような動作をさせるかをコードで書きます。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

コードはyml形式にて/workflows/*.ymlといった形で保存されます。

プルリクエストとリンクされたIssueを自動でcolumn間を移動させる

「プルリクエストにリンクされたIssueを自動でcolumn間を移動させる」をGitHub Actionsにて自動化させます。

コード本体はこちら。

ymlを適用するには右側の「Start commit」を押します。

さらっと説明しておくと

name → workflow名

on:  issues:  types: [edited] → issueが変更されたらというトリガー

if: github.event.issue.pull_request.url != '' → issuとプルリクエストがリンクしている場合

uses: alex-page/github-project-automation-plus@v0.2.4 → 既存のGitHub Actionsのコードを使います

project → Kanbanというprojectを対象とする

column → reviewというcolumnに移動させる

repo-token: ${{ secrets.TOKEN }} → リポジトリにアクセするため

おおよそイメージできるかと思いますが、2点だけ説明を加えておきます。

通常runでコマンドを実行するのですが、今回はusesという公開アクションを利用する方法を用いています。

「alex-page/github-project-automation-plus@v0.2.4」というのは、issueを指定したcolumnに移動させてくれるアクションです。

また、repo-tokenで認証トークンを渡しています。

認証トークンの作成

通常publicなリポジトリであれば「GITHUB_TOKEN」でいけるそうなのですが、どういうわけか失敗するので、認証トークンを作成しました。

認証トークンの作り方は以下です。

アカウントの設定(Settings)→Developer settings→Personal access tokens→Generate new token

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

こんな感じで設定して動きました。

適当なので動作は保証しません(笑

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

作った認証トークンをSecretsに登録します。

リポジトリ直下から「Settings」→Secrets→New secretです。

GitHub Actionsのworkflowを動かす

それでは試しに動かしてみます。

「なんか困ったことが発生」というissueの対応が終わったとして、プルリクをリンクさせます。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

reviewへと自動で移動してくれました。

GitHub ActionsでプルリクエストにリンクされたIssueを自動でcolumn間を移動させる

この面倒な作業を1回30秒、1日3回やるとしたら、1ヶ月(20日)で30*3*20 = 1800秒ほどかかります。

私は現在5人ぐらいのチームで開発しているのですが、それだと9000秒です。

さらにこれを1年続けると108000秒。

約30時間。

このアクションを作るのに2時間ほどですので、効率化のメリットはありそうです。

-技術

Copyright© Kerubitoのブログ , 2020 All Rights Reserved.