feat: add Timeweb Cloud provider for Woodpecker CI autoscaler
- Implement timewebcloud provider with DeployAgent, RemoveAgent, ListDeployedAgentNames - Add minimal HTTP API client for Timeweb Cloud (create/list/delete servers) - Register provider in main.go with CLI flags - Add timeweb-list and timeweb-tester utilities - Include Dockerfile and docker-compose.yml for deployment - Update DEPLOY.md with verified OS/preset IDs
This commit is contained in:
92
docs/DEPLOY.md
Normal file
92
docs/DEPLOY.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Инструкция по развертыванию
|
||||
|
||||
## 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-<random>`.
|
||||
4. Через 2-3 минуты агент подключится к серверу и заберет задачу.
|
||||
5. После завершения задачи и истечения `AGENT_IDLE_TIMEOUT` сервер будет удален.
|
||||
|
||||
## 6. Тестирование API (опционально)
|
||||
|
||||
Для проверки корректности API-клиента:
|
||||
|
||||
```bash
|
||||
# Список ОС и тарифов
|
||||
./timeweb-list
|
||||
|
||||
# Тест создания/удаления сервера
|
||||
TIMEWEB_API_TOKEN=your-token ./timeweb-tester
|
||||
```
|
||||
Reference in New Issue
Block a user