Напишите свою собственную систему CI проекта H5

Байду внешний интерфейс Vue.js Jenkins
Напишите свою собственную систему CI проекта H5

Система непрерывной интеграции (CI) играет важную роль в автоматизированном создании программного обеспечения (включая компиляцию, выпуск и автоматизированное тестирование).В прошлом фронтенд-проекты были простыми, и во многих случаях выпуск представлял собой просто несколько простых копий. с рождением инструментов веб-упаковки интерфейсные проекты становятся все более и более сложными, и большинство проектов требуют процесса построения.В то время мы, естественно, думали о jenkins, поэтому мы интегрировали интерфейсный проект в jenkins, и все было идеально, пока не был один день .......

Это было, когда я работал в своей последней компании. Однажды я вдруг узнал, что фронтенд-командный проект компании был упакован и выпущен с использованием системы упаковки, написанной мной. Я был удивлен. Я мало знаю о непрерывной интеграции, и я думаю это правда.Режим разработки перед фронтендом в принципе не нужно упаковывать и конструировать.При публикации все шаблоны и ресурсы упаковываются(сжимаются) и отправляются в эксплуатацию и сопровождение. Поэтому я взглянул на их систему упаковки, и она может выполнять только функцию онлайн-упаковки.Он не поддерживает журналы в реальном времени, построение очередей, построение триггеров и т. д., поэтому я начал давать им Amway Jenkins, но существующая Хотя система проста, ее можно использовать, и все фактически отвергают ее. Сильный толчок не должен быть лучшей стратегией, поэтому я сказал, что было бы хорошо, если бы текущая система сборки могла поддерживать логи и очереди задач в реальном времени.Все видят, что объем разработки не мал, лучше перейти на jenkins , поэтому интерфейсные проекты будут перенесены в jenkins.....

История здесь не окончена.

Ничто не может остановить человеческое любопытство. После этого я подумал о том, что нам следует сделать, если мы сможем сами построить систему построения интерфейса для поддержки журналов и очередей задач в реальном времени.

По совпадению, хотя jenkins сам по себе очень мощный, он также имеет некоторые недостатки, то есть упакованный журнал не может иметь тот же формат, что и локальный, например, цвет текста журнала, шрифт и т. д. В этом случае он не может локализовать ошибки как быстро, так как упаковано на месте. Потом Baidu поковырялся и нашел плагин под названием AnsiColor.Я обрадовался и тут же пересобрал его, но обнаружил, что функция форматирования лога очень слабая.В качестве примера vue-проекта вывод лога должен был отображаться в красном (ошибка процесса сборки) все черные, что действительно приемлемо. Вот я и задумался о написании набора ci, посвященного фронтенду, конечно, чтобы не изобретать велосипед, чисто чесалось.

цель, которую нужно достичь

  1. Поддерживает журналы в реальном времени и имеет хороший формат
  2. Очередь задач поддержки
  3. Поддержка триггеров

Техническая точка:

  1. Очередь задач может поддерживать глобальный список задач на стороне сервера.
  2. Журнал в реальном времени использует веб-сокет для синхронизации информации о пакетах сервера со страницей в реальном времени.
  3. Форматирование журнала может быть Baidu «код управления ANSI», мы анализируем код управления ANSI для применения пользовательских стилей.
  4. Триггеры могут настраивать сценарии через проект для запуска пользовательского сценария в ключевых точках.

Так написано так:

Вверху находится информация о проекте, с красным облаком, обозначающим неудачную сборку, и зеленым солнцем, обозначающим успешную сборку.

日志格式化

Форматирование журнала сборки.

实时日志

Распечатывать журналы в реальном времени во время сборки

构建队列
При ожидании в очереди с несколькими задачами сборки

Суммировать

Этот проект является проектом передовой практики, включающим интерфейс, серверную часть, веб-сокет, сценарии оболочки. Лично я считаю, что это очень подходит для дипломного проекта или стажировки. Теперь этот проект является обязательным для наших фронтенд-стажеров.

Карьера

Если вы думаете, практичны и заинтересованы в программировании, пожалуйста, пришлите мне личное сообщение.