Nuxt.jsでSSGしたサイトをGitHubからXserverへftpsで自動デプロイする
背景
- クライアントさんがXserverをご所望。
- mainブランチへpushしたら自動でdeployしたい。
- 手動deployもできてほしい。
- すごく急ぎだったため設定にかける時間は最小限に。(ということでrsyncは断念)
Xserverの準備
サブFTPアカウントを作っておく。
GitHub Actionsの設定
想定
- パッケージマネージャはyarnを使用。
- Node.jsは14.xを使用。
FTPのホスト・アカウントをリポジトリのsecretに設定する
リポジトリのSettingsタブ→Serets ページで[New repository secret]ボタンを押して各パラメーターを入力しておく。
Actionを作成する
/.github/workflows/main.yml
name: Deploy
on:
push:
branches:
- main
workflow_dispatch:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '14.x' # プロジェクトに合わせて
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Cache Node.js modules
id: yarn-cache
uses: actions/cache@v2
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.OS }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.OS }}-yarn-
- name: Install dependencies
run: yarn install --frozen-lockfile --prefer-offline
- name: Build
run: yarn generate
- name: Deploy
uses: SamKirkland/FTP-Deploy-Action@2a4e9b1312ebeb73a1f72b9330c71831c1e4ce01 # v4.0.0 のコミットハッシュ
with:
server: ${{ secrets.FTP_HOST }}
username: ${{ secrets.FTP_USER }}
password: ${{ secrets.FTP_PW }}
protocol: ftps
security: strict
local-dir: dist/
server-dir: public_html/
state-name: ../ftp-deploy-sync-state.json # 管理ファイルは公開フォルダの外に置く
exclude: .nojekyll # Nuxtが親切に作ってくれるけどXserverには要らない
備考
syncではないからゴミが溜まる? 頻繁に更新するサイトやサイズが大きいサイトなら真面目にsyncの仕組みを設定する、いやむしろNetlifyあたりを提案する方がいいかも。
参考
Author And Source
この問題について(Nuxt.jsでSSGしたサイトをGitHubからXserverへftpsで自動デプロイする), 我々は、より多くの情報をここで見つけました https://qiita.com/pinalto/items/df1da49e50d754831375著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .