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당을 제안하는 것이 좋을지도.

    참고


  • htps : // 기주 b. 코 m/아 c치온 s/카치ぇ/bぉb/마s r/에아 mpぇs. md #이므로 - r
  • htps : // 기주 b. 코 m / 사 mk rk ㎁ d / FTP-p
  • 좋은 웹페이지 즐겨찾기