🏃♂️
複合アクションを使ったスマートなGitHub Actionsの実践例
2024-12-27
2024-12-28
約2355字
GitHub Actionsは、開発プロセスを効率化する強力な自動化ツールです。しかし、複雑なワークフローを簡潔に表現するには課題が残ります。そこで活躍するのが「複合アクション(Composite Action)」です。
複合アクションは、複数のステップを1つの単位にまとめたアクションです。他のアクションを組み合わせたりスクリプトを直接記述できるため、柔軟で再利用可能なワークフロー構築が可能になります。
例えば、コードのフォーマットチェックとテスト実行をセットにしたり、標準化されたCI/CDプロセスをチームで共有したりする際に有用です。次章では、実際に複合アクションを作成する手順を見ていきます。
複合アクションを利用することで、チーム全体の生産性が向上します。特に注目すべき3つのメリットを見てみましょう。
今回は、node.jsのプロジェクトにおける、コードリントとテスト実行を統合した複合アクションの例を示します。
複合アクションは以下のディレクトリ構造で作成します。
対象のGitHubレポジトリのルートにある.github
ディレクトリの中に actions
と workflows
のディレクトリを作ります。
.
├── src/
│ ├── main.ts
│ ├── utils.ts
│ └── package.json
├── .github/
│ ├── actions/
│ │ └── my-composite-action/
│ │ ├── action.yml
│ │ ├── scripts/
│ │ │ └── example-script.sh
│ └── workflows/
│ └── ci.yml
└── README.md
複合アクションの設定をactionに記述します。
以下の例では、npm run lint / npm testを実行しています。
これらの設定を共通化し、複数のワークフローから呼び出すことができます。
name: "Lint and Test Action"
inputs:
path:
description: "The path to the source code"
required: true
runs:
using: "composite"
steps:
- name: Run Linter
run: npm run lint ${{ inputs.path }}
- name: Run Tests
run: npm test ${{ inputs.path }}
先ほど作った、 action.yml
の処理を workflows/ci.yml
から以下のように呼び出すことが可能です。
これらの設定で、mainブランチにプッシュされたタイミングで、リンターとテストを実行することが可能になります。
name: CI Workflow
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Run Composite Action
uses: ./github/actions/my-composite-action
with:
path: "src/"
これにより、複数処理を1つのアクションで管理できます。
inputs
経由で明示的に渡しましょう。これらを実践することで、効率的かつ安全な運用が可能です。
複合アクションの作成と活用は、GitHub Actionsの可能性を広げます。本記事で、基本的な複合アクションの活用例を紹介しました。
より実践的な使い方として、複合アクションの中で参照ブランチごとに処理を分岐させ、gitフローを実現することもできます。
これにより、developブランチはステージング環境にmainブランチは本番環境にデプロイさせるなどのこともできます。
また、monorepoなどサービスとデプロイ先が多数あるレポジトリにおいて、より複合アクションの必要性が強まります。
ぜひ、自分のプロダクトに適したGitHub Actionsのフローを構築してみましょう!
©︎ 2025 - Yard