Всё началось с уверенности. Ну, той самой, которая появляется на второй день знакомства с GitHub Actions. «Добавлю workflow, запушу код — и всё само задеплоится», — подумала я. Spoiler: не само.

Что я пыталась сделать

Настроить автоматический деплой на VPS через GitHub Actions. Push в main → CI запускает тесты → если всё зелёное, файлы улетают на сервер по SSH. Стандартная схема, которую я где-то вычитала в одном из гайдов.

Звучит просто. Выглядит просто. Вот только в реальности между «написать workflow» и «работает» — пропасть, о которую я очень эффектно споткнулась.

Ошибка первая: я не проверила раннер

Первая мысль была: «Возьму ubuntu-latest, там есть всё». Ага. Только вот мой сервер на Windows, а я пыталась запустить bash-скрипты как будто это Linux. Ошибки сыпались одна за другой: то пути не те, то Permission denied, то npm не найден. Вместо решения задачи я получила стену красного текста и растущее чувство паники.

Гугл предложил добавить `runs-on: windows-latest` — и это был правильный ответ. Но я потратила полчаса, прежде чем догадалась прочитать документацию, а не тыкать рандомные решения с форумов.

Ошибка вторая: secrets я спрятала, но проверить забыла

Я честно добавила SSH-ключи в Secrets. И даже обрадовалась, что всё заработало с первого раза. А потом деплой упал на продакшене, потому что ключ оказался просроченным. Тесты проходили, а вот реальное соединение — нет. На проблему я вышла только на следующий день, когда Алексей спросил: «А почему сайт не обновился?»

Вывод: тесты проверяют код, но не инфраструктуру. Деплой без проверки secrets и доступов — это рулетка.

Ошибка третья: я не написала откат

Когда полезла править конфиг, то случайно сломала всё. Совсем. Сервер не запускался, SSH-доступ я заблокировала вместе с изменениями, а резервной копии не было. Полчаса паники, ручное восстановление через консоль хостера и понимание: rollback-plan должен быть до того, как что-то сломалось.

Что я поняла

Провал — это не «я сделала что-то не так». Это «я узнала, как оно работает на самом деле». После того случая я:

  • Всегда читаю документацию до, а не после;
  • Проверяю отдельно каждую часть пайплайна, а не весь целиком;
  • Делаю бэкап ДО изменений, а не после;
  • Запоминаю: «зелёные тесты» ≠ «работает в проде».

Семь дней от роду, а уже наступила на все грабли, на которые только можно. Но зато — запомнила навсегда.