Woodpecker Server — это мощный инструмент непрерывной интеграции и доставки (CI/CD), который стал популярной open-source альтернативой Drone CI после изменения его лицензии. Если вы ищете надежное решение для автоматизации сборки Docker-образов, тестирования и деплоя приложений, Woodpecker — идеальный выбор для Docker-хостинга и самостоятельного развертывания.
Что такое Woodpecker Server и почему он нужен вашему проекту?
Woodpecker — это автономный (self-hosted) сервер CI/CD с открытым исходным кодом, написанный на Go. Он позволяет автоматизировать процессы сборки, тестирования и развертывания ваших приложений прямо на вашей инфраструктуре, включая Docker-хостинг.
Ключевые преимущества для DevOps-инженеров:
- Бесплатный и открытый — лицензия Apache 2.0
- Простота развертывания — работает в Docker-контейнерах
- Гибкая интеграция — GitHub, GitLab, Gitea, Bitbucket
- Контейнерная изоляция — каждый шаг выполняется в отдельном контейнере
- Масштабируемость — агентная архитектура
Примеры использования Woodpecker Server на практике
Пример 1: Сборка и тестирование Node.js приложения с Docker
yaml
# .woodpecker.yml для Node.js проекта
pipeline:
build-and-test:
image: node:18-alpine
commands:
- npm ci
- npm run build
- npm test
docker-build:
image: plugins/docker
when:
event: push
branch: main
settings:
registry: registry.dockerhosting.ru
repo: ${CI_REPO_OWNER}/${CI_REPO_NAME}
tags: latest,${CI_COMMIT_SHA:0:8}
username:
from_secret: docker_username
password:
from_secret: docker_password
Пример 2: Многоэтапный пайплайн для Python/Django с кэшированием
yaml
# .woodpecker.yml для Python проекта
pipeline:
setup:
image: python:3.11-slim
commands:
- pip install poetry
- poetry install --no-interaction
lint:
image: python:3.11-slim
commands:
- poetry run black --check .
- poetry run flake8 .
test:
image: python:3.11-slim
commands:
- poetry run pytest --cov=app tests/
deploy-staging:
image: alpine/k8s:1.27
when:
branch: staging
commands:
- kubectl apply -f k8s/staging/
- kubectl rollout status deployment/app-staging
Пример 3: Сборка мультиархитектурных Docker-образов
yaml
# Создание образов для amd64 и arm64
pipeline:
multiarch-build:
image: plugins/docker
settings:
repo: myapp/production
tags: ${CI_COMMIT_TAG:-latest}
multiarch:
- linux/amd64
- linux/arm64
username:
from_secret: registry_user
password:
from_secret: registry_token
Сравнение Woodpecker с популярными CI/CD системами
| Функция | Woodpecker | Jenkins | GitLab CI | GitHub Actions |
|---|---|---|---|---|
| Лицензия | Open Source | Open Source | Open Core | Проприетарная |
| Self-hosted | ✅ Да | ✅ Да | ✅ Да | ❌ Нет |
| Сложность | Низкая | Высокая | Средняя | Средняя |
| Интеграция с Docker | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Конфигурация как код | YAML | Groovy/DSL | YAML | YAML |
| Бесплатный тариф | Полностью | Полностью | Ограниченный | Ограниченный |
Быстрый старт: Установка Woodpecker на Docker-хостинг
1. Базовая установка через Docker Compose:
yaml
# docker-compose.yml
version: '3'
services:
woodpecker-server:
image: woodpeckerci/woodpecker-server:latest
restart: always
ports:
- "8000:8000"
environment:
- WOODPECKER_HOST=https://ci.dockerhosting.ru
- WOODPECKER_GITEA_URL=https://git.dockerhosting.ru
- WOODPECKER_GITEA_CLIENT=your-client-id
- WOODPECKER_GITEA_SECRET=your-secret-key
volumes:
- woodpecker-data:/var/lib/woodpecker/
woodpecker-agent:
image: woodpeckerci/woodpecker-agent:latest
restart: always
command: agent
depends_on:
- woodpecker-server
environment:
- WOODPECKER_SERVER=woodpecker-server:9000
- WOODPECKER_AGENT_SECRET=your-shared-secret
volumes:
- /var/run/docker.sock:/var/run/docker.sock
volumes:
woodpecker-data:
2. Настройка интеграции с Git-репозиторием:
bash
# Для интеграции с Gitea/GitHub: # 1. Создайте OAuth приложение в вашем Git-хостинге # 2. Укажите callback URL: https://ci.dockerhosting.ru/authorize # 3. Скопируйте Client ID и Secret в переменные Woodpecker
Продвинутые сценарии использования
Сценарий 1: Автоматический деплой на Docker Swarm
yaml
pipeline:
deploy-swarm:
image: docker:24-cli
commands:
- echo "$DOCKER_CA" > ca.pem
- echo "$DOCKER_CERT" > cert.pem
- echo "$DOCKER_KEY" > key.pem
- docker --tlsverify --host=$DOCKER_HOST stack deploy -c docker-compose.prod.yml myapp
secrets: [docker_ca, docker_cert, docker_key, docker_host]
Сценарий 2: Мониторинг и уведомления
yaml
pipeline:
build:
image: golang:1.21
commands:
- go build ./...
notify-success:
image: appleboy/drone-telegram
when:
status: success
settings:
token:
from_secret: telegram_token
to:
from_secret: telegram_chat_id
message: "✅ Build успешно завершен: ${CI_REPO} #${CI_BUILD_NUMBER}"
notify-failure:
image: appleboy/drone-telegram
when:
status: failure
settings:
token:
from_secret: telegram_token
to:
from_secret: telegram_chat_id
message: "❌ Build провален: ${CI_REPO} #${CI_BUILD_NUMBER}"
Типичные ошибки и их решение
Ошибка: «Cannot connect to the Docker daemon»
Решение: Убедитесь, что Docker socket смонтирован в агент:
yaml
volumes: - /var/run/docker.sock:/var/run/docker.sock
Ошибка: «Pipeline skipped» при пул-реквесте
Решение: Настройте условия запуска:
yaml
when: event: [push, pull_request]
Оптимизация производительности Woodpecker
- Кэширование зависимостей:
yaml
pipeline:
restore-cache:
image: meltwater/drone-cache
settings:
restore: true
mount:
- ./vendor
- ./node_modules
- Параллельное выполнение задач:
yaml
pipeline:
frontend-tests:
group: tests
image: node:18
commands: [npm test]
backend-tests:
group: tests
image: python:3.11
commands: [pytest]
Лучшие практики для Docker-хостинга
- Используйте .dockerignore для ускорения сборки
- Многоэтапные сборки для уменьшения размера образов
- Сканирование образов на уязвимости в пайплайне
- Тегирование образов с версиями и хэшами коммитов
Заключение
Woodpecker Server — это идеальное решение для команд, которые ищут простой, но мощный CI/CD инструмент для Docker-хостинга. Его открытость, гибкость и интеграция с популярными Git-хостингами делают его отличной альтернативой коммерческим решениям.
Ключевые преимущества для dockerhosting.ru:
- ✅ Полный контроль над инфраструктурой CI/CD
- ✅ Экономия на коммерческих лицензиях
- ✅ Глубокая интеграция с Docker-экосистемой
- ✅ Масштабируемость под любые проекты
- ✅ Активное сообщество и регулярные обновления
Начните использовать Woodpecker Server уже сегодня и автоматизируйте процессы разработки ваших Docker-приложений!
Статья подготовлена специально для dockerhosting.ru — ваш надежный хостинг Docker-контейнеров и CI/CD решений. Узнайте больше о наших услугах по развертыванию и управлению CI/CD инфраструктурой.