GitHub Actions FTP Deployの仕組みを解説 🚀

コードをGitHubにアップロードするだけで、自動的にWebサーバーにファイルが転送される魔法のような仕組みを分かりやすく解説します。

全体の流れ

1. あなたがコードをpushする

あなたのパソコン → GitHub リポジトリ

いつものように`git push`でコードをGitHubに送信します。

2. GitHub Actionsが動き出す

GitHubが「新しいコードが来た!」と察知して、自動的に作業を開始します。

3. 仮想のパソコンが起動

GitHub が仮想のUbuntuパソコンを用意してくれます。このパソコンで作業が行われます。

4. あなたのコードがダウンロードされる

仮想パソコンに、あなたがpushしたコードがダウンロードされます。

5. FTPでサーバーに転送

仮想パソコンからあなたのWebサーバーへ、FTPでファイルが送信されます。

設定ファイルの例

`.github/workflows/deploy.yml`というファイルを作成します:

name: ウェブサイトをサーバーに自動デプロイ

# いつ実行するか
on:
  push:
    branches: [ main ]  # mainブランチにpushされたとき

jobs:
  deploy:
    runs-on: ubuntu-latest  # Ubuntu仮想マシンを使用
    
    steps:
    # ステップ1: コードをダウンロード
    - name: コードをチェックアウト
      uses: actions/checkout@v3
    
    # ステップ2: FTPでサーバーに転送
    - name: サーバーにFTPアップロード
      uses: SamKirkland/FTP-deploy-action@4.3.3
      with:
        server: あなたのサーバー.com
        username: ${{ secrets.FTP_USERNAME }}
        password: ${{ secrets.FTP_PASSWORD }}
        local-dir: ./public/          # アップロードしたいフォルダ
        server-dir: /public_html/     # サーバー上の置き場所

FTP Deploy Actionの詳細な動作

ステップ1: サーバーへの接続

仮想パソコン → あなたのWebサーバー
  • FTPサーバーに接続を試行
  • ユーザー名とパスワードで認証
  • 接続できない場合はエラーで停止

ステップ2: ファイルの比較

既存のファイル ⚖️ 新しいファイル
  • サーバーにあるファイルと比較
  • 変更されたファイルだけを特定
  • 無駄な転送を避けるための賢い仕組み

ステップ3: ファイルの転送

📤 新しいファイル → アップロード
📝 変更されたファイル → 上書き
🗑️ 削除されたファイル → サーバーからも削除

ステップ4: 作業完了

  • 転送が完了すると、仮想パソコンは自動的に削除されます
  • あなたのWebサイトが更新されています!

実際のログの見方

成功時

📁 ローカルの "public" をリモートの "public_html" と同期中
🔍 ファイルをチェック中...
📤 index.html をアップロード中
📤 style.css をアップロード中  
📤 script.js をアップロード中
✅ デプロイ完了!

エラー時

❌ エラー: FTP接続に失敗しました
原因の可能性:
- サーバーアドレスが間違っている
- ユーザー名・パスワードが間違っている
- サーバーのファイアウォール設定

必要な準備

1. GitHub Secretsの設定

リポジトリの設定で、以下の秘密情報を登録します:

  • `FTP_USERNAME`: FTPのユーザー名
  • `FTP_PASSWORD`: FTPのパスワード
  • `FTP_SERVER`: サーバーのアドレス

2. サーバー側の準備

  • FTPアクセスが有効になっていること
  • 適切なフォルダ権限が設定されていること

メリット

  • 自動化: pushするだけで公開される
  • 効率的: 変更されたファイルのみ転送
  • 安全: パスワードはGitHub Secretsで保護
  • 履歴管理: デプロイの記録が残る

注意点

  • FTPは暗号化されていないため、重要なデータには不向き
  • より安全なSFTPの使用を推奨
  • サーバーの設定によっては追加の準備が必要

まとめ

GitHub Actions FTP Deployを使うことで、コードをpushするだけで自動的にWebサイトが更新されるようになります。一度設定してしまえば、あとは普通にコードを書いてpushするだけ。まるで魔法のような便利さを体験できますよ!