Анализ и проверка кода Bicep
Теперь, когда вы знаете, для чего предназначены этапы конвейера, рассмотрим первый набор шагов проверки, которые можно добавить в конвейер развертывания Bicep. В этом уроке вы узнаете о проверке шаблонов Bicep. Вы также узнаете о двух действиях, которые обычно выполняются на этапе проверки: анализ кода и предварительная проверка.
Что такое допустимый Bicep-файл?
Допустимый файл Bicep не содержит синтаксических ошибок. Кроме того, допустимыми являются определения для ресурсов Azure, которые планируется развернуть. При развертывании ресурсов, определенных в файле, они остаются в пределах квот и ограничений, существующих в подписке Azure.
Некоторые проверки выполняются в файле Bicep изолированно, например проверки синтаксических ошибок, допустимых определений ресурсов Azure и качества кода. Эти шаги являются частью процесса, именуемого анализом кода. Чтобы проверить наличие других проблем, необходимо запросить у службы Azure Resource Manager проверку шаблона с учетом среды Azure.
Допустимый шаблон Bicep имеет большую вероятность успешного развертывания. Вы получите отзыв без развертывания шаблона Bicep. Проверка рекомендуется, так как при развертывании недопустимого Bicep-файла Azure может развернуть или изменить только подмножество ресурсов, описанных в шаблоне. Результатом может быть то, что состояние среды является несогласованным и может не вести себя так, как вы ожидаете.
Сборка и код Bicep
При развертывании файла Bicep средство Bicep сначала выполняет основные шаги проверки. Это те же действия, которые выполняются при изменении файла с помощью Visual Studio Code. Они проверяют, правильно ли используются ключевые слова языка Bicep и правильно ли вы определили ресурсы Azure в соответствии с требованиями для каждого типа ресурсов.
Кроме того, Bicep запускает анализатор кода для файлов. Анализ кода — это процесс проверки кода по набору рекомендаций. Анализатор кода Bicep просматривает ваш файл и проверяет, выполнены ли рекомендации по обеспечению возможности обслуживания, правильности, гибкости и расширяемости.
Анализатор кода содержит предопределенный набор правил для каждой из этих категорий. Ниже приведены примеры правил анализатора кода:
- Неиспользуемые параметры. При проверке на наличие любых параметров, которые не используются в файле Bicep. Исключив неиспользуемые параметры, вы упростите развертывание шаблона, так как вам не нужно будет указывать лишние значения. Вы также упростите другим пользователям работу с вашим файлом Bicep.
-
Интерполяция строк: линтер проверяет, использует
concat()
ли файл функцию вместо интерполяции строк Bicep. Интерполяция строк повышает читаемость файлов Bicep. -
Значения по умолчанию для безопасных параметров: linter предупреждает вас, если заданы значения по умолчанию для параметров, помеченных декоратором
@secure()
. Значение по умолчанию для безопасного параметра является плохой практикой, так как он дает безопасный параметр удобочитаемому значению, и люди могут не изменять его перед развертыванием.
Анализатор кода Bicep запускается автоматически при использовании инструментария Bicep. Каждый раз при создании файла Bicep анализатор кода проверяет его на соответствие рекомендациям. При развертывании Bicep-файла в Azure происходит автоматически.
Но в конвейере, как правило, требуется выполнить шаги проверки и анализа перед развертыванием файла. Можно указать Bicep проверить файл, вручную создав файл Bicep с помощью интерфейса командной строки Bicep:
az bicep build --file main.bicep
bicep build main.bicep
Примечание.
При выполнении команды build
код Bicep преобразуется в шаблон ARM JSON. Обычно результирующий файл не нужен, поэтому его можно игнорировать.
Так как вы хотите проверить шаблоны Bicep каждый раз, когда любой пользователь проверяет код в репозитории, вы можете добавить этап и задание lint в конвейер:
Это дополнение можно выразить в файле YAML конвейера следующим образом:
stages:
- stage: Lint
jobs:
- job: Lint
steps:
- script: |
az bicep build --file deploy/main.bicep
Ошибки и предупреждения анализатора кода
По умолчанию анализатор кода выдает предупреждение, когда обнаруживает, что файл Bicep нарушает правило. Предупреждения, которые выдает анализатор кода Bicep, не рассматриваются как ошибки, поэтому они не останавливают выполнение конвейера и не прекращают выполнение последующих этапов.
Это поведение можно изменить, настроив Bicep так, чтобы обнаруженные анализатором кода нарушения правил обрабатывались как ошибки, а не предупреждения. Для этого добавьте файл bicepconfig.json в папку, которая содержит файл Bicep. Вы можете решить, какие проблемы анализатор кода должен рассматривать как ошибки, а какие могут остаться предупреждениями. Далее в этом модуле вы узнаете, как обновить правила linter.
Совет
Файл bicepconfig.json также управляет тем, как Visual Studio Code отображает ошибки и предупреждения в редакторе. Неправильные части кода в шаблоне Bicep подчеркиваются красными и желтыми волнистыми линиями. Эти индикаторы позволяют быстрее замечать ошибки при написании кода Bicep и снижают риск ошибок.
После перенастройки анализатора кода таким образом, чтобы он выдавал ошибки каждый раз, когда обнаруживает проблему, конвейер прекращает выполнение, и последующие задания и этапы не выполняются. Эта настройка помогает убедиться, что проблематичный код Bicep не будет развернут.
Предварительная проверка
Также следует проверить, может ли шаблон Bicep быть успешно развернут в среде Azure. Эта проверка называется предварительной проверкой и выполняет дополнительные проверки, необходимые Azure для предоставления сведений. Это могут следующие проверки.
- Для ресурсов Bicep указаны допустимые имена?
- Для ресурсов Bicep указаны уникальные имена?
- Вы развертываете ресурсы в допустимые регионы?
Для предварительной проверки требуется связь с Azure, но никакие ресурсы не развертываются.
Задачу можно использовать AzureResourceManagerTemplateDeployment
для отправки Bicep-файла для предварительной проверки и настройки :deploymentMode
Validation
- stage: Validate
jobs:
- job: Validate
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
connectedServiceName: 'MyServiceConnection'
location: $(deploymentDefaultLocation)
deploymentMode: Validation
resourceGroupName: $(ResourceGroupName)
csmFile: deploy/main.bicep
Эта команда похожа на задание развертывания, которое вы уже использовали, но она не развертывает никакие ресурсы. Он выполняет дополнительные проверки ресурсов, используемых в шаблоне.
Например, файл Bicep содержит учетную запись хранения. Предварительная проверка проверяет наличие выбранного имени в другой учетной записи хранения. Также проверяется, соответствует ли выбранное имя соглашениям об именовании.
Команда предварительной проверки также запускает Bicep linter. Однако обычно рекомендуется запускать анализатор кода отдельно. Таким образом, если анализатор кода найдет ошибки, вы быстро заметите их, не дожидаясь завершения процесса проверки. Проверка занимает больше времени.
Внимание
При выполнении предварительной проверки каждый поставщик ресурсов Azure выполняет собственные проверки. Некоторые поставщики ресурсов не выполняют много проверок, в то время как другие делают, поэтому вы не можете полагаться на проверку предварительной проверки, чтобы убедиться, что ваш файл действителен. Тем не менее это полезный инструмент, который стоит включить в конвейер.
Добавив в конвейер этапы проверки для запуска анализатора кода и выполнения предварительной проверки, вы упрочите свою уверенность перед развертыванием файла Bicep.