lambda-cicd-workshop

フェーズ4: CI – GitHub Actionsで自動テスト

コードを変更する(Pull Requestを作る)たびに自動でCIが走るようにGitHub Actionsを設定します。

GitHub Actionsとは

GitHub Actionsは、GitHubに組み込まれたCI/CDサービスです。リポジトリに .github/workflows/ ディレクトリを作り、YAMLファイルを置くだけで、コードのプッシュやPull Requestなどのイベントに応じて処理を自動実行できます。

ワークフローファイルを作成する

リポジトリに .github/workflows/ci.yml を作成し、main ブランチにマージしてください。

name: "CI Lint"

on:
  pull_request:
    branches: [main]
    paths:
      - "src/**"

permissions:
  contents: read

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: astral-sh/ruff-action@v3
        with:
          src: src

YAMLの読み方

上から順に見ていきます。

on はトリガーです。mainブランチへのPull Requestが作成・更新されたときに、このワークフローが実行されます。pathssrc/ 以下のファイルが変更されたときだけに限定しています。

permissions はこのワークフローに与える権限です。contents: read だけを指定しています。CIはリポジトリのコードを読んでチェックするだけなので、書き込みの権限は不要です。

jobs の中に、実際の処理を書きます。lint というジョブが1つあり、2つのステップで構成されています。

動作確認

CIの動作確認用に src/index.py を変更したPull Requestを作成します。

ワークフローのトリガーは src/ 以下の変更なので、src/index.py にわざと不要なインポートを追加する変更を加え、CIがエラーを検出することを確認します。

src/index.py を編集してください。

import os # 不要なインポート

def handler(event, context):
    return {"statusCode": 200, "body": "hello, world!"}

Pull Requestが作成されると、CIワークフローが自動で実行され、Ruffが不要なインポート(import os) を検出して失敗するはずです。

このフェーズのまとめ

参考リンク

次のステップ

CIでコード品質を守る仕組みができました。次は、AWS CLIの認証を行います。

フェーズ5: AWS CLIで認証する に進みましょう。