Анализ и проверка кода 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 linter смотрит на файл и проверяет, что вы выполнили рекомендации по поддержанию, правильности, гибкости и расширяемости.
Анализатор кода содержит предопределенный набор правил для каждой из этих категорий. Ниже приведены примеры правил анализатора кода:
- Неиспользуемые параметры. Анализатор кода сканирует все параметры, которые не используются в файле Bicep. Исключив неиспользуемые параметры, вы упростите развертывание шаблона, так как вам не нужно будет указывать лишние значения. Вы также упростите другим пользователям работу с вашим файлом Bicep.
- Интерполяция строк. Анализатор кода проверяет, использует ли файл функцию
concat()
вместо интерполяции строк Bicep. Интерполяция строк повышает читаемость файлов Bicep. - Значения по умолчанию для параметров безопасности. Анализатор кода предупреждает вас, если вы задаете значения по умолчанию для параметров, помеченных декоратором
@secure()
. Установка по умолчанию для безопасных параметров является плохой практикой, так как она дает безопасный параметр удобочитаемому значению, и люди могут не изменять его перед развертыванием.
Анализатор кода Bicep запускается автоматически при использовании инструментария Bicep. Каждый раз при создании файла Bicep анализатор кода проверяет его на соответствие рекомендациям. Эта проверка выполняется автоматически при развертывании Bicep-файла в Azure.
Однако в рабочем процессе обычно требуется выполнить шаги проверки и подстраивание перед развертыванием файла. Можно указать Bicep проверить файл, вручную создав файл Bicep с помощью интерфейса командной строки Bicep:
az bicep build --file main.bicep
bicep build main.bicep
Примечание.
При выполнении команды build
код Bicep преобразуется в шаблон ARM JSON. Обычно результирующий файл не нужен, поэтому его можно игнорировать.
Так как вы хотите, чтобы шаблоны Bicep анализировались при каждой записи кода в репозиторий, добавьте задание анализа кода в рабочий процесс:
Вы выражаете это добавление в файл YAML рабочего процесса следующим образом:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- script: |
az bicep build --file deploy/main.bicep
Ошибки и предупреждения анализатора кода
По умолчанию linter выдает предупреждение, когда он обнаруживает, что файл Bicep нарушает правило. Предупреждения о том, что Bicep linter не обрабатывается как ошибки, поэтому они не останавливают выполнение рабочего процесса или не останавливают последующие задания от выполнения.
Это поведение можно изменить, настроив Bicep так, чтобы обнаруженные анализатором кода нарушения правил обрабатывались как ошибки, а не предупреждения. Для этого добавьте файл bicepconfig.json в папку, которая содержит файл Bicep. Вы можете решить, какие проблемы анализатор кода должен рассматривать как ошибки, а какие могут остаться предупреждениями. Далее в этом модуле вы настроите linter.
Совет
Файл bicepconfig.json также управляет тем, как Visual Studio Code отображает ошибки и предупреждения в редакторе. Неправильные части кода в шаблоне Bicep подчеркиваются красными и желтыми волнистыми линиями. Эти индикаторы позволяют быстрее замечать ошибки при написании кода Bicep и снижают риск ошибок.
После перенастройки анализатора кода таким образом, чтобы он выдавал ошибки каждый раз, когда обнаруживает проблему, рабочий процесс прекращает выполнение, и последующие задания не выполняются. Эта конфигурация помогает убедиться, что проблемный код Bicep не развернут.
Предварительная проверка
Также следует проверить, может ли шаблон Bicep быть успешно развернут в среде Azure. Этот процесс называется предварительной проверкой и выполняет проверки, необходимые Azure для предоставления сведений. Это могут следующие проверки.
- Допустимы ли имена для ресурсов Bicep?
- Вы уже указали имена для ваших ресурсов Bicep?
- Вы развертываете ресурсы в допустимые регионы?
Для предварительной проверки требуется связь с Azure, но никакие ресурсы не развертываются.
Чтобы отправить файл Bicep для предварительной проверки, используйте действие arm-deploy
и задайте для параметра deploymentMode
значение Validate
:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
name: Run preflight validation
with:
resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
template: ./deploy/main.bicep
deploymentMode: Validate
Можно также использовать команду Azure CLI az deployment group validate
.
Предварительная проверка аналогична обычному развертыванию, но никакие ресурсы не развертываются на самом деле. Она выполняет дополнительные проверки для ресурсов, используемых в шаблоне.
Например, файл Bicep содержит учетную запись хранения. Предварительная проверка проверяет, уже ли вы выбрали другую учетную запись хранения. Также проверяется, соответствует ли выбранное имя соглашениям об именовании.
Команда предварительной проверки также запускает анализатор кода Bicep. Однако обычно рекомендуется запускать анализатор кода отдельно. Таким образом, если возникают ошибки linter, их можно быстро обнаружить, а не ожидать завершения процесса проверки. Проверка занимает больше времени.
Внимание
При выполнении предварительной проверки каждый поставщик ресурсов Azure выполняет собственные проверки. Некоторые поставщики ресурсов не выполняют много проверок, а другие выполняют. Это означает, что полагаться на предварительную проверку допустимости файла нельзя. Тем не менее это полезный инструмент, который стоит включить в рабочий процесс.
Добавив в рабочий процесс задания для запуска анализатора кода и выполнения предварительной проверки, вы упрочите свою уверенность перед развертыванием файла Bicep.