GitHub Actions自動デプロイ入門|中小企業でも実践できる設定手順と活用法

kento_morota 16分で読めます

GitHub Actions自動デプロイとは?中小企業が抱える課題を解決する仕組み

「サイト更新のたびに手作業でファイルをアップロードしている」「デプロイ作業が属人化していて、担当者不在時に対応できない」――中小企業のIT担当者から、こうした悩みをよく伺います。

GitHub Actions自動デプロイは、コードをGitHubにpushするだけで本番環境へ自動反映する仕組みです。人的ミスを削減し、業務効率を大幅に向上させるため、限られたリソースで運用する中小企業にこそ最適なソリューションといえます。

手作業デプロイの3つの課題

手作業でのデプロイには、以下の問題が潜んでいます。

時間的コスト: FTPソフトの起動、ファイル選択、アップロードという一連の作業は、積み重なると月間で数時間〜数十時間のロスになります。

ヒューマンエラー: ファイルのアップロード忘れ、設定ファイルの更新漏れなど、人間が行う作業には必ずミスのリスクが伴います。

属人化: 特定の担当者しか手順を知らない状態では、その人が不在時に緊急対応できません。履歴管理も難しく、トラブル時の原因究明に時間がかかります。

GitHub Actionsの基本的な仕組み

GitHub Actionsは、GitHubが提供するワークフロー自動化ツールです。リポジトリ内のイベント(pushやpull requestなど)をトリガーに、あらかじめ定義した処理を自動実行します。

動作の流れ:
1. 開発者がコードを修正し、GitHubリポジトリにpush
2. pushイベントをトリガーに、GitHub Actionsが自動起動
3. テスト・ビルド・デプロイを順次実行
4. 処理結果をGitHub上で確認、エラー時には通知を受け取る

この仕組みにより、コード変更から本番環境への反映まで人の手を介さず完結します。新たなサーバーを用意する必要もありません。

中小企業が得られる5つのメリット

工数削減: デプロイ作業が5分で完了し、月間で数時間〜数十時間の工数削減が可能です。

品質向上: 人的ミスがなくなり、本番環境でのトラブルが大幅に減少します。

スピードアップ: 修正から公開までのリードタイムが短縮され、ビジネスの機動力が向上します。

属人化解消: 手順がコード化されるため、誰でも同じ品質でデプロイできます。

安心感: 夜間や休日でも自動デプロイできるため、緊急対応の負担が軽減されます。

初期設定に学習コストはかかりますが、一度構築すれば継続的に効果を発揮します。

GitHub Actions導入に必要な基礎知識

GitHub Actionsを始めるために必要な知識は、それほど多くありません。以下の3つを押さえれば十分です。

前提知識とツール

Gitの基本操作: git addgit commitgit pushの基本コマンドと、ブランチの概念を理解していれば問題ありません。GitHub Desktopを使えば、コマンド入力なしでも操作できます。

GitHubアカウント: 無料アカウントと、デプロイしたいプロジェクトのリポジトリがあればOKです。

デプロイ先の情報: サーバーへのアクセス情報(FTP、SSH、APIキーなど)とデプロイ先のディレクトリパスが必要です。現在手作業でデプロイしている方なら既に持っているはずです。

重要な用語4つ

ワークフロー(Workflow): 自動化したい一連の処理全体を指します。YAMLファイルとして定義します。

ジョブ(Job): ワークフロー内の大きな処理単位です。「テストを実行」「デプロイを実行」のように分割でき、並列実行も順次実行も可能です。

ステップ(Step): ジョブ内の個別の処理です。「リポジトリをチェックアウト」「Node.jsをセットアップ」など、具体的な一つひとつの作業を指します。

アクション(Action): 再利用可能な処理のパーツです。GitHub公式や有志が公開している既製の処理を利用できます。

YAMLファイルの基本ルール

GitHub Actionsの設定は、YAML形式のファイルで記述します。基本ルールはシンプルです。

  • インデント: スペース2つ分の字下げで階層を表現(タブは使えません)
  • キーとバリュー: キー: 値の形式で設定を記述
  • リスト: 複数の項目は-で列挙
name: デプロイワークフロー
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: コードを取得
        uses: actions/checkout@v3

インデントのズレがあるとエラーになるため、コピー&ペースト時は注意が必要です。

無料プランの制限事項

パブリックリポジトリ: 実行時間無制限、ストレージ500MB、同時実行20ジョブ

プライベートリポジトリ: 月2,000分まで、ストレージ500MB、同時実行20ジョブ

静的サイトのデプロイは1回1〜3分、Node.jsアプリは1回3〜10分程度です。中小企業の一般的なWebサイトなら、月数十回のデプロイでも無料枠内で収まります。超過しても追加料金は1,000分あたり$8(約1,200円)と、非常にリーズナブルです。

GitHub Actions自動デプロイの設定手順

実際にGitHub Actionsで自動デプロイを設定する手順を、4つのステップで解説します。

ステップ1:GitHub Actionsを有効化

GitHub Actionsは標準で利用できる機能ですが、設定を確認しておきましょう。

  1. GitHubにログインし、対象のリポジトリを開く
  2. 「Settings」→「Actions」→「General」を選択
  3. 「Allow all actions and reusable workflows」が選択されていることを確認

組織のリポジトリの場合、管理者権限が必要になることがあります。

ステップ2:ワークフローファイルを作成

ワークフローは.github/workflows/フォルダ内にYAMLファイルとして配置します。

GitHub上で作成する場合:
1. リポジトリの「Actions」タブをクリック
2. 「set up a workflow yourself」をクリック
3. .github/workflows/main.ymlが自動作成される

ローカルで作成する場合:
1. プロジェクトルートに.github/workflows/フォルダを作成
2. deploy.ymlなどのファイルを作成
3. git add、commit、pushでGitHubに反映

初心者の方はGitHub上で作成する方が分かりやすいでしょう。

ステップ3:基本構成を記述

YAMLファイルに、ワークフローの基本構成を記述します。

name: Deploy Website

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Deploy to server
        run: echo "デプロイ処理をここに記述"
  • name: ワークフロー名
  • on: 実行トリガー(mainブランチへのpush時)
  • jobs: 実行するジョブの定義
  • steps: 具体的な処理の一覧

ステップ4:接続情報を安全に管理

サーバーへの接続情報は、YAMLファイルに直接書いてはいけません。GitHubのSecrets機能を使います。

Secretsの設定手順:
1. リポジトリの「Settings」→「Secrets and variables」→「Actions」を選択
2. 「New repository secret」をクリック
3. 変数名(例:FTP_PASSWORD)と値を入力
4. 「Add secret」をクリック

命名ルール: 大文字とアンダースコアのみ使用(例:FTP_USERNAMEAPI_KEY

YAMLでの使用方法:

env:
  FTP_USERNAME: ${{ secrets.FTP_USERNAME }}
  FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }}

設定したSecretsの値は画面上で確認できません(セキュリティのため)。変更する場合は同じ名前で再設定すれば上書きされます。

実践例:環境別のデプロイ設定

中小企業でよく使われる3つのパターンを紹介します。自社の環境に近いものを参考にしてください。

静的サイトをGitHub Pagesにデプロイ

コーポレートサイトやランディングページに最適です。追加費用なしで簡単にデプロイできます。

name: Deploy to GitHub Pages

on:
  push:
    branches:
      - main

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup Pages
        uses: actions/configure-pages@v3

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v2
        with:
          path: '.'

      - name: Deploy to GitHub Pages
        uses: actions/deploy-pages@v2

初回設定: リポジトリの「Settings」→「Pages」で「Source」を「GitHub Actions」に設定します。公開URLはhttps://ユーザー名.github.io/リポジトリ名/となります。

Next.jsアプリをVercelにデプロイ

モダンなフロントエンドフレームワークを使ったアプリに最適です。

name: Deploy to Vercel

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Deploy to Vercel
        uses: amondnet/vercel-action@v20
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}
          vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
          vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
          vercel-args: '--prod'

必要なSecrets: VERCEL_TOKEN(アカウント設定から取得)、VERCEL_ORG_IDVERCEL_PROJECT_ID.vercel/project.jsonに記載)

レンタルサーバーにFTPデプロイ

従来型のレンタルサーバーを使っている場合に適しています。

name: Deploy via FTP

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: FTP Deploy
        uses: SamKirkland/FTP-Deploy-Action@4.3.0
        with:
          server: ${{ secrets.FTP_SERVER }}
          username: ${{ secrets.FTP_USERNAME }}
          password: ${{ secrets.FTP_PASSWORD }}
          server-dir: /public_html/
          exclude: |
            **/.git*
            **/node_modules/**

必要なSecrets: FTP_SERVER(ホスト名)、FTP_USERNAMEFTP_PASSWORD

より安全なSFTP接続やSSH鍵認証も利用できます。

運用で押さえるべき4つのポイント

ブランチ戦略の設計

本番環境へのデプロイはmainブランチ、開発環境はdevelopブランチというように、ブランチごとにデプロイ先を分けると安全です。

on:
  push:
    branches:
      - main  # 本番環境
      - develop  # 開発環境

環境ごとに異なるSecretsを使い分けることで、誤って本番環境にテストコードをデプロイするリスクを防げます。

エラー通知の設定

デプロイ失敗時にSlackやメールで通知を受け取る設定をしておくと、問題を素早く察知できます。

- name: Notify on failure
  if: failure()
  uses: 8398a7/action-slack@v3
  with:
    status: custom
    custom_payload: |
      {
        text: 'デプロイに失敗しました',
        attachments: [{
          color: 'danger',
          text: '${{ github.event.head_commit.message }}'
        }]
      }
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

ログの確認方法

GitHub ActionsのログはリポジトリのActionsタブから確認できます。各ステップの実行結果が詳細に記録されるため、エラー原因の特定が容易です。

ログは90日間保存されます。重要なデプロイ履歴は別途記録しておくと良いでしょう。

チーム運用のルール作り

複数人で運用する場合、以下のルールを決めておくとスムーズです。

  • デプロイ可能なブランチとタイミング
  • 緊急時のロールバック手順
  • Secrets管理の責任者
  • ワークフロー変更時のレビュー体制

ドキュメントとしてREADMEに記載し、チーム全員が参照できるようにしましょう。

よくあるトラブルと解決方法

ワークフローが実行されない

原因1: YAMLファイルの配置場所が間違っている
.github/workflows/フォルダ内に配置されているか確認

原因2: トリガー設定のブランチ名が違う
on.push.branchesの設定と、実際にpushしたブランチ名が一致しているか確認

原因3: GitHub Actionsが無効になっている
→ リポジトリの「Settings」→「Actions」で有効化されているか確認

Secretsの設定ミス

症状: 「Secret not found」エラーが出る
→ Secrets名のスペルミス、大文字小文字の間違いがないか確認

症状: 認証エラーが出る
→ Secretsの値が正しいか再確認。値は画面上で見えないため、不安な場合は再設定

デプロイ先のアクセス権限エラー

FTPエラー: サーバー側のファイアウォール設定を確認。GitHub ActionsのIPアドレスレンジを許可する必要がある場合があります。

SSH接続エラー: 秘密鍵のフォーマットが正しいか確認。改行コードやヘッダー・フッターが欠けていないかチェックしましょう。

初心者がつまずきやすいポイント

インデントのズレ: YAMLはスペース2つでインデントします。タブを使うとエラーになります。

ファイルパスの間違い: デプロイ先のパスは絶対パスで指定するか、相対パスの起点を正しく理解しましょう。

キャッシュの問題: 依存パッケージのキャッシュが原因でエラーになる場合があります。npm ciを使うと確実です。

まとめ:自動デプロイで本質的な仕事に集中しよう

GitHub Actions自動デプロイがもたらす3つの価値

時間の創出: 月間数時間〜数十時間のデプロイ作業から解放され、企画や改善など本質的な業務に時間を使えます。

品質の安定: 人的ミスがなくなり、本番環境の安定性が向上します。トラブル対応の時間も削減できます。

チーム力の向上: 属人化が解消され、誰でも安心してデプロイできる体制が整います。

小さく始めて徐々に拡張する

最初から完璧を目指す必要はありません。まずは開発環境への自動デプロイから始め、慣れてきたら本番環境、通知機能、テスト自動化と段階的に拡張していきましょう。

一度設定すれば継続的に効果を発揮し続けるため、早めに着手することをお勧めします。

さらに学びたい方へ

  • GitHub公式ドキュメント: 最新の機能と詳細な仕様を確認できます
  • GitHub Actions Marketplace: 便利なアクションを探せます
  • コミュニティ: Zenn、Qiita、Stack Overflowで事例や解決策を共有できます

ちょうどいいデジタル化を一緒に実現しませんか

Harmonic Societyは、中小企業向けの「ちょうどいい」デジタル化を支援しています。GitHub Actions導入の伴走サポートから、業務システム開発、AI活用まで、御社のビジネスに最適なソリューションをご提案します。

まずはお気軽にご相談ください。あなたのビジネスの成長を、私たちが全力でサポートします。

#GitHub#Actions#自動デプロイ
共有:

ちょっとした業務の悩みも、気軽にご相談ください。

まずは話だけ聞いてもらう