CI/CD для стартапа: GitLab CI и GitHub Actions

CI/CD для стартапа: GitLab CI и GitHub Actions

Минимальный CI/CD: каждый merge в main → артефакт → staging → manual/auto prod. Без этого «деploy вручную по SSH» неизбежно ломает прод.

CI/CD для стартапа: GitLab CI и GitHub Actions
Иллюстрация к материалу

Stages

  • lint + typecheck
  • unit/integration tests
  • build docker images
  • deploy (ssh/k8s/swarm)
  • smoke test

Secrets

CI variables, не в repo. Rotate keys quarterly.

Environments

  • PR → preview optional
  • main → staging
  • tag → production
CI/CD для стартапа: GitLab CI и GitHub Actions
Схема и рабочий процесс

Чеклист

  • Failed deploy alerts
  • Rollback = previous image tag
  • DB migrate job separate step

Минимальный pipeline

MR: lint + unit. main: + integration + docker build + deploy staging. tag v*: deploy prod + smoke script.

Артеfact — immutable image digest, не «latest» на prod.

Deploy audit trail

Каждый prod deploy привязан к git tag, образу и человеку/боту, нажавшему approve. Без этого post-mortem «кто выкатил» занимает часы вместо минут.

GitLab CI vs GitHub Actions

GitLab: stages в .gitlab-ci.yml, registry встроен, deploy через SSH или K8s agent. GitHub: reusable workflows, environments с protection rules на prod.

Общее: cache node_modules/pnpm store, parallel lint+test, docker buildx с layer cache. Smoke после deploy — curl health + 2–3 critical URL; без smoke «зелёный pipeline» не значит рабочий prod.

Rollback и migrate job

Deploy prod = pull previous image tag + run down-only migrations только если contract-safe. Миграции БД — отдельный manual/approved job, не в том же step что swap контейнера без review.

Храните последние 5 image digest в release notes — rollback за 2 минуты, не за 2 часа сборки.

С чего начать автоматизацию

  • Шаг 1: lint + test на каждый PR
  • Шаг 2: docker build на main
  • Шаг 3: deploy staging по merge
  • Шаг 4: prod по tag + smoke script