背景
レンタルサーバーFTP手動アップがひたすら面倒。
レンタルサーバーFTPでもデプロイスクリプトを用意してデプロイを楽するの記事のようにレンタルサーバーFTPでもコマンドでデプロイできるが、もっと楽したい。
環境
もっと簡単にDockerでNuxt.jsを始めてみる(続Dockerでローカル環境を汚さずにNuxt.jsを始めてみる).
こちらの記事の環境が前提で一旦はNuxt.jsの構築ができており、Nuxt.jsをレンタルサーバーFTPでアップします。
結論
Travis CIのCustom Deployment
にはSFTPの記述がありますが、全然うまく行きません。Git + CI + lftp で自動アップロードする方法という記事を参考にlftpを使います。
.travis.yml
language: node_js
node_js:
- "10"
cache:
directories:
- "node_modules"
install:
- npm install
- npm run generate
before_install:
- chmod +x deploy.sh
- sudo apt update
- sudo apt install -y lftp
script:
- echo "Skipping tests" #本来は駄目ですがテストは一旦スルーする。
after_success:
- sh deploy.sh
deploy.sh
FTP_USER,FTP_PASSWORD FTP_HOST
はそれぞれ、環境変数をTravis CIで設定してください。
FTP_REMOTE_ROOTはFTPの反映したいディレクトリです。ここは別に環境変数じゃなくても良さそうです。
#!/bin/bash
lftp -c "set ftp:use-mdtm off;set ftp:ssl-allow no; open -u $FTP_USER,$FTP_PASSWORD $FTP_HOST; mirror --ignore-time -R dist/. /$FTP_REMOTE_ROOT/ --parallel=20"
set ftp:use-mdtm off;set ftp:ssl-allow no
と--ignore-time
がコツです。
set ftp:use-mdtm off
と--ignore-time
を設定しないとFTPアップロードが激遅ですし、set ftp:ssl-allow no
を設定しないとそもそも証明書の関連でエラーが発生します。
あとはNuxt.jsのリポジトリをGitHubに登録して、Travis CIと連携させて、masterにpushすればCIができます。