Как получить версию развернутого артефакта Cloudflare Worker в коде

Вопрос или проблема

У меня есть воркер Cloudflare, реализованный на JavaScript, и я хочу получить номер версии (тот же, что отображается в интерфейсе Cloudflare). Мне нужен этот код для генерации cacheKey, который меняется после обновления программного обеспечения. В противном случае у меня регулярно происходят сбои из-за несовместимых данных кэша.

 wrangler deploy cloudflarewrapper.js
 ⛅️ wrangler 3.0.1 (доступно обновление 3.78.11)
-------------------------------------------------------
Общий размер загрузки: 1873.17 KiB / gzip: 278.74 KiB
Загружен myscript (4.90 сек)
Опубликован myscript (1.40 сек)
  https://myscript.xx.workers.dev
Текущий ID развертывания: 506d732c-7cda-11ef-ba53-136088c204d0
                       ^^^^^^^^

Я хочу этот код или полный uuid. Тот же идентификатор также используется в панели управления, статистике и журналах.

export default {
  async fetch(request, env, ctx) {
    const cacheUrl = new URL(request.url);

    // Конструируем ключ кэша из URL кэша
    const cacheKey = new Request(cacheUrl.toString() + currentActiveVersion, request);
                                                       ^^^^^^^^^^^^^^^^^^^^

Ответ или решение

Чтобы получить версию развернутого артефакта Cloudflare Worker в коде, вы можете использовать переменные окружения и встроенные функции API. Поскольку Cloudflare Workers не предоставляет прямого способа для доступа к версии развертывания (таким как идентификатор развертывания), вы можете использовать некое альтернативное решение.

Один из способов – это хранить версию в переменных окружения непосредственно через ваш wrangler.toml файл при развертывании. Вы можете добавить версию как переменную окружения, а затем получить её внутри вашего Worker.

Шаги для решения задачи:

  1. Добавление версии в wrangler.toml:
    Вам нужно определить переменные окружения в вашем wrangler.toml файле. Для этого добавьте секцию [env] или vars и укажите версию:

    [env.production]
    vars = { VERSION = "1.0.0" }

    При каждом обновлении вашего кода, вы должны будете обновлять значение версии.

  2. Использование версии в коде Worker:
    Затем в вашем Worker коде вы сможете получить значение переменной окружения VERSION следующим образом:

    export default {
     async fetch(request, env, ctx) {
       const cacheUrl = new URL(request.url);
    
       // Получаем версию из переменной окружения
       const currentVersion = env.VERSION;
    
       // Строим ключ кэша, на который влияют изменения версии
       const cacheKey = new Request(cacheUrl.toString() + currentVersion, request);
    
       // Логика обработки запроса
       return new Response("Cache key constructed: " + cacheKey.url);
     }
    };
  3. Обновление переменной версии:
    Каждый раз, когда вы вносите изменения в ваше приложение и развертываете его, не забудьте обновить значение VERSION в вашем wrangler.toml. Это гарантирует, что ваш кэш будет инвалидацией при изменении кода.

Примечания:

  • Использование переменной окружения позволяет вам контролировать версию вашего развертывания непосредственно из кода Worker.
  • Вы также можете использовать другие средства версионирования приложений, такие как Git, чтобы автоматически обновлять значение версии, но это потребует дополнительной интеграции с вашим процессом развертывания.

Таким образом, вы сможете гарантировать, что ваш кэш будет обновляться при каждом развертывании проекта, предотвращая несоответствия с устаревшими данными в кэше.

Оцените материал
Добавить комментарий

Капча загружается...