GitHubでmainブランチにプッシュされたら、レンタルサーバ上に転送されるように設定していきます。

Astroプロジェクト側の設定

プロジェクトルートに、
.github/workflows
を作成します。

その中にyamlファイルを作成します。名前は任意でOKです。

.github/workflows/actions.yml

name: Deploy website on push
  on:
    push:
      branches:
        - main

  jobs:
    deploy:
      name: Deploy
      runs-on: ubuntu-latest

    steps:
      - name: Get latest code
        uses: actions/checkout@v3

      - name: Use Node.js 16
        uses: actions/setup-node@v3
        with:
          node-version: "16"

      - name: Build Project
        run: |
          npm install
          npm run build

      - name: Sync files
        uses: SamKirkland/FTP-Deploy-Action@v4.3.4
        with:
          server: ${{ secrets.FTP_SERVER }}
          username: ${{ secrets.FTP_USERNAME }}
          password: ${{ secrets.FTP_PASSWORD }}
          local-dir: ./dist/
          server-dir: ${{ secrets.FTP_SERVER_DIR }}
          protocol: ftp

このようにして保存します。

uses: actions/checkout@v3
uses: actions/setup-node@v3
uses: SamKirkland/FTP-Deploy-Action@v4.3.4

ここのバージョンは適宜変更してください。

 

GitHub側でActions secretsの設定

次に、先程のyamlファイルの、

server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
server-dir: ${{ secrets.FTP_SERVER_DIR }}

この部分の設定をGitHub側で設定します。

GitHubのリポジトリから、
Settings > Secrets and variables > Actions
ここから、Secretsタブで「New repository secret」ボタンをクリックします。

クリックすると、下記のような画面になるので、
FTP_SERVER
FTP_USERNAME
FTP_PASSWORD
FTP_SERVER_DIR
これをそれぞれ作成して、FTPの情報を入れていきます。

この設定ができたらGitHub側の設定は完了です。

 

mainブランチにプッシュ

あとはmainブランチにプッシュして、ビルドされサーバ上にデプロイできていれば完了です。

わざわざFTPソフトを開かずにできてしまうのでとても便利ですね。