1. はじめに
ソフトウェア開発では「自動化」が生産性を大きく左右します。
GitHub Actionsは、GitHubリポジトリに統合された強力なCI/CDツールで、テスト・ビルド・デプロイをイベントドリブンで自動化できます。
この記事では、GitHub Actionsの基本概念と、実際に動くハンズオン例を通じて、あなたの開発ワークフローを自動化する第一歩を踏み出します。
2. GitHub Actionsとは?
GitHub Actionsは、GitHubが提供するワークフロー自動化プラットフォームです。
リポジトリ内のイベント(例:push、pull request、issue作成)をトリガーに、定義した一連のタスク(ジョブ)を自動実行します。
主な用途
- プルリクエスト時の自動テスト
- コード品質チェック(Lint)
- Dockerイメージのビルドとデプロイ
- 本番環境への自動リリース
3. 仕組みの理解
GitHub Actionsでは、以下の3要素で構成されます。
構成要素 | 説明 |
---|---|
Workflow(ワークフロー) | 自動化の全体構成。イベントごとに動作するYAMLファイル。 |
Job(ジョブ) | 1つの仮想環境(例:ubuntu-latest)で実行される一連のステップ。 |
Step(ステップ) | 実際のコマンドやアクション(再利用可能な処理単位)。 |
ワークフローは .github/workflows/
配下に置かれ、リポジトリ内でバージョン管理されます。
4. ハンズオン:Node.jsアプリのテストを自動化しよう
ここでは、Node.jsアプリのテストをGitHub Actionsで自動実行するワークフローを構築します。
🔧 前提条件
- GitHubアカウントを持っている
- Node.jsの簡単なプロジェクト(例:
package.json
とtest
スクリプト)
Step 1:リポジトリを作成
GitHub上で新しいリポジトリを作成し、ローカルにクローンします。
git clone https://github.com/yourname/github-actions-demo.git
cd github-actions-demo
Step 2:Node.jsプロジェクトを準備
簡単なプロジェクトを作成します。
npm init -y
npm install jest --save-dev
package.json
の scripts
に以下を追加します。
"scripts": {
"test": "jest"
}
Step 3:テストファイルを作成
sum.js
と sum.test.js
を追加します。
sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Step 4:ワークフローを作成
次に、GitHub Actionsの設定を追加します。
.github/workflows/ci.yml
を作成し、以下を記述します。
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: コードをチェックアウト
uses: actions/checkout@v4
- name: Node.jsをセットアップ
uses: actions/setup-node@v4
with:
node-version: 20
- name: 依存関係をインストール
run: npm install
- name: テストを実行
run: npm test
この設定により、mainブランチへのpushまたはPR時に自動テストが走ります。
Step 5:GitHubにプッシュして実行
git add .
git commit -m "Add GitHub Actions CI"
git push origin main
GitHubのリポジトリで Actionsタブ を開くと、自動的にジョブが開始されます。
テストの結果がリアルタイムで表示され、失敗時には詳細ログも確認可能です。
5. よく使うアクション
アクション名 | 機能 |
---|---|
actions/checkout | ソースコードを取得 |
actions/setup-node | Node.js環境をセットアップ |
actions/cache | npmやpipなどの依存関係をキャッシュ |
docker/build-push-action | DockerイメージをビルドしレジストリにPush |
6. 応用:デプロイの自動化
テストが成功したら、次のステップは自動デプロイです。
GitHub ActionsからAWS、Vercel、Netlifyなどの環境に直接デプロイすることも可能です。
例:Dockerイメージの自動ビルドとPush
- name: Docker Build and Push
uses: docker/build-push-action@v5
with:
push: true
tags: yourname/app:latest
7. ベストプラクティス
- Secrets機能でAPIキーなどの機密情報を安全に管理
matrix
戦略で複数Node.jsバージョンのテストを同時実行- ワークフローを分割して責務を整理(CI / CD / Lint)
- キャッシュを活用して高速化
8. まとめと次のステップ
GitHub Actionsは、YAMLファイル1つで開発サイクルを自動化できる非常に強力なツールです。
初めてのCI設定でも、テスト・ビルド・デプロイまでを簡単に構築できます。
次に学ぶべきステップとしては:
- Docker + GitHub ActionsでのCI/CD構築
- GitHub ActionsからAWS ECS/Fargateへ自動デプロイ
- 再利用可能なWorkflow(Reusable Workflows)の作成
コメントを残す