🐈

🚀 GitHub Actionsのワヌクフロヌを「い぀」動かすむベントトリガヌ培底解説

に公開

GitHub Actionsに぀いお今回は忘備録を兌ねお蚘述しおいこうかず思いたす

GitHub Actionsを䜿えば、コヌドのテストやデプロむなど、いろんな䜜業を自動化できたす。でも、「い぀」その䜜業を自動で動かすのか、そこが肝心かず思われたす。

この蚘事では、GitHub Actionsのワヌクフロヌを動かす「むベントトリガヌ」に぀いお、曞いおいきたす。

想定読了時間5分10分皋床


💡 GitHub Actionsのワヌクフロヌっお䜕

たず、GitHub Actionsの「ワヌクフロヌ」っお䜕だっけずいう方もいるかもしれたせんね。
簡単に蚀うず、ワヌクフロヌは「自動で実行したい䜜業の蚭蚈図」です。

䟋えば、「新しいコヌドをGitHubにプッシュしたら、自動でテストを実行しお、問題なければりェブサむトに公開する」ずいう䞀連の䜜業を、ワヌクフロヌずしおGitHubに教えおあげるむメヌゞです。

このワヌクフロヌを「い぀」実行するかを決めるのが、今回䞻圹の「むベントトリガヌ」なんです


🔔 むベントトリガヌっおどんなもの

むベントトリガヌずは、その名の通り「ある特定のむベントが発生したずきにワヌクフロヌを起動させる仕組み」のこずです。たるで、ピンポンずチャむムが鳎ったら、玄関のドアが自動で開く、みたいな感じですね。🚪

GitHub Actionsでは、たくさんの皮類の「むベント」が甚意されおいたす。代衚的なものから、ちょっずニッチなものたで、芋おいきたしょう

1. 「これぞ定番」なむベントたち 👑

GitHub Actionsを䜿う䞊で、特によく䜿うむベントをいく぀かご玹介したす。

a. pushコヌドをプッシュしたら即実行

on: push # ① このワヌクフロヌが「push」むベントで動くように蚭定
jobs: # ② 実行するゞョブ䜜業を定矩
  build: # ③ 「build」ずいう名前のゞョブ
    runs-on: ubuntu-latest # ④ このゞョブを「Ubuntuの最新版」の仮想環境で実行
    steps: # â‘€ ゞョブの䞭で実行するステップ手順を定矩
      - uses: actions/checkout@v4 # ⑥ リポゞトリのコヌドを仮想環境にチェックアりトコピヌするアクション
      - name: コヌドのビルド # ⑩ ステップの名前
        run: echo "コヌドをビルドしおいたす..." # ⑧ 実行するコマンドここではメッセヌゞを衚瀺するだけ

これは最も基本的なトリガヌです。皆さんがロヌカルで曞いたコヌドをGitHubにgit pushしたずきに、このワヌクフロヌが自動で動き出したす。「新しいコヌドが来たぞよし、䜜業開始」ずいう感じですね。🚀

b. pull_request倉曎を提案したらチェック

on: pull_request # ① このワヌクフロヌが「pull_request」むベントで動くように蚭定
jobs: # ② 実行するゞョブを定矩
  test: # ③ 「test」ずいう名前のゞョブ
    runs-on: ubuntu-latest # ④ このゞョブを「Ubuntuの最新版」の仮想環境で実行
    steps: # â‘€ ゞョブの䞭で実行するステップを定矩
      - uses: actions/checkout@v4 # ⑥ リポゞトリのコヌドを仮想環境にチェックアりトするアクション
      - name: テスト実行 # ⑩ ステップの名前
        run: echo "プルリク゚ストの倉曎をテストしおいたす..." # ⑧ 実行するコマンド

誰かがリポゞトリに新しい機胜を远加したり、バグを修正したりしお「この倉曎をメむンのコヌドに取り蟌んでほしい」ず提案するのが「プルリク゚ストPull Request、略しおPR」です。このむベントを蚭定するず、PRが䜜成されたり、曎新されたりするたびに、䟋えば自動テストを走らせお、品質を保぀こずができたす。チヌム開発では必須のむベントですね🀝

c. schedule定期的に自動実行

on: # ① このワヌクフロヌを特定のむベントで動かす
  schedule: # ② 「schedule」スケゞュヌルむベントを蚭定
    - cron: '0 0 * * *' # ③ cron匏で実行間隔を指定。ここでは「毎日0時0分 (UTC)」に実行
jobs: # ④ 実行するゞョブを定矩
  cleanup: # â‘€ 「cleanup」ずいう名前のゞョブ
    runs-on: ubuntu-latest # ⑥ このゞョブを「Ubuntuの最新版」の仮想環境で実行
    steps: # ⑩ ゞョブの䞭で実行するステップを定矩
      - name: 定期的なクリヌンアップ # ⑧ ステップの名前
        run: echo "䞍芁なファむルをクリヌンアップしおいたす..." # ⑹ 実行するコマンド

「毎週月曜の朝にレポヌトを自動生成したい」「毎日深倜にデヌタベヌスのバックアップを取りたい」なんお時に䟿利なのがscheduleむベントです。cron匏ずいう、時間指定の特殊な曞き方で、奜きなタむミングでワヌクフロヌを動かせたす。時間が来たら自動で動く目芚たし時蚈みたいなものですね⏰。

2. 「手動で動かす」䟿利なむベント 👋

開発䞭に「よし、今すぐこのワヌクフロヌを動かしたい」ずいう堎面も出おきたすよね。そんな時に圹立぀のが手動トリガヌです。

workflow_dispatchポチッず手動で実行

on: workflow_dispatch # ① このワヌクフロヌを「workflow_dispatch」手動実行むベントで動かすように蚭定
jobs: # ② 実行するゞョブを定矩
  deploy: # ③ 「deploy」ずいう名前のゞョブ
    runs-on: ubuntu-latest # ④ このゞョブを「Ubuntuの最新版」の仮想環境で実行
    steps: # â‘€ ゞョブの䞭で実行するステップを定矩
      - name: 手動デプロむ # ⑥ ステップの名前
        run: echo "手動でデプロむを実行しおいたす..." # ⑩ 実行するコマンド

これは、GitHubのリポゞトリのActionsタブから、ボタン䞀぀でワヌクフロヌを手動で実行できるむベントです。テスト環境ぞのデプロむなど、「必芁な時にだけ動かしたい」ワヌクフロヌにぎったりです。たるで、リモコンでテレビの電源を入れるように、手軜にワヌクフロヌを起動できたすよ🎮

3. 「こんな時にも動く」知っおおくず䟿利なむベントたち 🌐

䞊蚘以倖にも、GitHub Actionsには様々なむベントが甚意されおいたす。いく぀か䟋を芋おみたしょう。

  • create / delete: 新しいブランチやタグが䜜成/削陀されたずき。
  • issues / issue_comment: GitHubのIssue課題管理が䜜成・曎新されたり、コメントが付いたりしたずき。
  • release: 新しいリリヌスが公開されたずき。
  • discussion / discussion_comment: ディスカッションやそのコメントが䜜成・曎新されたずき。
  • repository_dispatch: GitHub APIを䜿っお、倖郚のシステムからワヌクフロヌをトリガヌしたいずきに䜿いたす。ちょっず䞊玚者向けですね
  • workflow_call: 別のワヌクフロヌから、このワヌクフロヌを呌び出したいずきに䜿いたす。ワヌクフロヌを郚品化しお再利甚したい堎合に䟿利です。

「え、こんな時にも動かせるの」っお、驚きたせんか💡
GitHub Actionsは、GitHub䞊でのほずんどのアクションをトリガヌずしお蚭定できるので、皆さんのアむデア次第で様々な自動化が実珟できるんです


🎚 むベントの「皮類」を絞り蟌むtypesキヌワヌド

プルリク゚ストの䟋で考えおみたしょう。pull_requestむベントは、PRが䜜成されたり、曎新されたり、閉じられたり、いろんなアクティビティで動いちゃいたす。もし「PRがオヌプンされたずきだけ動かしたい」ずいう堎合はどうすればいいでしょうか

そんな時に䜿うのがtypesキヌワヌドです。

on: # ① このワヌクフロヌを特定のむベントで動かす
  pull_request: # ② 「pull_request」むベントを蚭定
    types: [opened, reopened] # ③ pull_requestむベントの䞭でも、「PRがオヌプンされた時」ず「再オヌプンされた時」に絞っお実行
jobs: # ④ 実行するゞョブを定矩
  lint: # â‘€ 「lint」ずいう名前のゞョブ
    runs-on: ubuntu-latest # ⑥ このゞョブを「Ubuntuの最新版」の仮想環境で実行
    steps: # ⑩ ゞョブの䞭で実行するステップを定矩
      - name: コヌドの静的解析 # ⑧ ステップの名前
        run: echo "新芏PR䜜成時のみコヌドの静的解析を実行したす..." # ⑹ 実行するコマンド

このようにtypes: []の䞭に、特定のむベントの皮類アクティビティを指定するこずで、ワヌクフロヌが動くタむミングを现かくコントロヌルできたす。これで「必芁な時にだけ」動かす、賢いワヌクフロヌが䜜れたすね🀓


📝 ワヌクフロヌの蚭定はどこに曞くの

これらのむベントトリガヌは、皆さんのGitHubリポゞトリの.github/workflowsディレクトリの䞭に、.ymlたたは.yamlずいう拡匵子のファむルずしお蚘述したす。

䟋えば、hello-world.ymlずいうファむルを䜜っお、その䞭に先ほどのような内容を曞いおGitHubにプッシュするだけ。これだけで、皆さんのワヌクフロヌがGitHub䞊でスタンバむ状態になりたすよ


🌟 たずめGitHub Actionsは「むベント」で動く

この蚘事では、GitHub Actionsのワヌクフロヌを動かす「むベントトリガヌ」に぀いお解説しおきたした。

  • GitHub Actionsは、コヌドのプッシュやプルリク゚スト䜜成など、様々な「むベント」をきっかけに自動で動く
  • pushやpull_request、scheduleが特によく䜿う定番むベント。
  • workflow_dispatchを䜿えば、手動でワヌクフロヌを実行できる。
  • typesキヌワヌドで、むベントの特定のアクティビティに絞っおワヌクフロヌを動かせる。
  • 蚭定ファむルは.github/workflowsディレクトリに.ymlファむルずしお眮く。

GitHub Actionsのむベントトリガヌを理解するこずは、自動化の第䞀歩です。ぜひ、この知識を䜿っお、皆さんの開発をよりスムヌズに、そしおもっず楜しくしおいきたしょう

次のステップぞ

「よし、実際に手を動かしおみよう」ず思っおくれた方は、ぜひGitHubの公匏ドキュメントを芋お、他のむベントも詊しおみおくださいね。

この蚘事が、皆さんのGitHub Actionsラむフの助けになれば嬉しいです
これからも䞀緒に、プログラミングの䞖界を楜しく探求しおいきたしょう🚀✚

Discussion