# Инструкция по развертыванию ## 1. Получение API-токена Timeweb Cloud 1. Войдите в панель управления Timeweb Cloud: https://timeweb.cloud 2. Перейдите в раздел **"API и Terraform"**. 3. Создайте новый токен: - Задайте имя (например, `woodpecker-autoscaler`). - Выберите права: управление серверами (Servers). - Можно отключить подтверждение через Telegram для автоматизации. - Сохраните токен — он отображается только один раз. ## 2. Определение параметров сервера Проверенные параметры для CI-агента: | Параметр | Значение | Описание | |----------|----------|----------| | OS ID | `79` | Ubuntu 22.04 LTS | | Preset ID | `2451` | Cloud-40 (2 CPU, 2GB RAM, 40GB NVMe, 800 руб/мес) | | Availability Zone | `spb-1` | Санкт-Петербург (ru-1) | Другие варианты: - Ubuntu 24.04: `os_id=99` - Debian 12: `os_id=95` - Москва: `zone=msk-1`, `preset_id=4799` (Cloud MSK 40) - Новосибирск: `zone=nsk-1`, `preset_id=4241` (Cloud NSK 40) Для получения полного списка: ```bash ./timeweb-list ``` ## 3. Настройка Woodpecker Autoscaler Создайте `.env` файл: ```bash # Woodpecker Server WOODPECKER_SERVER=http://woodpecker-server:8000 WOODPECKER_TOKEN=your-woodpecker-admin-token WOODPECKER_GRPC_ADDR=woodpecker-server:9000 WOODPECKER_GRPC_SECURE=false # Autoscaler WOODPECKER_POOL_ID=twcloud WOODPECKER_MIN_AGENTS=0 WOODPECKER_MAX_AGENTS=5 WOODPECKER_WORKFLOWS_PER_AGENT=2 WOODPECKER_AGENT_IDLE_TIMEOUT=10m WOODPECKER_RECONCILIATION_INTERVAL=1m WOODPECKER_PROVIDER=timewebcloud # Timeweb Cloud WOODPECKER_TIMEWEBCLOUD_API_TOKEN=your-jwt-token WOODPECKER_TIMEWEBCLOUD_OS_ID=79 WOODPECKER_TIMEWEBCLOUD_PRESET_ID=2451 WOODPECKER_TIMEWEBCLOUD_AVAILABILITY_ZONE=spb-1 # Опционально: SSH-ключи для доступа к агентам # WOODPECKER_TIMEWEBCLOUD_SSH_KEY_IDS=1234 ``` ## 4. Запуск через Docker Compose ```bash docker-compose up -d ``` Просмотр логов: ```bash docker-compose logs -f woodpecker-autoscaler ``` ## 5. Проверка 1. Запушьте коммит в репозиторий, подключенный к Woodpecker. 2. В логах autoscaler должно появиться `create agent` и `create server`. 3. В панели Timeweb Cloud должен создаться новый сервер с именем `pool-twcloud-agent-`. 4. Через 2-3 минуты агент подключится к серверу и заберет задачу. 5. После завершения задачи и истечения `AGENT_IDLE_TIMEOUT` сервер будет удален. ## 6. Тестирование API (опционально) Для проверки корректности API-клиента: ```bash # Список ОС и тарифов ./timeweb-list # Тест создания/удаления сервера TIMEWEB_API_TOKEN=your-token ./timeweb-tester ```