Astroで静的サイトを構築する際、GitHubでのバージョン管理とサーバーへのデプロイを効率的に行いたいですよね。
この記事では、プロジェクト全体をGitHubで管理しつつ、必要な静的ファイル(dist フォルダ)だけをXServerやさくらなどのサーバーにアップロードする具体的な方法を解説します。
方法の概要
- GitHubでプロジェクト全体を管理: 開発ファイル(
srcフォルダ、astro.config.mjsなど)はそのままGitで管理。 - デプロイ時に
distフォルダのみアップロード: GitHub Actionsや手動アップロードでデプロイプロセスを設定。
1. GitHubでのプロジェクト管理
通常通りAstroプロジェクト全体をGitHubにプッシュします。
.gitignore の設定
dist フォルダはビルド時に生成されるため、Gitで管理しないよう .gitignore に追加します。
/node_modules
/.env
/distこれにより、dist フォルダはGitリポジトリに含まれません。
2. GitHub Actionsを使用してdist のみをサーバーにアップロードする方法
GitHub Actionsを使うと、リポジトリの更新時に自動でビルドし、dist フォルダをサーバーにアップロードできます。
1. サーバー情報の準備
- サーバーにSFTP(またはFTP)で接続可能な情報(ホスト名、ユーザー名、パスワードなど)を用意。
- GitHubのリポジトリの「Settings」 > 「Secrets」で、接続情報を設定します。
例: 以下のシークレットを作成
FTP_HOSTFTP_USERFTP_PASS
2. GitHub Actionsの設定ファイル
リポジトリの .github/workflows/deploy.yml に以下の設定を追加します:
name: Deploy Astro Project
on:
push:
branches:
- main # mainブランチにプッシュ時に実行
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# リポジトリのクローン
- name: Checkout code
uses: actions/checkout@v3
# Node.js のセットアップ
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
# パッケージのインストール
- name: Install dependencies
run: npm install
# ビルド
- name: Build project
run: npm run build
# distフォルダをサーバーにアップロード
- name: Deploy to FTP
uses: SamKirkland/FTP-Deploy-Action@4.3.0
with:
server: ${{ secrets.FTP_HOST }}
username: ${{ secrets.FTP_USER }}
password: ${{ secrets.FTP_PASS }}
local-dir: dist # アップロードするローカルフォルダ
server-dir: /public_html # サーバー上のアップロード先3. デプロイ後の確認
GitHub Actionsが正常に動作していれば、main ブランチにプッシュすると以下の手順が自動で実行されます:
- Astroプロジェクトをビルド。
distフォルダをサーバーにアップロード。
FTPクライアントやブラウザでサーバーの動作を確認してください。
まとめ
- GitHub管理: プロジェクト全体(
src、astro.config.mjsなど)はGitHubでバージョン管理。 distのみをアップロード: デプロイ時に必要な静的ファイルのみサーバーに配置。- GitHub Actionsの活用: 自動化することで手間を削減。
この設定により、開発効率を維持しつつ、デプロイを効率化できます。設定についてさらに詳しく知りたい場合やカスタマイズが必要な場合はお知らせください!
よくある質問
例えば、rsync や scp コマンドを利用すれば、ターミナルから簡単にアップロードが可能です。
シークレット情報が間違っている:
GitHub Secretsに登録した値(例: FTP_USER)が正しいか確認してください。
依存パッケージのインストールエラー:
package.json が最新か確認し、ローカルで npm install が成功するかテストしてください。
FTP接続エラー:
サーバーのホスト名、ユーザー名、パスワード、ポート番号が正しいか確認してください。
事前にバックアップを取得していれば、それをサーバーに復元してください。
ロールバック用のスクリプトを準備する:
過去の安定バージョンを即座にデプロイできるよう、GitHub Actionsにロールバック用ジョブを設定することをおすすめします。
サーバーでキャッシュをクリアする:
変更後も古いキャッシュが残っている場合、キャッシュクリアを実行してください。
誤ってデプロイした場合でも、迅速な復旧ができる体制を整えておくことが重要です。
Astro × GitHub × Cloudflareで学ぶモダンWeb開発
デザインの学校 これからはじめる HTML&CSSの本
Effective TypeScript 第2版