Ответ
На последнем проекте мы использовали GitFlow с ветками feature, develop, release, hotfix и main. CI/CD был построен на GitHub Actions и ArgoCD:
- При пуше в
featureзапускались линтеры (hadolint, shellcheck), unit-тесты и security-сканирование (Trivy). - Мерж в
developзапускал сборку Docker-образа, деплой на staging-кластер Kubernetes и прогон интеграционных тестов. - Мерж в
mainчерез release-ветку инициировал деплой в production с blue-green стратегией, управляемой Argo Rollouts.
Инфраструктура описывалась как код с помощью Terraform (AWS EKS, VPC, RDS), конфигурации приложений — через Helm-чарты. Мониторинг и алертинг были настроены в Prometheus и Alertmanager, дашборды — в Grafana.
Пример workflow для деплоя:
name: Deploy to Production
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Update kubeconfig
run: aws eks update-kubeconfig --name my-cluster
- name: Deploy with Helm
run: |
helm upgrade --install my-app ./charts/app
--namespace production
--values values-prod.yaml
--atomic --timeout 5m