Vercel にサーバーレス関数を追加して、定期的にデプロイする方法

共有

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 にサーバーレス関数を追加して、アプリケーションを定期的にデプロイする方法について説明しました。この方法を使用して、アプリケーションの最新バージョンを常に利用できるようにすることができます。

共有

🌐公式サイト