TL; DR: Тонкая настройка сборки извне с использованием параметров является важной функцией при выполнении сборки. NUKE позволяет использовать декларативный подход для достижения этой цели. Быстрый сбой сборки в случае отсутствия параметров и обнаружение опечаток завершают этот драгоценный камень, чтобы обеспечить лучший опыт во время сборки. 👷🏻

Время от времени нам может потребоваться передать дополнительную информацию в нашу цепочку сборки. Например, параметр Configuration часто используется, чтобы указать, хотим ли мы построить наше решение в режиме Release или Debug; или нам нужно передать ApiKey, необходимый для публикации наших пакетов NuGet. 📦

NUKE обеспечивает декларативный подход с использованием автоматического внедрения, что позволяет легко получить доступ к аргументам командной строки и переменным среды из нашей сборки. Давайте посмотрим на пример:

Имея поле MyParam, украшенное атрибутом Parameter, мы можем передавать значения в сборку, вызывая build -myparam value или задав переменную среды MyParam. Передача значения через аргумент также позволяет нам использовать двойные дефисы --myparam или lisp-casing -my-param 🐧. Если ничего не указано, в поле сохранится значение по умолчанию. 🔌

Объявление параметров также автоматически расширяет текст справки, который отображается при вызове build -help 📋

Но лучшая новость заключается в том, что NUKE также убережет нас от незамеченных опечаток! 😍

Соответствующие предупреждения выдаются до и после выполнения сборки. ⚠️

Поддерживаемые типы 🎲

Конечно, наша инъекция параметров поддерживает множество типов, включая примитивные литералы, такие как строки, числа, логические значения и значения перечисления, а также типы, допускающие значение NULL и их массивы. (разделенные пробелами или произвольным символом). Вот некоторые примеры:

Быстрый отказ ⚡️

Вернемся к нашему сценарию публикации пакетов NuGet. Чтобы это работало, нам нужен ключ API, доступный в нашей сборке. Однако, прежде чем мы сможем опубликовать, нам нужно скомпилировать наше решение. Что, если мы забыли передать ключ API? Мы определенно не хотим ждать, пока цель публикации будет выполняться, чтобы выяснить это. Мы хотим, чтобы наша сборка была безотказной. В NUKE это прекрасно работает, используя Requires внутри нашего свободного синтаксиса:

Если мы вызовем цель публикации без предоставления надлежащего ключа API, мы получим такое сообщение об ошибке:

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

Оцени NUKE! Обратная связь всегда приветствуется! 🤗

Итак, продолжайте строить! 🤘🏻🏗