【毎朝自動更新】Vercel Cron Jobs × REST APIで作る、定時デプロイの仕組み
情報がなかなか見つからなかったので、備忘録としてまとめます。
毎朝決まった時間に、自動で最新情報を取得・デプロイして反映されるWebアプリをVercelの機能を活用して構築します。
今回は以下の構成で、自動デプロイの仕組みを作りました:
- Vercel REST API:手動操作なしにデプロイを実行
- フレームワークのAPIルート:デプロイ処理を実装
- Vercel Cron Jobs:指定時刻にAPIを呼び出す
✅ やりたいこと
- 毎日朝4時に自動デプロイを実行し、最新の情報を反映
- デプロイ作業の自動化により、運用コスト削減
- APIの呼び出しタイミングを制御して無駄なリクエストを削減
🔧 使用技術と要件
項目 | 内容 |
---|---|
フレームワーク | Astro |
デプロイ | Vercel |
デプロイ方式 | REST API |
時刻指定 | Cron Jobs |
Astro以外でも「Vercelにデプロイ可能」「APIルートを持てる」構成であれば同様の仕組みを導入可能だと思います(未検証)。
🧩 自動更新の流れ
-
Vercel Cron Jobs
で決まった時間にAPIを呼び出す - APIルート内で
VercelのREST API
を叩いてデプロイを実行 - 最新情報が反映されたサイトが毎日自動更新される
🧰 準備
※アプリケーションの実装は省略しております
必要なもの
- Vercel アカウント
- GitHub リポジトリ
- Vercel API トークン(REST API 用)
① Vercelトークンの取得
- Vercel ダッシュボード右上 →
Account Settings
- 「Tokens」タブで新規トークンを発行
-
.env
に設定
VERCEL_TOKEN=ここにトークン
② デプロイAPIの実装
こちらを参考にしながらデプロイを実装していきましょう
// src/pages/api/deploy.ts
import type { APIRoute } from 'astro';
import { Vercel } from '@vercel/sdk';
const vercel = new Vercel({
bearerToken: import.meta.env.VERCEL_TOKEN,
});
export const GET: APIRoute = async () => {
try {
const createResponse = await vercel.deployments.createDeployment({
requestBody: {
name: 'recent-developments-dashboard',
target: 'production',
gitSource: {
type: 'github',
repoId: '964910633', // GitHubのリポジトリID
ref: 'main',
org: 'morimorig3', // GitHubのユーザーID
},
},
});
return new Response(JSON.stringify({ success: true, createResponse }), {
status: 200,
});
} catch (error) {
return new Response(JSON.stringify({ error: String(error) }), {
status: 500,
});
}
};
📌 リポジトリIDの確認方法:
リポジトリIDは次のGitHubAPIを呼び出すことで確認することができます
https://api.github.com/repos/{ユーザー名}/{リポジトリ名}
ex.) https://api.github.com/repos/morimorig3/recent-developments-dashboard
vercel.json
の設定
③ プロジェクトルーチにvercel.json
を作成して設定を記述します
pathには実装したAPIのパスを、scheduleにはcron式で希望の時間を記述します
{
"crons": [
{
"path": "/api/deploy",
"schedule": "0 19 * * *"
}
]
}
これは JSTで午前4時(UTC+9)に実行される設定です
vercel.json
を作成することで、Vercelのダッシュボード → Settingsタブ → Cron Jobsにタスクが表示されます
④ ローカル確認
npm run dev
curl http://localhost:4321/api/deploy -v
※URLの指定はご自身の環境に合わせて変更してください
Vercelのダッシュボード → Deployments タブで実行結果を確認。
成功した場合、新しくデプロイメントが実行されます
⑤ デプロイと環境変数の設定
-
GitHubとVercelを連携してデプロイ.
https://vercel.com/docs/git/vercel-for-github -
トークンをVercelのプロジェクトに設定:
Settings > Environment Variables > VERCEL_TOKEN
⑥ Cron Job 実行確認
Project Settings > Cron Jobs > Run
から手動でタスクを実行してみましょう
成功した場合、新しくデプロイメントが実行されます
🚨 注意点
- Hobbyプランでは時間通りに実行されない可能性があります
- 厳密な時間管理が必要な場合は有料プランの検討を
参考:
✅ まとめ
今回は、Vercel × Cron Jobs を使って、毎日定時にデプロイを実行する仕組みを構築しました。
「ちょっとした運用の自動化」 にはかなり手軽でおすすめです。
よければぜひ試してみてください!
📎 サンプルコード:
Discussion