Независимый аналитик Кристофер Тоцци рассказывает на портале ITPro Today о том, как разработчики могут усовершенствовать свои процессы непрерывной интеграции/непрерывной доставки (CI/CD), чтобы эффективнее использовать инструменты кодирования с помощью искусственного интеллекта.

Попросить ChatGPT сгенерировать разовые фрагменты кода или набросать шаблонный код с помощью Copilot — это один из способов начать работу с ИИ в разработке ПО. Но если вы хотите применять кодинг с помощью ИИ систематически и в больших масштабах, вам нужно встроить практику кодирования на основе ИИ в конвейер CI/CD.

Рассмотрим, как разработчики могут обновить свои конвейеры и стратегии CI/CD, чтобы воспользоваться преимуществами инструментов кодирования с помощью ИИ.

Чтобы было понятно: я не имею в виду использование ИИ для управления процессами CI/CD. Уже немало написано об использовании ИИ для тестирования ПО во время CI/CD, например, или об управлении ветками кода с помощью ИИ. Это примеры того, как ИИ может повысить эффективность и надежность CI/CD.

Это интересно, но здесь я хотел бы обсудить нечто другое. Речь пойдет о том, как адаптировать конвейеры CI/CD для кодирования с помощью ИИ — другими словами, как разработчики могут обновить свои процессы CI/CD таким образом, чтобы получить больше преимуществ от инструментов и рабочих процессов кодирования с помощью ИИ.

Как программирование с помощью ИИ влияет на CI/CD

Для начала давайте обсудим, почему стратегии CI/CD должны измениться, если команды хотят использовать преимущества ИИ для разработки ПО.

Причина достаточно проста: как набор процессов, которым следуют разработчики при создании ПО, конвейеры CI/CD играют основополагающую роль в обеспечении последовательности и повторяемости операций разработки. Если вы хотите сделать ИИ частью своего процесса разработки, реализуемой систематическим и повторяющимся способом, вам нужно включить кодирование с помощью ИИ в свою стратегию CI/CD.

Другими словами, разработчики, которые пишут, тестируют или иным образом управляют кодом с помощью инструментов, поддерживающих ИИ, должны убедиться, что их конвейеры CI/CD оптимизированы для использования ИИ в качестве решения для разработки ПО. Это важно, поскольку большинство существующих конвейеров и инструментов CI/CD были разработаны до того, как кодирование с помощью ИИ получило широкое распространение, и поэтому они требуют некоторых изменений, чтобы учесть уникальные аспекты разработки ПО на основе ИИ.

Лучшие практики подготовки конвейеров CI/CD к работе с ИИ

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

Маркировка кода, сгенерированного ИИ. Большинство инструментов управления исходным кодом, включая Git, поддерживают функции маркировки, которые позволяют разработчикам накладывать метки на определенные фрагменты кода. Команды, внедряющие кодирование с помощью ИИ, должны использовать эти метки для идентификации кода, который был полностью или частично сгенерирован ИИ.

Это важная часть стратегии CI/CD, поскольку код, сгенерированный ИИ, в целом менее надежен, чем код, написанный квалифицированным разработчиком-человеком. По этой причине иногда может потребоваться проводить дополнительные тесты для кода, сгенерированного ИИ, или даже удалять его из кодовой базы в случае возникновения неожиданных ошибок. Если вы будете систематически помечать код, созданный ИИ, в процессе CI/CD, вы сможете легко относиться к нему по-другому.

Написание специальных тестов для кода, генерируемого ИИ. Аналогичным образом, некоторые команды могут посчитать целесообразным развертывание дополнительных тестов для кода, генерируемого ИИ, на этапе тестирования в конвейере CI/CD, как для обеспечения качества ПО, так и для выявления уязвимого кода или зависимостей, которые ИИ вносит в кодовую базу.

Выполнение таких тестов, скорее всего, приведет к усложнению процесса тестирования, поскольку придется управлять двумя наборами тестов: теми, которые применяются только к коду, создаваемому ИИ, и теми, которые применяются ко всему коду. Таким образом, этап тестирования CI/CD, вероятно, станет более сложным для команд, использующих инструменты ИИ.

Внедрение более строгого контроля доступа. В некоторых случаях командам разработчиков может потребоваться разрешить инструментам ИИ-кодирования доступ к некоторой части их кодовой базы. Но если эти инструменты предоставляются сторонними производителями, возможно, вы не захотите открывать для них весь свой код. Например, вы можете не разрешить такому инструменту, как Copilot, просматривать весь ваш проприетарный код.

По этой причине кодирование с помощью ИИ может потребовать более строгого контроля доступа в рамках конвейера CI/CD. Разработчикам необходимо разработать политики, определяющие, какой код или другие данные могут читать ИИ-службы и как долго они могут получать к ним доступ.

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

В любом случае командам важно оценить влияние инструментов ИИ-кодирования на их способность запускать новые релизы приложений в производство, а затем соответствующим образом изменить свою стратегию выпуска — не говоря уже об ожиданиях заинтересованных сторон. Вы же не хотите, чтобы ваш босс ожидал, что вы начнете делать релизы несколько раз в день только потому, что теперь вы можете писать код с помощью ИИ, хотя общая скорость разработки не изменилась. Аналогичным образом, если вы можете значительно ускорить CI/CD с помощью ИИ, то измените свой график релизов соответствующим образом.

Заключение

Учитывая, что полномасштабное использование инструментов ИИ для генерации кода остается относительно новым делом для многих команд, еще предстоит выяснить, как именно потребуется изменить конвейеры CI/CD, чтобы приспособить их к кодированию с помощью ИИ. Но вполне вероятно, что должны будут развиваться такие практики, как управление исходным кодом и его маркировка, контроль доступа и планирование релизов, если команды хотят в полной мере использовать преимущества ИИ в разработке ПО.