Netlifyの継続的デプロイ（自動デプロイ）を無償の範囲内で作成する

## この記事の内容
`Netlify`で静的サイトをホスティングしていたのですが、9月30日から **「組織のアカウント」** で **「プライベートリポジトリ」** の場合、 **「継続的デプロイ」** （自動デプロイ）が利用できなくなってしまうとのこと。今関わっているプロダクトにまさにこの条件に合致するサイトがあったので、その時にとった対策を記載しました。

## 前提 - 当人のNetlify知識量
普段HPのメンテナンスはしているけれども、本格的に`Netlify`を触ったことはない。そもそも、どうやって今まで自動デプロイをしていたのかもよくわかっていない状態でした。

## やったこと
### やること確認
まずはともかく、何が起こって、何ができなくなるのか。対応しなければならないことは何かを把握しました。以下の2022年10月以降の変更点を案内する記事を読みました。

▼2022年10月以降の変更点の案内

https://www.netlify.com/pricing/private-org-repo-faq/?utm_campaign=Email%20-%20Announcement%20-%202022-08%20-%20Private%20Org%20Repo%20Out%20of%20Compliance&utm_medium=email&_hsmi=223255275&_hsenc=p2ANqtz-8w9l0BpCl-FtShE9pTXDvt8K8tRdaJcJONlQzYZ531maGOmGTnkfpAJCNVkJ3CZzOJZYHIpVb8QkgzdaqivH1sk5Wpcw&utm_content=223255275&utm_source=hs_email

それによると、以下のことが起こり、以下の対応をしなければならないとのことでした。

#### 起こること

- 組織が所有するプライベート GitHub リポジトリから継続的デプロイをする機能が、有償プランに移行する

#### 選択したこと
選択肢は二つあったので、以下の内容を選択しました。
- **選択肢１** 有償プランへの移行
- **選択肢2** 無償プランのまま頑張る -> 今回はこちらを選択

#### やるべきこと
無償プランのまま頑張る場合、上記の案内によると
- 個人アカウントへの移行　または
- リポジトリの設定をPublicにする

なら自動デプロイが継続できると案内されていましたが、今回はどちらも選択したくありません。なので、別のオプションを探しました。

## 今後のデプロイ方法の候補（手動、自動）とその手順

[Netlifyのデプロイに関するガイド](https://docs.netlify.com/site-deploys/create-deploys/)あたりを見ていると、上記2つを選択しないでデプロイするには下記の手順が必要かなと思いました。

1. [ローカルでビルド](https://docs.netlify.com/cli/get-started/#run-builds-locally)
1. [手動デプロイ](https://docs.netlify.com/site-deploys/overview/)
1. それの継続的デプロイ（できれば）

ビルドとてプロイについては、それぞれ以下のコマンドで実行できました。

▼CLIから手動でデプロイする
```sh
netlify deploy --prod
```

▼CLIから手動でデプロイプレビューを作成する
```sh
netlify deploy --build --context deploy-preview
# プレビューの内容が良さそうなら
netlify deploy --build --prod
```

### 継続的デプロイの設定方法
最後に、継続的デプロイの設定方法です。これは、公式にはなかなか載っておらず、少し苦労しました。ここからお金取ろうとしているのだもの、当たり前ですよね。。。

### Webhookを利用した、自動デプロイ

まず、[Netlifyの機能でWebhookから自動デプロイを作成できます。](https://www.netlify.com/blog/2020/04/24/automate-contentful-deploys-with-netlify-webhooks/)詳細は左の記事に譲りますが、こちらはダメでした。
いそいそと設定したは良いものの、9月30日以降使えなくなりますとの案内が出てしまいました。

### Zapierで自動化する方法
[Zapierワークフロー作成のアプリ](https://www.netlify.com/blog/2018/11/07/automate-your-netlify-sites-with-zapier/?_ga=2.192526826.1319839786.1662517972-1986787729.1660698713)を使用して自動デプロイを構成することもできる様でしたが、
まだプッシュごと・プルリクエストごとに自動デプロイを簡単に構成できるようにはなっていないようでした。残念。

### GithubActionsで自動デプロイを作成
結局、公式には載っていない方法でしたが、GithubActionsで自動デプロイを作成しました。
このブログの内容を参考にさせていただきつつ、

https://kosa3.medium.com/github-actions%E3%81%A7netlify%E3%81%AB%E8%87%AA%E5%8B%95%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%99%E3%82%8B-22ac30e02528

この様なものを作成

```yaml
name: Deploy Preview

on:
  pull_request:
    branches:
      - master

jobs:
  publish:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@master

    - name: Deploy to Netlify
      id: deploy-netlify
      uses: netlify/actions/cli@master
      env:
        NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
        NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
      with:
        args: deploy --dir=./ 
        # 本番にデプロイしたい時には、ここにdeploy --prod というフラグをつける

    - name: Netlify Preview URL
      uses: unsplash/comment-on-pr@master
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        OUTPUT: "This pull request is being automatically deployed to Netlify.\n\n🔍 Inspect: ${{ steps.deploy-netlify.outputs.NETLIFY_LOGS_URL }}\n✅ Preview: ${{ steps.deploy-netlify.outputs.NETLIFY_URL }}"
      with:
        msg: ${{ env.OUTPUT }}
        check_for_duplicate_msg: false

```

こちらでデプロイができました。

## 感想
ゴールがどこかわからないのを調べるのは本当に大変で。。。先輩にヒントをもらいながら落とし所を決めました。
もう少し効率的に作っていきたいです。