GitHub ActionsでさくらのレンタルサーバにCI/CD
今までず〜っと、FileZillaを使ってSFTPでサイトを更新してたんだけど・・・
さすがに古典がすぎないか!?Σ( ̄□ ̄;)
というわけで、モダンな方法を検討してみた。 よく聞くのは、サーバーにベアリポジトリを構築して、サイト丸ごとpushして、フックで定位置にcloneする方法。 ただこの方法は候補に挙げるより先にChatGPTから「これはやめろ」と回り込まれた。 ファイル構成がほぼほぼバイナリなのでgit管理が微妙なのと、過負荷でサーバーにkillされる可能性があるとのこと。 う〜む、確かに・・・
代案としてシェルスクリプトでのrsyncを激推しされたので採用。 古典度はあまり変わらない気がするけど、まあ、SFTPよりは遥かにマシ。 ただ、ぶっちゃけrsyncは全然使ったことがないのでよくわからん(苦笑)
ChatGPTがしきりに「初回は--checksumを付ける(重い)」「2回目以降は付けない(軽い)」と念押ししてくる理由がわからず。 事細かく理由を聞いても要領を得ず。 えいままよ言われるままに実行してようやく理解。 --checksumを付けるとハッシュが異なるファイルのアップロード + 全ファイルの属性同期なのね。 後者の動作は知らん初耳。 これでお膳立てされるため、2回目以降が安全・高速になるわけだ。
--checksumを付けない場合はサイズ・時刻での簡易差分チェックになるが、SFTPでアップロードしたファイルとの相性が悪い。 お膳立てを飛ばすと全ファイル差分扱いでアップロードされてしまう。 あぶないあぶない((;゜Д゜)
ここまではこのサイトの話。 もうひとつ『パスワードを簡単に使い分けるツール』はまた別問題。 こちらは手順が少々複雑でFileZillaでSFTPだと超面倒くさい。 幸い、こちらはGitHubで管理してるので既存のソリューションを使わせてもらう ────
ようやくタイトル回収。 GitHub Actionsのワークフローを作成。 pushしたら自動で色々やって最後にさくらのレンタルサーバにデプロイされるの図。 ね、これを手作業でやるのは面倒でしょ?
ちなみに、SSH鍵は念のため合鍵を作ってGitHubの「Secret」で管理。 いつのまにか、さくらのコントロールパネルで鍵作成できるようになったのね。 昔はドメイン移管すらできなかったのに、色々便利になったものだ( ´∀`)
