Vercel にサーバーレス関数を追加して、定期的にデプロイする方法
概要
Vercel は、Node.js アプリケーションをホストするための人気のあるクラウドプラットフォームです。Vercel では、サーバーレス関数を作成して、アプリケーションのさまざまな機能を実装することができます。
このチュートリアルでは、Vercel にサーバーレス関数を追加して、アプリケーションを定期的にデプロイする方法を説明します。
準備
このチュートリアルを完了するには、次のものが必要です:
- Vercel アカウント
- Node.js アプリケーション
.env
ファイルに追加するGITHUB_TOKEN
ステップ 1: サーバーレス関数の作成
まず、サーバーレス関数のコードを作成します。このコードは、Vercel API にデプロイ要求を送信します。
// pages/api/cron.js
const fetch = require("node-fetch");
const deploy = async () => {
const response = await fetch("https://api.vercel.com/v1/projects/YOUR_PROJECT_ID/deployments");
const body = await response.json();
console.log("Deploying...", body);
await response.headers.get("Location").then(location => fetch(location));
};
module.exports = {
get: async () => {
return await deploy();
},
};
このコードは、/api/cron エンドポイントを作成します。このエンドポイントは、get メソッドを呼び出すと、deploy() 関数を実行します。deploy() 関数は、Vercel API にデプロイ要求を送信します。
ステップ 2: Cron ジョブの追加
次に、vercel.json ファイルに Cron ジョブを追加します。このジョブは、サーバーレス関数を定期的に実行します。
{
"build": {
"target": "functions",
},
"functions": {
"cron": {
"script": "pages/api/cron.js",
"cron": "*/30 * * * *",
},
},
}
このコードは、cron という名前の新しい関数を追加します。この関数の script フィールドは、pages/api/cron.js ファイルを指定します。cron フィールドは、デプロイを実行する頻度を指定します。この場合、30 分ごとにデプロイを実行するように設定しています。
ステップ 3: .env ファイルに GITHUB_TOKEN を追加
Vercel API は、デプロイを実行するために、プロジェクトの GITHUB_TOKEN を必要とします。このトークンは、GitHub アカウントで生成できます。
GITHUB_TOKEN=YOUR_TOKEN
YOUR_TOKEN を、GitHub アカウントで生成した GITHUB_TOKEN に置き換えてください。
ステップ 4: プロジェクトを Vercel にデプロイ
これらのコードを追加したら、プロジェクトを Vercel にデプロイします。
vercel deploy
デプロイが完了したら、30 分ごとにデプロイが実行されるようになります。
補足
deploy()
関数をカスタマイズするには、次の方法があります:
body
オブジェクトを調べて、デプロイする特定のブランチやタグを指定できます。
response.headers.get("Location").then(location => fetch(location));
の代わりに、response.json().then(body => { ... });
を使用して、デプロイの詳細を取得できます。
また、デプロイをより頻繁に実行するには、cron
フィールドの値を変更します。たとえば、1 分ごとにデプロイを実行するには、*/1 * * * *
とします。
まとめ
このチュートリアルでは、Vercel にサーバーレス関数を追加して、アプリケーションを定期的にデプロイする方法について説明しました。この方法を使用して、アプリケーションの最新バージョンを常に利用できるようにすることができます。
共有