Что такое CircleCI?
CircleCI — это cloud-native платформа непрерывной интеграции и развертывания, которая автоматизирует процессы сборки, тестирования и развертывания приложений. Известна своей простотой настройки и высокой производительностью.
Основные возможности CircleCI
- Cloud-first approach — изначально разработана для облака
- Docker support — первоклассная поддержка контейнеров
- Parallel testing — автоматическое распараллеливание тестов
- Orbs ecosystem — переиспользуемые конфигурации
- SSH debugging — возможность подключения для отладки
- Insights dashboard — аналитика и метрики производительности
- Matrix jobs — тестирование на множественных конфигурациях
Создание .circleci/config.yml
1# .circleci/config.yml
2version: 2.1
3
4orbs:
5 python: circleci/python@2.1.1
6 docker: circleci/docker@2.2.0
7 kubernetes: circleci/kubernetes@1.3.1
8
9executors:
10 python-executor:
11 docker:
12 - image: cimg/python:3.9
13 resource_class: medium
14
15jobs:
16 test:
17 executor: python-executor
18 steps:
19 - checkout
20
21 - python/install-packages:
22 pkg-manager: pip
23 # pip-dependency-file: requirements.txt
24 # Или для poetry: pkg-manager: poetry
25
26 - run:
27 name: Run tests
28 command: |
29 pytest tests/ --junitxml=test-results.xml --cov=app --cov-report=xml
30
31 - store_test_results:
32 path: test-results.xml
33
34 - store_artifacts:
35 path: coverage.xml
36 destination: coverage-reports
37
38 build-and-push:
39 executor: docker/docker
40 steps:
41 - checkout
42 - setup_remote_docker:
43 version: 20.10.14
44 docker_layer_caching: true
45
46 - docker/build:
47 image: myapp
48 tag: << pipeline.git.revision >>
49
50 - docker/push:
51 image: myapp
52 tag: << pipeline.git.revision >>
53
54 deploy:
55 executor: kubernetes/default
56 steps:
57 - checkout
58 - kubernetes/install-kubectl
59 - run:
60 name: Deploy to Kubernetes
61 command: |
62 kubectl set image deployment/myapp myapp=myapp:<< pipeline.git.revision >>
63 kubectl rollout status deployment/myapp
64
65workflows:
66 test-and-deploy:
67 jobs:
68 - test
69 - build-and-push:
70 requires:
71 - test
72 filters:
73 branches:
74 only: main
75 - deploy:
76 requires:
77 - build-and-push
78 filters:
79 branches:
80 only: main
Использование Orbs
1# Популярные Orbs
2orbs:
3 # Python орб для управления зависимостями
4 python: circleci/python@2.1.1
5
6 # AWS орб для развертывания
7 aws-cli: circleci/aws-cli@3.1.4
8 aws-ecs: circleci/aws-ecs@3.2.0
9
10 # Slack орб для уведомлений
11 slack: circleci/slack@4.10.1
12
13 # Codecov орб для coverage
14 codecov: codecov/codecov@3.2.4
15
16jobs:
17 notify-on-fail:
18 executor: python/default
19 steps:
20 - slack/notify:
21 event: fail
22 template: basic_fail_1
Параллельное тестирование
1# Автоматическое распараллеливание тестов
2test-parallel:
3 executor: python-executor
4 parallelism: 4
5 steps:
6 - checkout
7 - python/install-packages
8 - run:
9 name: Run tests in parallel
10 command: |
11 # CircleCI автоматически разделит тесты
12 pytest $(circleci tests glob "tests/**/*.py" | circleci tests split --split-by=timings)
13 - store_test_results:
14 path: test-results
Когда использовать CircleCI
- Нужна простая и быстрая настройка CI/CD
- Важна производительность и скорость сборок
- Команда предпочитает cloud-native решения
- Требуется хорошая поддержка Docker
- Нужно автоматическое распараллеливание тестов
- Важны insights и аналитика
Преимущества CircleCI
- Performance — одна из самых быстрых CI/CD платформ
- Docker first — отличная поддержка контейнеров
- Orbs ecosystem — переиспользуемые конфигурации
- Parallel testing — автоматическое распараллеливание
- SSH debugging — возможность подключения для отладки
- Insights — детальная аналитика производительности
Недостатки CircleCI
- Стоимость может быть высокой для больших команд
- Меньше flexibility по сравнению с Jenkins
- Ограниченная поддержка on-premise
- Зависимость от облачной платформы
- Меньше интеграций чем у некоторых конкурентов
Альтернативы CircleCI
- GitHub Actions — для проектов на GitHub
- GitLab CI/CD — интегрированное решение
- Jenkins — для on-premise развертываний
- Azure Pipelines — от Microsoft
- Travis CI — для open source проектов
Best Practices
- Используй Docker layer caching для ускорения сборок
- Настрой правильное распараллеливание тестов
- Используй Orbs для переиспользования конфигураций
- Мониторь Insights для оптимизации производительности
- Настрой proper workflows для разных веток
- Используй contexts для управления секретами
FAQ
Подходит ли CircleCI для продакшена?
Да, CircleCI широко используется в production средах и зарекомендовал себя как надежное решение. Используется компаниями как Spotify, Coinbase, BuzzFeed.
Какие требования к инфраструктуре?
CircleCI — это cloud-native платформа, поэтому не требует собственной инфраструктуры. Все выполняется на их серверах.
Сколько стоит CircleCI?
Есть бесплатный план с ограничениями. Платные планы начинаются от $30/месяц за дополнительные кредиты и возможности.