はじめる
このセクションでは、実際にnexterias/actions-vercelを利用してVercelにデプロイを行うための手順について説明します。
必要なもの
- GitHubアカウント
- Vercelアカウント
- Vercel CLI
リポジトリとVercelプロジェクトの作成
まずは、GitHub上にリポジトリを作成します。
bash
gh repo create --public --clone example-vercel-project
cd ./example-vercel-projectINFO
プライベートリポジトリを作成したい場合は、--publicフラグを削除して--privateフラグを付与してください。
次に、Vercel上にプロジェクトを作成します。
bash
vercel linkコマンドが正常に完了していれば、カレントディレクトリ上に.vercelというフォルダが作成され、その中にproject.jsonが作成されているはずです。
そのproject.jsonにprojectIdとorgIdという2つのプロパティが記載されているので、それぞれの値を控えてください。
bash
# projectId
cat ./vercel/project.json | jq -r '.projectId'
# orgId
cat ./vercel/project.json | jq -r '.orgId'Vercelのアクセストークンを作成
アカウントの設定に移動し、アクセストークンを作成してください。
| 項目 | 説明 |
|---|---|
| NAME | 任意の名前を入力 |
| SCOPE | 作成したVercelプロジェクトがあるチームを選択 |
| EXPIRATION | 任意の値を設定 |
上記の項目を埋めて、Createを押すとアクセストークンが手に入るので値を控えてください。
シークレット情報の登録
- github,comからリポジトリのページにアクセス
- Settingsタブをクリック
- Securityセクションから、Secrets and variablesをクリック
- Secretsタブをクリック
New repository secretから、上記の値を以下のように登録します。
| 名前 | 値 |
|---|---|
VERCEL_PROJECT_ID | projectIdの値 |
VERCEL_ORG_ID | orgIdの値 |
VERCEL_TOKEN | 作成したアクセストークン |
GitHub Actionsの設定
リポジトリに.github/workflowsディレクトリを作成し、その中にvercel.ymlというファイルを下記の内容を書き込んで作成してください。
yml
name: Vercel
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
permissions:
contents: read
deployments: write
statuses: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: nexterias/actions-vercel@v1
with:
token: ${{ secrets.VERCEL_TOKEN }}
org-id: ${{ secrets.VERCEL_ORG_ID }}
project-id: ${{ secrets.VERCEL_PROJECT_ID }}
production: ${{ github.ref == 'refs/heads/main' }}これで、GitHub Actionsを利用してVercelにデプロイを行うことができるようになります。
GITHUB_TOKENの権限
jobs.*.permissionsで指定している項目について補足
| 権限 | 説明 |
|---|---|
contents | actions/checkoutで必要 |
deployments | デプロイメントを作成、更新する為にwriteに設定 |
statuses | コミットステータスを作成、更新する為にwriteに設定 |
pull-requests | プルリクエストにコメントを作成する為にwriteに設定 |
contentsをreadだけに設定しても動作しますが、VercelのGitHub連携を模倣する機能が使えなくなります。