Contents
GitHub ActionsでNode.jsアプリを自動デプロイするステップバイステップガイド
2026年現在、GitHub ActionsはDevOpsエンジニアやNode.js開発者の間で定着したCI/CDツールです。この記事では「GitHub Actions 自動デプロイ Node.js」をキーワードに、初学者向けにワークフローの作成からテストまでを解説します。手順通り実行すれば、プッシュ一発で本番環境へのデプロイが可能になります。
GitHub Actionsで自動デプロイを始める前に準備するもの
Node.jsアプリケーションのGitHub Actionsによる自動デプロイは、いくつかの前提条件を満たしていないと動作しません。まずは開発環境とリポジトリとの連携状況を確認しましょう。
Node.jsプロジェクトの基本構成確認
- プロジェクトディレクトリ内に
package.jsonが存在し、npm installで依存関係が解決されることを確認してください。 - ビルドスクリプト(例:
npm run build)や起動スクリプト(例:npm start)が定義されているかチェックしましょう。
GitHubリポジトリへのPush操作の流れ
GitHub ActionsはPushイベントに反応してワークフローを実行します。ローカルで変更したコードをgit pushでリモートリポジトリに反映させることで、自動デプロイが開始されます。
注意: デプロイ先のサーバー(例: VPSやCloud Run)とGitHub Actionsの連携方法は、この記事では扱いません。あくまでワークフローの作成と実行に焦点を当てます。
.github/workflowsディレクトリの作成方法
自動デプロイを実現するには.github/workflowsディレクトリ内にYAMLファイルを作成します。ここでは、ワークフローの基本構造とNode.jsプロジェクト向けテンプレートを紹介します。
ワークフローYAMLファイルの基本構造
GitHub ActionsのワークフローはYAMLで記述され、以下の主要なセクションから成り立ちます。
| セクション | 説明 |
|---|---|
name |
ワークフローの名前(例: Node.js Build and Deploy) |
on |
ワークフローをトリガーするイベント(例: Push to main) |
jobs |
実行するジョブの一覧(1つ以上のジョブを定義可能) |
steps |
ジョブ内で実行されるステップ(コマンドやアクションの指定) |
Node.jsプロジェクト用のテンプレート例
以下はNode.jsアプリケーション向けのワークフローYAMLファイルのサンプルです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
name: Node.js CI/CD on: push: branches: - main jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install dependencies run: npm install - name: Build application run: npm run build - name: Deploy to production run: | # ここにデプロイ用のコマンドを記述(例: scp, ssh, Docker pushなど) |
注意: デプロイ方法はプロジェクトごとに異なります。このテンプレートはあくまで参考としてください。
ウォークフローでのNode.jsアプリケーションビルド手順
ワークフロー内でNode.jsアプリをビルドするには、適切なDockerイメージの選択とnpmコマンドの実行が不可欠です。
Dockerイメージの選択
GitHub Actionsではruns-onで指定したOS上で動作するDockerイメージを使用できます。Node.js開発では以下のような選択肢があります。
| イメージ | 説明 |
|---|---|
ubuntu-latest |
最新版Ubuntuベース(推奨) |
windows-latest |
Windows環境でのビルド(必要に応じて使用) |
macos-latest |
macOS環境でのビルド(Node.js以外の依存関係がある場合) |
npm installとbuildスクリプトの実行
.github/workflows/main.ymlで定義したステップ内で、以下のようにnpmコマンドを実行します。
|
1 2 3 4 5 6 |
- name: Install dependencies run: npm install - name: Build application run: npm run build |
例:
npm run buildがプロジェクトに定義されていない場合は、代わりにnpx webpackやtscなどのビルドツールを実行してください。
環境変数と秘密情報の管理方法
デプロイ時に使用するAPIキーや認証トークンは、GitHub Secrets(シークレット)に保存して安全に扱う必要があります。
secrets設定の手順
- GitHubリポジトリを開き、Settings > Secrets and variables > Actions をクリック。
- New repository secretを追加し、変数名と値を入力します(例:
DEPLOY_KEY=your-ssh-key)。
環境変数を使用した構成ファイルの作成
ワークフロー内でシークレットを読み込むには以下のように記述します。
|
1 2 3 |
env: API_KEY: ${{ secrets.API_KEY }} |
注意: シークレットはローカル環境では使用できません。デプロイ専用の構成ファイル(例:
.env)を作成し、GitHub Actionsで読み込む方法も有効です。
エラーハンドリングとトラブルシューティング
自動デプロイワークフローは失敗することがあります。その際にログ確認や通知設定を事前に準備しておくことが重要です。
失敗時の通知設定
GitHub Actionsに失敗したときに通知を受け取るには、以下のようにon_failureアクションを使用します。
|
1 2 3 4 5 6 7 8 9 |
- name: Slack通知 if: failure() uses: slackapi/slack-github-action@v1.6.0 with: payload: | { "text": "ワークフロー失敗!: ${{ github.event.repository.name }}" } |
ログの確認方法
ワークフロー実行中のログは、GitHubリポジトリ内のActionsタブ > ジョブ名 > ステップ名 > Outputから確認できます。
チェックポイント: 「エラー発生時」に
exit 1やthrow new Error()が呼ばれた場合、ワークフローが終了します。
完成した自動デプロイワークフローのテストと公開
ワークフローを作成したら、ローカルでのシミュレーションからPull Requestでの確認までをテストする必要があります。
ローカルでのシミュレーション
npm install -g @actions/coreなどでGitHub Actionsの動作を模擬的に試すこともできますが、最も確実なのは本番環境に近い状態でのテストです。
Pull Requestによる確認手順
- テスト用ブランチを作成し、ワークフローを適用。
- Draft PRとしてPull Requestを作成。
- GitHub Actionsで「Workflow run」が成功するか確認。
Tip: 「Draft PR」は公開されませんが、ワークフロー実行の検証に最適です。
まとめ
- GitHub Actionsを使うには、
.github/workflowsディレクトリ内のYAMLファイルを作成し、Node.jsアプリをビルドするステップを記述する。 - シークレット管理は
secretsで行い、環境変数としてワークフロー内で利用可能。 - 実際にデプロイする前にローカルやPRでのテストが必須。
この記事を参考にすれば、Node.jsアプリケーションの自動デプロイワークフローを作成・公開できます。手順通り実行してみてください。