
Angular и открытый исходный код: улучшения автоматизации в вашем проекте с помощью Circle CI
Переехала на мой личный сайт. Прочтите без платного доступа в http://willmendesneto.com/posts/angular-and-open-source-automation-improvements-in-your-project-using-circle-ci
Работая над некоторыми улучшениями для компонента ngx-feature-toggle, я заметил, что все автоматизированные шаги выполнялись за 3 минуты с использованием конфигурации Circle CI v1. Поскольку все они происходили последовательно, это была возможность улучшить ситуацию.
Когда мы говорим об автоматизации рабочего процесса в проекте, мы должны предоставить разработчикам отличный опыт. Автоматизация задач / проверок и оперативная обратная связь всегда должны быть в вашем плане первоочередной задачей. Это моменты, которые заставляют людей с большей уверенностью вносить свой вклад в ваш проект с открытым исходным кодом.
Для этого нужно было принять решение о переходе на конфигурацию Circle CI v2, и вот некоторые из моментов, которые помогли в этом решении:
Очистить конфигурацию
Настроить проект с помощью Circle CI v2, что не является чем-то новым, действительно прозрачно. Интересно, что вы можете найти некоторые проекты, которые не обладают всеми преимуществами новой функции, появившейся в конфигурации v2.
Формат конфигурации с использованием файла .yaml действительно прозрачен, и такие шаги, как сохранение и восстановление кеша, связаны с конфигурацией, а не связаны с самой платформой.

В этом примере кэш был восстановлен в качестве предварительного шага, команда npm install используется для установки всех зависимостей в случае, если в кеше ничего нет, и сохранения содержимого папки node_modules.
Повторное использование конфигурации
Конфигурация повторного использования также проста. В качестве примера в приведенном ниже коде вы можете увидеть конфигурацию докера по умолчанию слева и то, как добавить ее на свой шаг, используя синтаксис <<: *docker_defaults.


Используя этот подход, вы можете повторно использовать свою конфигурацию для разных задач.
Распараллеливание задач с рабочими процессами
Сконфигурировать тесты параллельно или последовательно довольно просто с помощью рабочих процессов Circle CI. В качестве примера давайте посмотрим на эту конфигурацию.

В приведенном выше коде мы описываем каждый шаг наших задач. Поле required используется, когда вам нужна явная зависимость, разделяя это для запуска вашей задачи, оно требует завершения предварительного шага. Итак, ваши задачи будут выполняться:
- задача сборки установит все ваши зависимости
- После установки вы можете выполнять задачи модульных тестов, e2e и размера пакета параллельно, что даст вам быстрая обратная связь.
В новом рабочем процессе для ускорения используются некоторые концепции конвейера сборки, такие как установка всех зависимостей в качестве первого шага и параллелизм между задачами. Это дает нам гибкость, так как конкретный шаг может быть воспроизведен вместо всех задач или в случае добавления дополнительных задач параллельно, например, интеграционных тестов или тестов производительности.
В реальном мире это означает, что если ваши тесты e2e не работают, вы можете воспроизвести только тест, избегая трудоемкого ожидания установочных зависимостей или запуска других задач, которые, как вы уже знаете, проходят.
И это окончательный файл конфигурации со всеми шагами и проверками.
До и после
Что касается цифр и воздействия, то до этого проект занимал в среднем ~ 3 минуты, что неплохо, если вы думаете, что много задач выполняется последовательно.

Используя новую конфигурацию, мы запускаем все проверки и получаем отзывы менее чем за 1 минуту.


Переехала на мой личный сайт. Прочтите без платного доступа в http://willmendesneto.com/posts/angular-and-open-source-automation-improvements-in-your-project-using-circle-ci
Заключение
Конечно, есть много инструментов, которые можно использовать с некоторыми плюсами и минусами. В этом случае Circle CI решил некоторые проблемы автоматизации, используя чистую и выразительную конфигурацию. Результатом стал стремление сделать среду разработки для этого проекта прозрачной и быстрой.
А вы? Пришло время поделиться тем, что вы делаете, чтобы улучшить свои автоматизированные задачи в проектах Angular. В следующем посте мы расскажем о некоторых советах и приемах, как поделиться своим Angular-компонентом с помощью ng-packagr.
Надеюсь, вам понравилось это чтение. Спасибо, что дочитали до конца, и до скорой встречи!