自動デプロイまでの大まかな流れ
リポジトリ配下に、例「.github/workflow/develop.yml」を用意し、YML内でFTP情報を入力する。(主に ホスト名、ユーザー名、アップロードディレクトリ の3点)
githubのリポジトリ内「Setting > Secrets and variables > Actions」でさくらインターネットのレンタルサーバFTPパスワードを登録する。
※サーバのコントロールパネルで国外IPアドレスフィルタを「無効」にしておく必要がある
自動デプロイをする理由
インターネット上へのデプロイ(=公開アップロード作業)は、重要な操作であり、さらにデプロイの頻度が高くなると面倒な作業にもなります。
そこで手動でFTPアップロードはせず、「GitHub Actions」を利用してgithub経由で自動化しておきたいものです。
間違えてファイルを消してしまった、異なるファイルをアップしてしまったなど….
緊急時にはなおさら注意不足になってしまうため、1つでもヒューマンエラーをなくすべきだと考えます。
今回はgithub経由でのデプロイ作業の自動化についてお話します。
はじめに(事前準備)
以下の作業が完了し、環境が整っていることを前提としています。
なお、こちらの記事では「さくらインターネット レンタルサーバ」への自動デプロイについて記述しています。
※他社レンタルサーバやさくらインターネット VPS(仮想専用サーバー)などの他サーバへの方法は微妙に異なる場合がございます
- githubのアカウント取得ならびにリポジトリの設置
- さくらインターネットのレンタルサーバが稼働している
- 2のレンタルサーバのFTP情報(ホスト名、ユーザー名、パスワード、アップロードディレクトリ)を準備
※こちらの記事では「さくらインターネット レンタルサーバ プレミアムプラン」を例にしています。
自動デプロイの設定方法
STEP1. YMLファイルの用意
git管理のファイル直下に「.github/workflow」なるディレクトリを準備します。
こちらのworkflowディレクトリ配下に任意のファイル名でYMLファイルを用意します。
ここではテスト環境を意図して「develop.yml」とします。
※デプロイしたいgitブランチはYMLファイル内に記載するため、ファイル名は任意でOKということになります。
STEP2. YMLファイルを環境にあわせて変更
用意したYMLファイルに以下を貼り付けます。
このあと解説する①〜⑤は、環境にあわせて変更してください。
①ブランチ名(例:develop)
自動デプロイの対象としたいgitブランチ名にします。
※対象ブランチを複数にしたい場合は、YMLファイル自体を複数作成してください
②FTPホスト名(例:user-name.sakura.ne.jp)
③FTPユーザー名(例:user-name)
④FTPアップロードディレクトリ(例:/home/user-name/www/test.xxxx.com/)
⑤アップロードしたくないファイル群の正規表現
例としてWordPressの場合を載せています。
wp-config.php(アップロードされてしまうと動かなくなる)や、gitの環境ファイルや開発時のアップロード画像など、公開されたくないファイル群を指定できます。
STEP3. サーバ側の設定変更
さくらインターネットのレンタルサーバでは、初期設定で海外からの不正なアクセスに対するセキュリティ強化が行われています。(国外IPアドレスフィルタ機能)
※海外からのウェブサイトが閲覧できなくなるものではありません
この機能を「無効化」する必要があります。
さくらのレンタルサーバ コントロールパネル > セキュリティ > 国外IPアドレスフィルタ
初期状態だとgithubからの自動デプロイが拒否されてしまう
国外IPアドレスフィルタがONになっていて拒否された場合のActionsエラー例:
FTPError: 425 Unable to build data connection: Operation not permitted
STEP4. FTPパスワードをgithubに登録
自動FTPアップロードするために、githubにFTPパスワードを登録する必要があります。
漏洩を防ぐため、登録後は参照ができない環境変数が設置できる「Secrets and variables」機能を用います。
githubリポジトリ内 > Settings > Secrets and variables > Actions より、
- Name:FTP_PASSWORD
- Secret:FTPパスワードを入力
して「Add secret」を押して完了です。
FTPパスワードが正常に設定されていない場合のActionsエラー例
Error: Input required and not supplied: password
STEP5. 自動デプロイしてみる
YMLファイルで設定したブランチ名にpushもしくはpull requestによるmergeをしてみます。
すると自動的にActionsが発行され、デプロイが開始されます。
ファイルの容量によりますが、200MB程度のWordPressの場合(例:数ページの静的ページメインのコーポレートサイト)、初回アップロードは約「1時間」かかりました。
その後の差分の修正などのcommitは数分で完了します。
注意事項
FTP情報がgithubリポジトリにアップされることになるため、githubリポジトリは非公開状態=privateで行ってください。(もちろんFTPパスワードはいずれの場合でも公開されません)
まとめ
いかがでしたでしょうか。
- githubリポジトリ管理の直下に「.github/workflow/develop.yml」ファイルを用意する
- 1のファイルにブランチ名と、FTP情報(ホスト名、ユーザー名、アップロードディレクトリ)を記載する
- さくらインターネット レンタルサーバのコントロールパネルで「国外IPアドレスフィルタ機能」を「無効化」する
- FTPパスワードをgithubの「Secrets and variables」に環境変数として登録する
- 指定したブランチにpushもしくはpull requestをmergeする
緊急時の対応や、深夜作業など…
忙しいときに限ってトラブルが起きてしまうものです。
二次被害を防ぐためにも、できる限り自動化できるところはロボットにお任せしたいところ。
今後も便利かつ安心できる制作のために、様々な情報をお届けいたします。