🍎

GithubActionの全体像だけでも理解したいの会🙋

に公開

GithubActionとは?🧐

GithubActionとは、Githubが用意している自動化サービス。
YAMLファイルを元に自動化したい内容を記載することで、
「コードのビルド」「テスト」「デプロイ」「通知」などを自動で実行してくれます。...便利!

できること✨

  • CI(継続的インテグレーション)
    • コードがpushされたら自動でテスト・ビルド
  • CD(継続的デリバリー/デプロイ)
    • 例)mainブランチにマージされたら自動でサーバーやAWSにデプロイなど

...他にもcronのように定期実行できたり、Slackなどに通知したりもできるよ!

基本構成

大きく分けて下記の4つに構成されています。

①ワークフロー(.github/workflows/xxx.yml)

実際に自動化したい内容を記載するファイル。
自動でデプロイをしたいのか?、自動でPR作成を行いたいのか?

②イベント (on:)

何をきっかけに動くのか?
→ プッシュ、プル、定期実行??

③ジョブ(jobs:)

実行する処理のまとまり。

④ステップ(steps:)

そのジョブの中の具体的なコマンドやアクションを記載する。
stepsの中で「run:~~~」で実際に実行したいコマンドを記載していきます。

具体例

4つの構成を理解できましたでしょうか?
段々と全体像が見えてきたところで、実際に具体例を見せていきます。

name: CI

on: push   # pushされたら実行

jobs:
  test:
    runs-on: ubuntu-latest   # 仮想環境
    steps:
      - uses: actions/checkout@v4   # コードを取得
      - name: Run tests
        run: npm test              # テスト実行

上記は、pushがされたら自動でテストを実行する処理です。
一例ではございますが、特定のブランチにプッシュされた場合などのカスタマイズも可能です✨

アクションについて

最後にgithubActionでよく使用されているアクションについて説明していきます!

アクションとは?

先ほどsteps:の中のrun:でコマンドを記載すると説明しました。
ただ、githubAction内で「よく使う処理」は世界中の人が便利にまとめてくれています。
それを呼び出して再利用することができるもの。それがアクションです。

例えば、、下記のようなもの。

steps:
  - uses: actions/checkout@v4

上記は「リポジトリのコードをcloneする処理です」
基本的にgithubActionはGithubが用意してくれている別サーバー(Runner)で実行されます。
そのため、最初に空のRunnerに対してcloneすることから始めます。
この処理は基本的にGithubAction内で行うものであるためアクションを用いて行うことが多いです。

抑えておきたいアクション

  • actions/checkout@v4
    • リポジトリのコードを取得。(ほぼ全ワークフローで記載)
  • actions/cache@v4
    • 依存関係のキャッシュを保存。
    • npm / Composer / pip / Maven などでビルド時間短縮。
  • actions/setup-node@v4
    • Node.js のバージョンをセットアップ。
    • npm / yarn / pnpm も利用可能。
  • aws-actions/configure-aws-credentials@v4
    • AWS 認証設定
    • id-token: write と組み合わせて安全にAWSへデプロイ。
  • aws-actions/setup-sam@v2
    • AWS SAM CLI のセットアップ
    • LambdaやAPI GatewayをIaCで管理したい時などに使用

などなど、、、
まだまだ抑えておきたいアクションはありますがこの辺で...!

githubActionについて全体像は掴めましたでしょうか?
気になる方は下記の公式ドキュメントなども覗いて見ると良いかもしれません!
https://docs.github.com/en/actions

Discussion