SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

サポートエンジニアが解説するGitHub

GitHubの新機能「GitHub Actions」でワークフローを自動化しよう

サポートエンジニアが解説するGitHub 第2回

GitHub Actions実例1 - ブランチの自動削除

 前置きが長くなりましたが、いよいよGitHub Actionsの実際の利用例を紹介します。なお、GitHub Actionsのベータ版はすでに利用できる前提で解説しています。

 では簡単な例としてブランチの削除というタスクを自動化してみましょう。開発フローによりますが、一般的にはPull Requestがマージされた後、特に理由がない限りそのブランチは不要になります。通常は手動でブランチを削除する必要がありますが、削除し忘れを防ぐため、このタスクを自動化してみましょう。流れとしては、以下になります。

  1. 新しいWorkflowを作り、pull_requestイベントをトリガーに設定する
  2. ブランチを自動削除するActionをWorkflowに追加する
  3. Workflowを保存する

 たったこれだけです。なお、この例では対象リポジトリをlowply/delete-branch-testとします。ご自身で試される際は、お使いのリポジトリ名に置き換えてください。

 まず、https://github.com/lowply/delete-branch-test/actionsにアクセスし、[Create a new workflow]ボタンをクリックします。

 グレーの[New workflow]ボックスの[Edit]をクリックし、編集ダイアログを表示します。ダイアログ内の[Workflow name]に任意の名前を付け、[Run]プルダウンメニューからpull_requestを選択して保存します。

11450_004.png

 グレーのボックスの下部にある青いドットをマウスでドラッグし、その下の点線エリアに持っていくと、新しいActionの追加画面が表示されます。

 今回はActionを自分で作成するのではなく、Jessie Frazelleさんが作成したbranch-cleanup-actionというActionを使いたいので、[Find or enter an action]欄にjessfraz/branch-cleanup-action@masterと入力します。検索結果にこのActionが表示されたら、[Use]ボタンをクリックします。なお、GitHub上のリポジトリを指定する場合は上記のように@を付けてowner/repository@masterとブランチ名まで記述してください。また、もしブランチ指定ではなく特定のコミットを指定したい場合は@4c8b444のようにコミットハッシュの先頭7桁を書いてください。

 Actionのラベル名は、デフォルトで先程のステップで入力した内容が付きますが、分かりやすいものに変えましょう。ここでは「branch cleanup」としました。また、このActionはGitHub APIを実行するので、GITHUB_TOKENのチェックボックスをオンにする必要があります。以上で終わりなので、[Done]をクリックします。

 この状態で[Edit new file]タブを表示すると、ビジュアルエディタで作成したWorkflowがテキストファイルとして記述されていることがわかります。

 それでは最後にこのファイルをコミットしましょう。

 試しに新しいPull Requestを作成してみます。

 Actionsタブを確認すると、「branch cleanup」というActionが成功したことがわかります。しかし、まだこのPull Requestはマージしていません。なぜ成功してしまったのでしょうか?

 実は、Pull Requestを作成した時点でpull_requestイベントが発火しWorkflowが走ります。しかし、このActionは「Pull Requestがマージされたらブランチを消す」を実現するため、スクリプト内部でmergedフラグを確認しており、今回はフラグがfalseだったため何も実行せずに正常終了したのです。

 「blanch cleanup」Action内に表示されている「Log」リンクをクリックすると、このActionの実行内容を確認できます。DEBUG -> の行に、action: opened merged: falseと出力されていることがわかります。

 今度は、このPull Requestをマージしてみましょう。

 再びWorkflowが走りました。ログを確認すると、今度はaction: closed merged: trueとなっており、Branch delete success!が表示されているのでブランチが削除されたことがわかります。

 Pull Requestの画面に戻ると、確かにgithub-actionsユーザ(bot)がブランチを削除しています。

 実はこのActionについて、作者のJessie Frazelleさんが「Jessie Frazelle's Blog: The Life of a GitHub Action」という記事を書かれているので、興味がある方は是非読んでみて下さい。また、今回の実例は私のリポジトリlowply/delete-branch-testにて実際に確認できます。

次のページ
GitHub Actions実例2 - 静的サイトの生成とデプロイ

この記事は参考になりましたか?

サポートエンジニアが解説するGitHub連載記事一覧
この記事の著者

水谷 翔(GitHub, Inc.)(ミズタニ ショウ)

 東京都生まれ。工学部建築学科出身。ウェブデザイナー、インフラエンジニア、AWSのデータセンターテクニシャン等のキャリアを経て2016年6月にGitHub, Inc.に入社。Enterprise Support Engineerとして、GitHubの企業向け製品GitHub Enterpriseを導入してい...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11450 2019/04/05 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー