FTPアップロードをGitプッシュで自動化する方法
2022.10.22
2024.02.10
Web制作ではよく「Filezilla」などのFTPクライアントを使ってサーバーにアップロードするのですが、これって正直、面倒ではありませんか?
どうせGitを使ってバージョン管理しているのなら、GitHubにプッシュ→FTPアップロードが自動でできたら…なんて思ったことはありませんか?
実はそんな便利な機能、あるんです。紹介しますね。
仕組み
ローカル環境からプッシュをすることでGitHubに反映され、その変更を自動でサーバーにアップロードするという形になります。
GitHub上でSecrets→Actionsで認証設定をする
まずは、GitHubにログインし、該当のリポジトリを選択。
そして、以下の順番でクリックしていきます。
- Settings
- Secrets→Actions
- New Repository secret
New Repository secretsでの設定
New Repository secretsでは以下の3つを設定します。
- FTP_SERVER
- FTP_USERNAME
- FTP_PASSWORD
それぞれにFTPのホスト、ユーザー名、パスワードを設定してください。
設定ファイルを作成
ローカルのプロジェクトフォルダに「.github/workflows/deploy.yml」を作成します。
on:
push:
branches:
- main #ここは該当のブランチ
name: Deploy
jobs:
FTP-Deploy-Action:
name: FTP-Deploy-Action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: FTP-Deploy-Action
uses: SamKirkland/FTP-Deploy-Action@2.0.0
env:
FTP_SERVER: ${{ secrets.FTP_SERVER }} # Secretsと揃える
FTP_USERNAME: ${{ secrets.FTP_USERNAME }} # Secretsと揃える
FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }} # Secretsと揃える
LOCAL_DIR: ./
REMOTE_DIR: /example.com/public_html/example/wp/wp-content/themes/example-theme/
# アップロードしたいパスを設定
設定ファイルをプッシュ
いつも通り、GitHubにプッシュしましょう。
git add .
git commit -m "github workflow追加"
git push -u origin main
他のファイルを変更してみて反映されたら成功
プッシュした後、きちんと成功したかどうかを調べるためにはGitHubを開いてみるとファイル一覧にマークが表示されます。
マークは主に3種類。
チェックマーク(緑) | 成功、アップロード済み |
丸(黄土色) | 進行中、まだアップロードできていない |
丸(赤) | エラー、アップロードに失敗 |
成功したら変更が反映されているかを確認してみましょう。
アップロード失敗した時に確認すること
エラーが起こる原因は以下です。
- 指定したブランチが存在しない
- secretsの各値が間違っている
- アップロードするファイルパス(REMOTE_DIR)が存在しない
その他にGitHub側で問題が起こっている可能性があるのでエラーの内容をしっかり確認しましょう。
成功していても反映されていない時に確認すること
成功しても反映されないことが多々あります。そんなときは以下を確認してみてください。
- キャッシュ削除できていない
- アップロードするファイルパス(REMOTE_DIR)の記述が間違っている
まとめ(楽になるだけじゃないメリット)
今までのFTPクライアントでは変更したファイルをドラッグ&ドロップでアップロードしていましたが、GitHubで自動アップロード設定をすることでファイルを気にする事なくアップロード可能になりました。
また、Gitを介しているので事故が起こる確率が減りました。もし事故が起こっても履歴が残っているので、そのまま戻すことも可能です。
SourceTreeなどのGitクライアントを使って作業の”見える化”をするともっと事故を減らすことができます。