INTEGRITY Документация

GitHub Actions

Workers можно развёртывать с помощью GitHub Actions. Вот как можно настроить workflow GitHub Actions.

1. Аутентификация

При локальном запуске Wrangler аутентификация в API Cloudflare выполняется через wrangler login команду, которая запускает интерактивный процесс аутентификации. Поскольку среды CI/CD неинтерактивны, Wrangler требует API-токен Cloudflare и ID аккаунта чтобы пройти аутентификацию в Cloudflare API.

Cloudflare account ID

Чтобы найти свой Cloudflare Account ID, см. Найдите ID аккаунта и зоны.

API-токен

Чтобы создать API-токен для аутентификации Wrangler в задании CI:

  1. На панели управления Cloudflare перейдите к разделу Токены API аккаунта страницу.

    Перейдите в Токены API аккаунта ↗
  2. Выберите Create Token.

  3. В разделе Политики разрешений, откройте Custom раскрывающемся списке и выберите Edit Cloudflare Workers.

  4. Настроить имя токена.

  5. Ограничьте область действия токена.

Вам нужно будет выбрать ресурсы аккаунта и зоны, к которым получит доступ созданный API токен. Рекомендуем ограничивать эти ресурсы максимально узко, чтобы снизить доступ токена. Например, если у вас есть доступ к трём разным аккаунтам Cloudflare, стоит ограничить созданный API токен только тем аккаунтом, в котором вы будете разворачивать Worker.

2. Настройка CI/CD

Способ запуска Wrangler в среде CI/CD зависит от конкретной настройки вашего проекта (используете ли вы GitHub Actions, Jenkins, GitLab или что-то совершенно иное).

Чтобы настроить CI/CD:

  1. Перейдите на платформу CI/CD и добавьте указанное ниже в качестве секретов:
  1. Создайте workflow, который будет отвечать за развёртывание Worker. Этот workflow должен запускаться wrangler deploy. Ознакомьтесь с примером GitHub Actions workflow в следующем разделе.

GitHub Actions

Cloudflare предоставляет официальное действие для развёртывания Workers. См. следующий пример workflow, который развёртывает ваш Worker при пуше в main ветки.

name: Deploy Worker
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
      - name: Build & Deploy Worker
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}