0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Github Actionsでプロジェクトを自動デプロイしたい

Last updated at Posted at 2025-11-02

💡きっかけ

FileZillaのようなFTPソフトを使用して更新ファイルをアップロードするのが面倒で自動的にアップロードする方法を調べました。するとGitHub Actionsを使用すると自動更新が可能との事。
私が実際に実装した手順をまとめます。

🌱手順

0.Hello Worldを表示してみる

まず以下のページを参考にGituhub Actionsを動かしてみましょう。

その後、以下の手順でGithub Actionsで開発中のプロジェクトを自動デプロイします。上記ページのシンプルな方法で一度手順を確認してから実際のプロジェクトでGitHub Actionsを使用するのがおすすめです。

1. 必要情報を確認する

契約しているサーバーのFTP情報を確認します。大抵はサーバー管理画面のFTPサーバー、アカウント情報に記載されています。FTP_TARGET_DIRはアップロード先のサーバー内でのパス情報です。パスの末尾には/スラッシュが必要です(無いと最後には入れてくださいとエラーになります)

Name 入力内容 備考
FTP_HOST FTPサーバーアドレス サーバーパネルで確認できます
FTP_USER FTPユーザー名 サーバーパネルで確認できます
FTP_PASS FTPパスワード サーバーパネルで確認できます
FTP_TARGET_DIR プロジェクト格納サーバーのパス情報 ファイルマネージャーなどで確認できます

2. プロジェクトをGithub連携する

リポジトリ作成後、ローカルプロジェクトをコミットしてGithub上にプロジェクトファイルをアップロードします。

3. GithubにFTP接続情報を設定

  1. リポジトリページ
  2. Settings
  3. Security>Secrets&variables>Actions
  4. ページ下部のRepositpry Secrets

ここに直接プロジェクトファイルに記録できないサーバー情報を記録します。Gituhub上で暗号化して記録されるので不正利用される心配がありません。
後ほどGitHub Actionsで使用するとYAML形式ファイルではこのRepository Secretsの値を参照して自動デプロイします。

4. ローカルファイルで.github/workflows/deploy.ymlを作成

Github ActionsはYAML形式ファイルを読み込んで自動化処理を実行します。VScodeで.githubファイルとその子ファイルとしてworkflowsを作成してworkflowsに~.yml(~は任意。deploy.ymlなど)を作成します。

workflowsがworkflowになっていると正常に動作しないので注意してください。今回は作成した〜ymlファイルに以下のコードを記述します。

deploy.yml

name: Deploy to StarServer via FTP

on:
  push:
    branches:
      - main  # mainブランチにpushしたら実行

jobs:
  ftp-deploy:
    runs-on: ubuntu-latest

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

      - name: Upload files via FTP
        uses: SamKirkland/FTP-Deploy-Action@v4.3.5
        with:
          server: ${{ secrets.FTP_HOST }}
          username: ${{ secrets.FTP_USER }}
          password: ${{ secrets.FTP_PASS }}
          server-dir: ${{ secrets.FTP_TARGET_DIR }}
          local-dir: ./
          exclude: |
            **/.git*
            **/.github/**
            **/node_modules/**
            **/README.md

5. コミットを実行

mainブランチにコミットしてGithubのActionsページを確認しましょう。最初は3分程度、次回以降からは20秒程度でActionsの動作が完了します。エラーが出る場合はエラーメッセージを確認して内容を修正しましょう。私はプロジェクトのパス情報などを誤っていたので、「Actionsが完了しない」や「Actionsは完了したが、サーバーのデータが越ンされていない」などの状態になりました。

⚠️注意点

Repository Secretsの情報

パス情報が誤っているとActionsが失敗したり、正常に完了してもファイルデータが更新されない(変更内容がサーバーで反映されていない)状態になります。サーバーのファイルマネージャーでパス情報を確認しましょう。FTP_TARGET_DIRは最後にスラッシュが必要です。

gitignoreとサーバーファイル

GitHubやサーバーにはセキュリティ上、アップロードしない方が良いファイルが存在します(データベース接続情報などで)
これらのファイルは適切にファイル構造を整理して最初の段階でGitの追跡ファイルやサーバーへのアップロードファイルから除外しましょう。Github ActionsではYAML形式ファイル内で除外するファイルを指定できます。

サーバーを変更

開発中にアップロードサーバーを別のものに変更したい場合、Repository Secretsで設定した値を変更するとそのサーバーにアップロード先を変更できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?