App Deploys из наследия Cascade делает соблазнительную вещь: превращает код в живой публичный URL за один шаг. После долгой возни с пайплайнами это выглядит как избавление - агент собрал приложение, нажал деплой, ссылка готова. И первый порыв понятен: если это "деплой", то зачем вообще держать прежний CI/CD.
Наивный ход именно такой - принять preview-деплой за полноценную выкладку. Раз получается работающий адрес, кажется логичным вести через него и демонстрации, и стейджинг, и, чем чёрт не шутит, продакшн: одно действие вместо череды согласований. Экономия шагов сейчас выглядит чистой выгодой, и именно эта видимая простота маскирует, что у preview и production разная цена ошибки.
Ломается это на том, чем App Deploys является по документации. Это beta-функция, задуманная в первую очередь для preview, с провайдером Netlify и публичными адресами вида <subdomain>.windsurf.build. Поддержаны распространённые фреймворки - Next.js, React, Vue, Svelte - и статические сайты HTML/CSS/JS. Поддержка дополнительных фреймворков и более надёжные сборки, по документации, только на подходе, что само по себе признак незрелости пути для боевой нагрузки. Ключевое слово здесь preview: это поверхность для быстрого показа, а не путь релиза в прод.
Главная граница - про данные, и документация проговаривает её прямо: код загружается на серверы Windsurf для деплоя, поэтому выкладывать стоит только то, что вы готовы показать публично. Публичный URL, телеметрия и срок хранения оцениваются отдельно от вашего репозитория. Чувствительному коду и production-секретам здесь не место без отдельного одобрения - это вынос данных за границу вашей политики, а не просто ещё один билд.
Механика при этом простая и подсказывает, как ею пользоваться правильно. В корне проекта появляется windsurf_deployment.yaml, который хранит информацию о деплое и упрощает повторную выкладку. Это удобно для итеративного preview, но именно поэтому файл нужно держать под контролем: в него не должны попадать секреты, а сам он не заменяет описание production-окружения.
Почему preview принципиально не равен production. Продакшн несёт то, что одношаговый preview сознательно опускает ради скорости: согласования, защиту окружений, аудит и, главное, откат. Быстрый публичный адрес хорош тем, что у него нет этой обвязки, - и негоден для боевой выкладки ровно по той же причине. Отсутствие governance не баг preview, а его определение.
Отсюда практическое разделение ролей. Для production сохраняйте существующий CI/CD, approvals, environment protection и rollback - всё, что уже проверено вашим процессом. Агент при этом остаётся полезным: он может подготовить изменение, собрать конфигурацию, открыть pull request. Но он не должен обходить release governance - подготовка релиза и его выкладка это разные полномочия, и второе не отдают ни preview-кнопке, ни агенту. Разделение это не бюрократия ради бюрократии: именно governance даёт возможность откатиться после плохого релиза и доказать, кто и что одобрил, а быстрый preview этих гарантий не несёт по устройству.
Цена смешения ролей конкретна и двусторонняя. Отправить чувствительный код в preview-поверхность - значит вывести его на публичный URL и на чужие серверы за пределами вашей политики хранения. Использовать preview как production - значит остаться без отката, без защиты окружения и с секретами, которые никто не проверил на утечку. В обоих случаях платят не удобством, а данными и управляемостью выкладки.
Проверять стоит до нажатия, а не после. Перед деплоем убедитесь, что в репозитории нет ничего, что нельзя показать публично, и что windsurf_deployment.yaml не несёт секретов. Относитесь к полученной ссылке как к публичной по умолчанию - потому что она такая и есть. А всё, что должно уйти в прод, ведите через свой пайплайн, где есть согласование и откат, и там проверяйте результат привычными для команды воротами. И заведите привычку смотреть, что именно уходит наружу: список файлов сборки честнее, чем предположение, что лишнего в нём нет.
Типичные провалы узнаваемы. Preview-URL принимают за production и удивляются, что за ним нет ни отката, ни защиты. Приватный репозиторий выкладывают на публичный адрес, не прочитав предупреждение про загрузку на чужие серверы. Агенту позволяют обойти approvals, потому что "он же уже собрал". Забывают, что публичная ссылка ещё и хранится и телеметрируется. Признак у всех один: слово "деплой" услышали, а слово preview - нет. Прочитайте второе первым, и разделение preview и production перестанет быть вопросом.