プロジェクト構成
プロジェクトに対してGitHub Actions
を用いてCI/CDを実現したいと思います。
例えばプロジェクトが下記のような構成だとします。
backend/
とfrontend/
に対してテストと静的解析を通して自動デプロイしたいです。
逆に他のファイルやディレクトリの変更に対してそれらのワークフローを実行する必要はありません。
.
├── .git
├── .github
├── .gitignore
├── README.md
├── backend
├── documents
└── frontend
変更前のワークフロー設定
変更前のワークフロー設定ファイルの内容です。
下記の設定だと、mainブランチへのプッシュやプルリクエストをトリガーにワークフローが実行されます。
しかしこのままだと、backend/
、frontend/
以外の変更に対してもテストや静的解析、自動デプロイといったワークフローが実行されてしまい、少し大げさだなと思いました。
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
...
deploy:
...
変更後のワークフロー設定
paths:
フィルタを使うと、特定のファイルやディレクトリに対する変更を含むプッシュやプルリクエスト時にのみワークフローを実行するように設定できます。
*
が1つだと、指定したディレクトリ直下だけが対象になり、その下のサブディレクトリのファイルまではマッチしません。
**
だと、任意のディレクトリ、任意の深さという意味になるので、指定したディレクトリ以下のすべてのファイルが対象になります。
name: CI/CD
on:
push:
branches: [main]
paths:
- "backend/**"
- "frontend/**"
pull_request:
branches: [main]
paths:
- "backend/**"
- "frontend/**"
jobs:
test:
...
deploy:
...