# Netlifyのプレビューデプロイを設定する
# 事の発端
というのもいつもサイト(blog)を更新するのには
- ブランチを切る
- 記事なりページを書く
- masterにマージ
- gitlabへpush
- Netlifyの自動デプロイが発火して本番環境に反映される
という手順を踏んでいました。
この手順ですと、vuepress内蔵のdevコマンドで確認するしかありません。もっとスマートな方法が無いのか・・・
と気軽にトゥートしたところえあい氏からアドバイスをいただいた。(ありがとうえあい)
んで、気になったのでちょっと調べてみたら、ねじわさ氏が既にgithubでの実行方法を書かれていました。
Netlify の Deploy Preview を使ってみる · nzws's 備忘録
こんなのがあったのか。なるほど。
# Netlifyの設定をする
とのことで設定してみる。
まずNetlifyのサイト設定のページを開いてSetting
->Build & deploy
->Deploy notifications
へ行く。
ヘルプへのリンクがあったので少し見てみる。Deploy notifications | Netlify Docs
元々はデプロイされたら通知先と連携を目的としている様だが、通知先によってはプレビューのデプロイとかテストビルドをしてくれるらしい。
# gitlab側でAPIトークンを発行しておく
githubではAPIトークンは不要だが、gitlabの場合はAPIトークンを発行する必要がある。ということで発行する。
右上のユーザアイコンからsetting
を選択するとユーザ設定のページに飛ぶので、左のUser Setting
からAccess Tokens
を選択。
Name
は適当にNetlify deploy notifications
とかわかりやすい名前に
Expires at
はトークンの失効日を指定します。私は適当に100年くらい先の2120-12-31
と書いておきました。
Scopes
には有効にするトークンにチェックします。今回はAPIだけ必要なのでAPI
にチェック。
gitlabのアクセストークンの設定についてはGitlab Docsにヘルプがあります。
Personal access tokens | GitLab
入力が完了したらCreate personal access token
をクリック。
Your new personal access token has been created.
と表示されて、下にトークンが表示されて発行するのでメモします。この表示は1度のみ表示されて、再度確認できないので忘れずにメモしておきます。また、他人へトークンが漏れないように注意してください。
# Netlify側の設定
Netlify側に戻ります。
Deploy notifications
のAdd notification
からGitlab merge request comment
をクリック。
Event to listen for
をDeploy Preview succeeded
を指定します。API access token
には先ほどgitlabから取得したトークンを入力します。最後にSave
をクリックして設定完了です。
この設定ではデプロイのプレビュービルドが成功した場合のみ通知されます。
失敗した場合も通知したい場合はEvent to listen for
でDeploy Preview faild
を選択した物を追加で作成してください。
トークンは同じ物を使用しても問題ありません。私は失敗しても通知したいため作成しました。
# 動作するか確認
すべての設定が終了したので、実際にMR(githubで言うPR)を行ってみます。
gitlabのサイトからMRを作成するとPipelineのメッセージが作成され・・・
ビルドが完了するとステータスがpassedに変更されます。
プレビュー用のURLがトークンを発行したユーザで自動的に書き込まれます。
# コミット単位で確認したい場合
先ほどの設定はMRのみでのデプロイでしたが、コミット単位でも実行することが可能です。
Deploy notifications
の設定項目にはあらかじめSend commit status to GitLab when Deploy Preview starts
、Send commit status to GitLab when Deploy Preview succeeds
、Send commit status to GitLab when Deploy Preview fails
が設定されているので、右の・・・
からedit nitification
を選択、API tokenにトークンを入力します。
さらにBuild & deploy
の設定にDeploy contexts
の項目があるのでEdit setting
をクリックし、Branch deploys
をAll
に設定しておくとすべてのコミットに対して実行されます。
ここでLet me add individual branches
を選択すると、特定のブランチに対してデプロイを発火することができます。たとえば対象ブランチにdevelop
ブランチに対して有効にしておけば、別に切ったブランチに対しては反応しません。たとえばfeature
と名付けたブランチをgitlab上にpushしてもfeature
に対してデプロイは発火しません。
これで試しにpushを行うとコミットの欄にMRと同様にデプロイの結果が表示されます。Netlifyの場合はわざわざgitlab CIを使用するよりかは簡単だと思います。
# 最後に
これでgitlab上でプレビューすることができるようになりました。わざわざyarn dev
とか打たなくてよくなりました。まあリアルタイムプレビューが便利なときもあるので使い方次第ですね。たとえばgitlabのwebUIから編集した場合なんかでもプレビューできるので、プレビュー手段は多数あった方が便利ですね。
ちょっと話はずれますが、ブログの記事を出先の環境とかでうまいことする方法ですが、ほた氏がブログでPR(ないしMR)を使うことで公開する方法を編み出していました。思わず「なるほど、そう言う方法もあるのか」と感心してしまった。こちらの記事でもDeploy previewsについて少し触れています。
詳しくは2019年に読んだコミックを振り返る - マツダイアリーのおまけ
を参照してください。
Netlifyはいいぞ。