Недавно я получил ответственность обслуживания за два Наследие проекты в моей компании. Одним из проектов является 8 лет, другой такой старый, даже наш тестер не знает, когда проект начался — определенно до того, как он присоединился 12 лет назад. Очевидно, оба проекта используют красивые старые технологии, такие как антрипты, и оба имеют много функций, которые даже не используются.
Так как вы справляетесь с таким старым проектом — как мотивированный и Проактивный инженер ?
В этом блоге я покажу вам, как вы можете сделать лучшее из такого ситуации, и как вы можете иметь положительное и значительное влияние. 🚀😎.
Во-первых, вот теория для CI/CD , который стоит Непрерывная интеграция, доставка и развертывание :
От того, что я слышу, существуют некоторые заблуждения, как к тому, к какому CI/CD действительно значит. На графике выше, вы можете увидеть, что есть три части:
- компиляция
- принося программное обеспечение на Тестовая система
- и наконец, освобождая его к продуктивная среда
Теперь, если вы когда-либо застраивались в устаревшем проекте, одно очевидное решение — это отрицать свой LinkedIn и начать рассылку Resumes😜😜
Помните, что у каждой компании есть устаревшие проекты. Так что, а не жаловаться, эта статья о положительное влияние Вы можете иметь на устаревших проектах.
Прежде чем мы попадаем в детали, позвольте мне просто упомянуть, что мне повезло, чтобы работать только неполный рабочий день на этих устаревших проектах — остальное мое время, я провожу на разработке нового программного обеспечения с нуля. Там есть новый веб-сервис, над которой я работаю над тем, что использует новейшую версию Java, Весенняя ботинок , Докер , сложный CI/CD трубопровод и облачный хостинг, так что это держит меня счастливым
Когда я начал на этих 2 устаревших проектах, первое, что я сделал, был мигрировать до приличного Система управления версией Отказ Оба проекта используются SVN Для версий, но, к счастью, мигрирование на новую систему управления версией прямо вперед и стоит того времени. Итак, я использовал svn2git
и создал новый Гит репозитории. После завершения я мог бы использовать Отрасли для быстрых экспериментов , плюс Гит
много, много быстрее чем SVN, и, наконец, вы можете выполнить совершает Без необходимости немедленно подтолкнуть ваши изменения на сервер.
Далее я проанализировал систему сборки моих устаревших проектов. Вопрос выглядит легко: как я могу компилировать этот код? Ну, мои устаревшие проекты состояли из многих подтепенных компонентов, некоторые из которых были легко компилированы, некоторые из которых были трудно компилировать. Было легкие случаи простых старых проектов Java-Maven, где я мог бы просто запустить MVN Clean Package
Отказ Один конкретный компонент, хотя был гораздо сложнее скомпилировать: это было старое приложение Grails и получение всех Версии зависимости Правильно, как Граальс, Ява и Мавена были сложными.
В конце концов, вы хотите иметь Команда терминала, которая будет скомпилировать проект для тебя. Как только у вас есть, вы хороши, так как у вас есть команда, и это может быть автоматизировано. Итак, в моем случае я настроил Дженкинс Работа для каждого компонента, которая выполнила процесс здания для меня.
Обратите внимание, что в редких случаях может быть необходимость Реженерный процесс компиляции Отказ Я видел Java Projects, которые используют Муравей и проверено в зависимости от JAR. Это устаревший и громоздкий способ делать вещи, и в этом случае это действительно имеет смысл перейти к Maven или Грейл вместо этого и используйте Реестр для зависимостей.
Ваше приложение Безопасный и ваш код чистый ? Простой способ продвинуться на эти вопросы и, возможно, улучшить качество вашего кода, используя Анализ статического кода инструмент. Проверка вашего кода не навязчиво, все, что вы делаете, это добавить новый шаг к конвейеру непрерывной интеграции. Там есть много отличных инструментов. Для моих проектов я выбрал Сонаркибе
Прежде всего: Да, вам нужен Тестовая среда Отказ Если ваш унаследованный проект не имеет одного, убедитесь, что вы получите один! 💪 Вы можете выяснить зависимости от продуктивной среды. Установка стороннее программное обеспечение Как и среда выполнения будет легкой, однако установка (издевательства) Внешние системы может быть сломанным.
В любом случае, специфический наследийный проект, который я работал над использованными сценариями Ant для развертывания Распространяемая Java Archive на тестовой системе. Какой сценарий муравья в основном занимал тарлбол, скопируйте его на машину тестовой системы, надуйте пакет, остановите старое приложение и начните новую. Команда для запуска приложения была команда Java, включая все виды важных параметров, таких как JVM Версия, файл конфигурации Maven, местоположение файла журнала и так далее. Как оказалось, было довольно просто автоматизировать это развертывание: просто используйте какой-нибудь инструмент CD, как Jenkins, и запустите сценарий Ant. Были еще несколько бит, чтобы получить правильно, например, добавление дополнительных поддержке банок на класс путь команды муравья, но я тоже подумал.
Если вы когда-либо должны работать с устаревшим приложением, ваш технологический стек может отличаться от моей, но основная концепция Привлечение вашего приложения в тестовую систему и запустив ее Там остается прежним.
В любом случае, теперь я автоматизировал вещи достаточно далеко, чтобы я мог просто ударить кнопку, чтобы превратить свой исходный код в запущенное приложение в тестовой системе. Теперь последний шаг должен был автоматически запускать сквозные тесты. Для моих устаревших проектов мне повезло иметь множество существующих тестов E2E. Мой конкретный проект использовал Java Фитнес Тесты. Поскольку Jenkins предлагает плагин FATNESTE, чтобы запустить такие тесты, моя работа была прямой.
Теперь, что вы делаете, если у вас нет автоматических тестов E2E? Ну самая основная вещь, которую вы можете сделать, это выполнить Проверка здоровья Отказ Каждый компонент должен иметь конечную точку HTTP Health, которая скажет, было ли приложение началось должным образом, и если все внешние системы могут быть подключены к базе данных или очереди. Еще лучше, хотя для выполнения Функциональные тесты Отказ Если у вашего приложения есть Отдых или Мыло Интерфейс, вы можете использовать его для выполнения более распространенных запросов, таких как операции чтения/записи/обновления. В любом случае важная часть состоит в том, чтобы запрограммировать эти тесты, поэтому вам не нужно вручную запрашивать запросы через Почтальон или Мыло UI Отказ Более того, если вы начинаете с нуля с новыми тестами E2E, там много современных и мощных каркасов, таких как Огурец и Датчик Отказ
Не забудьте обратить внимание на внешние системы. Поскольку вы выполняете сквозные тесты, вы хотите убедиться, что все Окружающие системы присутствуют в вашей тестовой системе. Чаще всего инженеры создадут Макеты Для этих систем с наиболее важной функциональностью реплицируется, или вы можете попросить сопровождающих этих внешних систем, если у них уже есть макет.
Вот снимка окончательного результата, трубопровод Jenkins для непрерывной интеграции и доставки:
Обратите внимание, что я не изменил никакой строки в старом исходном коде на устаревших приложений, но я сделал техническое обслуживание намного веселее и легко. 🎉 🥂
Если вы когда-нибудь работаете над устаревшим проектом, я надеюсь, что эта статья даст вам некоторую полезную информацию. Уборка унаследованного кода в основном будет жестким, а также клиент, вероятно, не захочет за него заплатить. Вместо этого я предлагаю первым Сосредоточьтесь на всех, окружающих вашу базу кода Отказ С CI/CD-трубопровод На месте вы будете гораздо более мотивированы, чтобы начать с запроса на изменение, поскольку вы можете просто ударить одну кнопку, которая проверит ваше изменение в целом от компиляции на упаковку, развертывание и тестирование E2E.
Счастливое кодирование💻😃🔥.
Кредиты: название изображения из Unsplash Этот пост был вдохновлен статьей Фелипе Лопес
Оригинал: «https://dev.to/pmgysel/from-legacy-projects-to-ci-cd-pipelines-2oo4»