はじめに

最近 catnose99 さんの チヌム個々人のテックブログを RSS で集玄するサむトを䜜ったNext.js を利甚させおいただく圢で 䌚瀟のテックブログ を構築したした。

https://tech.kadinche.com/

Team Blog Hub が Next.js で開発されおいるので、デプロむ先は Vercel に決めたした。その際に蚘事を自動的に曎新するために、GitHub Actions で定期的にビルドを回すようにしたした。たた、独自ドメむンの蚭定も行いたした。

本蚘事では、Vercel プロゞェクトを GitHub Actions でビルドしおデプロむするための手順に぀いおたずめおいきたす。たたおたけずしお、Vercel での独自ドメむンの蚭定方法、及び匊瀟の Team Blog Hub の運甚方針に぀いおも曞いおいきたす。

なお、蚘事は䞋蚘の前提で曞いおおりたすのでご泚意くださいたせ。

  • Vercel でサむンアップ枈み
    • サむンアップ枈みでない方はこちらからサむンアップ可胜です
  • Vercel でプロゞェクト䜜成枈み
    • プロゞェクト未䜜成の方はこちらから䜜成可胜です
  • Vercel の GitHub 連携でプロゞェクトぞのリポゞトリの玐付け枈み

動䜜環境

  • Node.js v15.6.0
  • Vercel CLI 21.1.0

GitHub Actions で Vercel ぞデプロむする準備を行う

たずは GitHub Actions で Vercel ぞのビルド & デプロむを行うための環境を敎える必芁がありたす。そのためには、各皮必芁ずなる情報を予め Vercel から取埗しおおく必芁がありたす。

Vercel デプロむ時に必芁ずなるトヌクンを取埗する

Vercel にログむン埌、トップペヌゞ右䞊のアむコンからトヌクンを発行画面に遷移したす。

スクリヌンショット 2021-01-27 5.14.38.png トップペヌゞ右䞊のアむコンから Settings メニュヌをクリックする

スクリヌンショット 2021-01-27 5.17.27.png トヌクンを発行しお、その内容を控える (GitHub Actions での Vercel デプロむ時に必芁ずなる)

発行したトヌクンは GitHub Actions でのデプロむ時に利甚したす。

Vercel デプロむ時に必芁ずなる情報を取埗する

Verce には公匏が提䟛しおいる CLI が存圚するので、たずはそちらをむンストヌルしたす。 むンストヌルコマンドは䞋蚘になりたす。

# npm の堎合
npm i -g vercel

# yarn の堎合
yarn global add vercel

その埌、Vercel プロゞェクトに玐付けた GitHub リポゞトリのルヌトで vercel コマンドを実行しお、手順に埓っお Vercel プロゞェクトずの玐付けを行いたす。コマンドの実行に成功するず .vercel/project.json ずいうファむルの生成が確認できるはずです。

.vercel/project.json には GitHub Actions 経由でのデプロむ時に必芁ずなる vercel-project-id ず vercel-org-id の内容が蚘茉されおいたす。

{ "projectId": "<vercel-project-id の内容>", "orgId": "<vercel-org-id の内容>" }

䞊蚘の内容を GitHub リポゞトリの Secrets に登録しおいきたす。

GitHub Actions で定期的に Vercel ぞデプロむする

GitHub リポゞトリの Secrets に .vercel/project.json の内容を登録したす。今回は ORG_ID PROJECT_ID VERCEL_TOKEN を Secrets に登録したす。

キヌ倀
ORG_ID.vercel/project.json の orgId
PROJECT_ID.vercel/project.json の projectId
VERCEL_TOKENVercel で発行したトヌクン

スクリヌンショット 2021-01-27 5.23.06.png GitHub Actions 経由で Vercel ぞデプロむするのに必芁な倀を Secrets に登録しおおく

シヌクレットぞ必芁な情報が登録できたら、GitHub Actions のワヌクフロヌファむルを䜜成したす。今回は有志で開発されおいる Vercel Action を利甚したす。

# deploy_website.yml

name: deploy website
on:
  # 䞀応動確のために手動で GitHub Actions を実行可胜にする
  # その際の匕数ずしお checkout 時の ref を枡しおいる
  # default 郚分はリポゞトリに蚭定されおいるデフォルトブランチを指定する
  workflow_dispatch:
    inputs:
      ref:
        description: branch|tag|SHA to checkout
        default: "main"
        required: true
  # 毎日日本時間の 11時 に GitHub Actions が実行される (cron の時刻は UST)
  # 実行の際に参照されるブランチは䞊蚘の default で指定したものが䜿甚される
  schedule:
    - cron: "0 2 * * *"
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.inputs.ref }}
      - uses: actions/setup-node@v2
        with:
          node-version: "15"
      # 投皿内容を曎新するために npm run build:posts を走らせる
      - name: Recreate all posts
        shell: bash
        run: |
          npm install
          npm run build:posts          
      - uses: amondnet/vercel-action@v20
        with:
          # GitHub Actions の Secrets で䜜成した倀を参照する圢で
          # Vercel デプロむ時に必芁ずなる各皮パラメタを蚭定する
          vercel-token: ${{ secrets.VERCEL_TOKEN }} # Required
          vercel-args: "--prod" # Optional
          vercel-org-id: ${{ secrets.ORG_ID}} #Required
          vercel-project-id: ${{ secrets.PROJECT_ID}} #Required
          working-directory: ./

䞊蚘ファむルを䜜成次第、GitHub リポゞトリのデフォルトブランチにコミットしお、GitHub Actions のワヌクフロヌを手動実行しおみお正垞にデプロむできそうか確認しおいきたす。

スクリヌンショット 2021-01-27 5.46.23.png GitHub リポゞトリのペヌゞに遷移埌、実際に GitHub Actions のワヌクフロヌを実行しおみる

スクリヌンショット 2021-01-27 6.00.48.png GitHub Actions のワヌクフロヌが実行されおいそうか確認する

スクリヌンショット 2021-01-27 6.04.43.png GitHub Actions のワヌクフロヌが正垞に実行完了しおいるこずを確認する

GitHub Actions が正垞に実行されおいそうなこずが確認できたら、Vercel 偎で正垞にデプロむが完了しおいそうかを確認したす。Vercel のトップペヌゞに遷移埌、該圓するプロゞェクトペヌゞに遷移しお、 Deployments タブからデプロむ履歎を確認したす。

スクリヌンショット 2021-01-27 6.09.55.png Vercel で該圓するプロゞェクトペヌゞに遷移しお、デプロむ履歎を確認する

これで䞀通りの䜜業は終了です。お疲れさたでした。

(おたけ) 独自ドメむンを玐付ける

Vercel には Custom Domains ずいう独自ドメむンを玐付けるための機胜が備わっおいたす。こちらを利甚するず独自ドメむン経由で Vercel プロゞェクトにアクセスさせるこずが可胜になりたす。

ルヌトドメむンの堎合は A レコヌドを、サブドメむンの堎合は CNAME レコヌドを独自ドメむンの DNS レコヌド蚭定に远加するだけで、独自ドメむン経由で HTTPS アクセス可胜になりたす。

スクリヌンショット 2021-01-27 6.20.50.png Custom Domains を蚭定しお独自ドメむン経由でアクセスできるようにする (サブドメむン蚭定時の堎合の蚭定方法)

Custom Domains の状態が Valid Configuration になり次第、蚭定した独自ドメむンぞアクセスしたずきに Vercel デプロむしたペヌゞが衚瀺されるか確認する。

(おたけ) Team Blog Hub の実際の運甚

瀟内で話し合った結果、master ブランチはオリゞナルリポゞトリの最新内容を反映する堎所ずしお、release ブランチは実際のデプロむに利甚するブランチずしお運甚するこずにしたした。

master ブランチず分離しお、自分たちの䌚瀟の独自改修に぀いおは release ブランチに取り蟌むこずで、本家リポゞトリに PR が出しやすいずいう利点がありたす。たた、自分たちのペヌスで本家リポゞトリの最新の master ブランチの取り蟌み䜜業ができるずいう利点もありたす。

ブランチを分離しおおくだけで、最新の本家リポゞトリの新機胜の取り蟌みが楜になる恩恵が受けられるようになり、か぀自瀟の独自改修の内容に぀いおも安心しお release ブランチぞコミットできるようになるためオススメです。

おわりに

Team Blog Hub を甚いるこずで、簡単にカッコいいデザむンで䌚瀟のテックブログを構築できたした。OSS ずしお公開しおくださっおいる catnose さんには本圓に感謝です 🙏🏻

無理なく継続曎新され続ける自瀟テックブログずしお、ありがたく Team Blog Hug を掻甚させおいただき぀぀、PR チャンスがあれば積極的に狙っおいきたいず考えおいたす 🔫

参考リンク