Github Actionsの使い方(入門編)

Github Actions

GitHub Actionsは、リポジトリで発生するイベント(プルリクエストの作成やプッシュなど)をトリガーとして、自動的にタスクを実行できるツールです。

テストの自動実行、デプロイ、コードの静的解析などで使われます。

今回はその基本的な使い方について解説します。

基本的な使い方

ワークフローの作成

GitHub Actionsの設定ファイルは、リポジトリの .github/workflows ディレクトリに保存します。

まず、簡単なワークフローを作成してみます。

name: CI Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Set up Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20'
    - name: Install dependencies
      run: npm install
    - name: Run lint
      run: npm run lint

詳細を説明します。

ワークフローのトリガー

name: CI Pipeline

このワークフローの名前です。任意の名前を指定。

on:
  push:
    branches:
      - main

onではgithubでどのイベントが起きた時に、このワークフローを実行するか?を定義します。

この場合は、mainブランチにpushされた時に実行します。

イベントの一覧はこちらです↓

ワークフローをトリガーするイベント - GitHub Docs
GitHub で特定のアクティビティが実行された時、スケジュールした時間、または GitHub 外でイベントが発生した時にワークフローを実行できるよう設定できます。

ジョブとステップ

jobs:
  build:
    runs-on: ubuntu-latest

jobsで、実行したいjobを定義します。

buildという名前のjobを定義しています。ここの名前は任意です。

runs-onで、どの実行環境にするかを定義します。

「ubuntu-22.04」のように、特定のバージョンを指定することもできます。

windowsも選択可能ですが、大抵の場合はubuntuで事足ります。

    steps:
    - uses: actions/checkout@v4
    - name: Set up Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20'
    - name: Install dependencies
      run: npm install
    - name: Run lint
      run: npm run lint

stepsで、実行したいコマンドをリストで定義します。

nameに実行したいステップの名前(任意)、runにコマンドを記述します。

アクションの利用

usesでは、既存のアクションを指定します。アプリケーションでいうライブラリのようなものです。

数多くのアクションが、マーケットプレイスで公開されています。

Build software better, together
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.

よく使うアクションの例
コードのチェックアウト
: actions/checkout
Node.js のセットアップ: actions/setup-node
AWSへのデプロイ: aws-actions/configure-aws-credentials

これらのアクションを利用する場合、作者が信頼できるか確認しましょう。
悪意あるアクションが含まれている可能性もあるので注意。

実際に実行する

簡単なReactアプリを作成し、上記で作成したCIのワークフローを流してみます。

このようにして、実行結果を確認することができます。

試しにciで失敗するようなコードを書くと、

該当箇所でコケることがわかります。

まとめ

GitHub Actionsは、自動化、効率化を大きく向上させるツールです。

CI/CDの自動化のみならず、チーム内でのGitHub運用ルールの強制に大きく役立ちます。

基本を理解したら、さらに複雑なワークフローを設計して、開発プロセス全体を自動化してみてください。