Skip to main content

deploy

Codified release for a Next.js app on Jenkins + Traefik + Kubernetes — runs pre-flight checks (clean tree, branch, build, lint/tests), triggers the Jenkins deploy, then post-deploy verifies HTTP 200 smoke + real gzip/br compression (the two-Ingress/Traefik compress gotcha). Use when user says "задеплой", "выкати релиз", "релиз на прод/стейдж", "deploy", "release", or types /deploy.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
1t1sCooL/claude-skills
آخر نشاط في المصدر
٢٢ يونيو ٢٠٢٦ في ١٣:٥٠
لغة SKILL.md المكتشفة
الروسية
النجوم
١٦
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
deploy
description
Codified release for a Next.js app on Jenkins + Traefik + Kubernetes — runs pre-flight checks (clean tree, branch, build, lint/tests), triggers the Jenkins deploy, then post-deploy verifies HTTP 200 smoke + real gzip/br compression (the two-Ingress/Traefik compress gotcha). Use when user says "задеплой", "выкати релиз", "релиз на прод/стейдж", "deploy", "release", or types /deploy.
argument-hint
[staging|prod] [tag|branch] (по умолчанию prod, текущая ветка)
allowed-tools
Read Write Edit Bash(git *) Bash(curl *) Bash(npm *) WebFetch
# Deploy (Jenkins + Traefik + K8s) Кодифицированный релиз: предполётные проверки → триггер Jenkins → пост-деплой smoke. Включает **фирменный чек сжатия**: в топологии с двумя Ingress / Traefik compress-middleware иногда применяется не туда и ответы реально НЕ сжимаются — это проверяется отдельно после каждого деплоя. ⚠️ **Топология описана плейсхолдерами** (`<JENKINS_JOB>`, домены) — при первом запуске в проекте настрой их под реальную инфру (см. блок «Настройка»). ## Что на входе (`$ARGUMENTS`) - **Окружение** — `staging` / `prod` (по умолчанию `prod`). - **Тег / ветка** — что выкатывать (по умолчанию текущая ветка / `HEAD`). - Пусто → `prod` + текущая ветка; перед триггером подтвердить у пользователя. ## Настройка (плейсхолдеры проекта) Определи и зафиксируй (можно из CI-конфига репо: `Jenkinsfile`, `.gitlab-ci`, k8s-манифесты, README): - `<JENKINS_JOB>` — имя/URL Jenkins job (напр. `https://jenkins.example/job/app-deploy`). - `<TRIGGER>` — способ запуска деплоя: web-trigger (`curl` с токеном) / Jenkins CLI / `git push` в деплой-ветку. - `<DOMAIN_STAGING>`, `<DOMAIN_PROD>` — домены окружений. - `<SMOKE_ROUTES>` — ключевые роуты для smoke (`/`, `/api/health`, ...). Если не найдено — спроси у пользователя и предложи сохранить в проектный конфиг. ## Шаги 1. **Предполётные проверки.** ```bash git status --porcelain # дерево чистое? git rev-parse --abbrev-ref HEAD # та ли ветка? git fetch && git status -sb # не отстаём от remote? ``` - Сборка: задетектить менеджер (`package.json` scripts / lockfile) и прогнать `npm run build` (или `pnpm/yarn`). - Линт/тесты если есть: `npm run lint`, `npm test` — падение блокирует деплой. - Любая красная проверка → СТОП, не триггерить. 2. **Триггер деплоя через Jenkins** (по `<TRIGGER>`), с параметрами окружение+ref. Примеры: ```bash # web-trigger c токеном curl -fsSL -X POST "<JENKINS_JOB>/buildWithParameters?ENV=<env>&REF=<ref>&token=<TOKEN>" # либо git push в деплой-ветку, либо Jenkins CLI — по настройке проекта ``` Дождаться завершения сборки/раската (поллить статус job или k8s rollout, если доступ есть). Зафиксировать номер билда. 3. **Пост-деплой: фирменный чек сжатия.** Для каждого ключевого URL проверить, что ответ реально сжат: ```bash curl -s -H 'Accept-Encoding: br, gzip' -D - -o /dev/null https://<DOMAIN>/<route> # смотреть заголовок: content-encoding: br | gzip ``` - Нет `content-encoding` на HTML/JS/CSS → **compress-middleware не применился** (классика двух Ingress/Traefik: middleware висит не на том Ingress/роутере). Пометить как FAIL, дать наводку: проверить, на каком Ingress/Traefik-роутере висит compress-middleware и доходит ли он до реального ответа. - ⚠️ `curl -I` (HEAD) сжатие НЕ показывает — проверять GET'ом с заголовком Accept-Encoding. 4. **Smoke.** Каждый роут из `<SMOKE_ROUTES>` отдаёт `200`, нет `5xx`: ```bash for r in <routes>; do curl -s -o /dev/null -w "%{http_code} $r\n" "https://<DOMAIN>$r"; done ``` Опционально WebFetch главной — проверить, что страница рендерится (нет пустого/ошибочного body). ## Выход - **Пошаговый отчёт прогона**: предполёт (✓/✗ по каждой проверке) → номер Jenkins-билда → результат раската. - **Чеклист пост-деплоя** с результатами: - HTTP-коды по роутам (200/прочее). - Сжатие по роутам (`content-encoding` найден да/нет) — с явным флагом, если сработал gotcha. - Итоговый вердикт: релиз здоров / есть проблемы (+ что чинить).
عرض على GitHub