TL; DR
「国外IPアドレスフィルタ」をOFFにしましょう。
はじめに
みなさんこんにちは。
ユニファ初のアドベントカレンダーの12月22日を担当します。サーバーサイドエンジニアの柿本です。
知り合いに頼まれてホームページを作ることがあります。まあ本職ではないしデザインセンスの問題もあるのですが、それほどのレベルは求められないのでお小遣い稼ぎと思って作ります。
*ちなみにユニファは副業OKです!ユニファの数ある良いところのうちの一つですね。
静的サイトを作る時もソースコードをGitHubで管理しますが、ホスティングサーバーにFTPでアップして、それとは別にGitHubにpushするという二度手間をなんとかしたいと思っておりました。
GitHub Actions があるじゃないか!
GitHub Pagesを使えばpushするだけで反映されますが、サーバーサイドスクリプトが使えません。つまり、問い合わせフォームを置くのが難しくなります。
GitHub ActionsはGitHubのリポジトリにビルトインされているのでお手軽に使えるし、レンタルサーバーにFTPすればPHPも使えます。
GitHub Universe 2019で正式版リリースが発表されたばかりですね。早速使ってみます。
セットアップ
GitHub Actionsでやりたいことはたった一つ
masterブランチにpushされたら「さくらのレンタルサーバ」にFTPする
GitHub Actionsのセットアップの仕方をここにつらつらと書こうと思ったのですが、ネットで検索すればたくさん情報が出てくるので割愛します。
最終的な私の成果物はこちら↓↓↓
GitHub Actionsがいかに簡単に使えるかはご理解いただけると思います。
長い旅の始まり
FTP-Deploy-Action
というFTP関係のものでは比較的人気のあるサードパーティ製のactoinsを使って実行したのですが、待てども待てども終わりません。
lftpを直に使ってもダメでした。
curlでftpを使ってもダメでした。
SFTPにしてみても、ダメでした。
その他100通りくらい(は大袈裟ですが 汗)の手段を試しましたが、どれもダメでした!!
自分のmacでubuntu:latestをdockerで走らせて、そこからは問題なくFTPできるのですが、なぜかGitHub Actionsでは動きません。
IP制限でした
気づいてしまえば、「まあそうだよね」て話なのですが、FTPサーバーのIP制限が原因でした。 さくらのレンタルサーバはデフォルトで「国外IPアドレスフィルタ」がONになっています。 help.sakura.ad.jp
GitHubのサーバーが海外であることは想像に難くないですね。このフィルタ機能をOFFにしましょう。
学んだこと
1晩頑張ってうまくいかなかったらテクニカルサポートに問い合せしよう。
おそらく一瞬で解決したと思います。
ユニファでは、一緒に「保育をハックする」エンジニアを募集中です!
3日3晩寝不足になっても技術が好きな人を募集中です。(寝るのも大事)