Автоматическая публикация для непрерывной интеграции и поставки (CI/CD)
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
Примечание.
Synapse Analytics также поддерживает CI/CD. Дополнительные сведения см. в документации по CI/CD Synapse Analytics.
Обзор
Непрерывная интеграция — это способ автоматического тестирования каждого изменения, внесенного в базу кода. Непрерывная поставка следует сразу за проверкой, которая выполняется во время непрерывной интеграции. Она передает изменения в промежуточную или рабочую систему.
В Фабрика данных Azure CI/CD означает перемещение конвейеров фабрики данных из одной среды, например разработки, тестирования и рабочей среды в другую. Фабрика данных Azure использует шаблоны Azure Resource Manager (шаблоны ARM) для хранения конфигурации различных сущностей Фабрики данных Azure (конвейеров, наборов данных, потоков данных и т. д.).
Существуют два рекомендуемых метода перемещения фабрики данных в другую среду.
- Автоматизированное развертывание с помощью интеграции Фабрики данных с Azure Pipelines.
- Загрузка шаблона ARM вручную с помощью интеграции с интерфейсом пользователя фабрики данных с Azure Resource Manager.
Дополнительные сведения об этом процессе см. в статье Непрерывная интеграция и поставка в Фабрике данных Azure.
В этой статье содержатся сведения о функции автоматической публикации для CI и CD, а также о том, как усовершенствовать непрерывное развертывание.
Усовершенствование непрерывного развертывания
Функция автоматической публикации использует функции Проверить все и Экспорт шаблона ARM из пользовательского интерфейса фабрики данных и делает логику пригодной для использования с помощью общедоступного пакета npm @microsoft/azure-data-factory-utilities. По этой причине вы можете запускать эти действия с помощью программ, вместо того, чтобы переходить в пользовательский интерфейс Фабрики данных и нажимать кнопку вручную. Эта возможность предоставит вашим конвейерам CI и CD более точную непрерывную интеграцию.
Примечание.
Не забудьте использовать узел версии 18.x и ее совместимую версию, чтобы избежать ошибок, которые могут возникать из-за несовместимости пакета со старыми версиями.
Текущий поток CI и CD
- Каждый пользователь вносит изменения в свои частные ветви.
- У вас нет разрешения на отправку в главную ветвь. Пользователям нужно создать запрос на вытягивание для внесения изменений.
- Пользователям нужно загрузить пользовательский интерфейс Фабрики данных и выбрать Опубликовать, чтобы развернуть изменения в Фабрике данных и создать шаблоны ARM в опубликованной ветви.
- Конвейер Выпуска DevOps настроен для создания нового выпуска и развертывания шаблона ARM во время передачи нового изменения опубликованной ветви.
Шаг вручную
В текущем потоке CI и CD, взаимодействие с пользователем является посредником при создании шаблона ARM. В результате пользователь должен перейти в пользовательский интерфейс фабрики данных и вручную выбрать Опубликовать, чтобы запустить создание шаблона ARM и удалить его в опубликованной ветви.
Новый поток CI и CD
- Каждый пользователь вносит изменения в свои частные ветви.
- У вас нет разрешения на отправку в главную ветвь. Пользователям нужно создать запрос на вытягивание для внесения изменений.
- Сборка конвейера Azure DevOps запускается при внесении новой фиксации в главную ветвь. Если проверка прошла успешно, конвейер проверит ресурсы и создаст шаблон ARM в качестве артефакта.
- Конвейер Выпуска DevOps настроен для создания нового выпуска и развертывание шаблона ARM каждый раз, когда доступна новая сборка.
Что изменилось?
- Теперь у нас есть процесс сборки, использующий конвейер сборки DevOps.
- В конвейере сборки используется пакет NPM ADFUtilities, который проверяет все ресурсы и создает шаблоны ARM. Эти шаблоны могут быть одиночными и связанными.
- Конвейер сборки отвечает за проверку ресурсов Фабрики данных и создание шаблона ARM вместо пользовательского интерфейса Фабрики данных (кнопка Опубликовать).
- Определение выпуска DevOps теперь будет использовать этот новый конвейер сборки вместо артефакта Git.
Примечание.
Вы можете продолжать использование существующего механизма, которым является ветвь adf_publish
, или можете использовать новый поток. Поддерживаются оба варианта.
Основные сведения о пакете
В пакете сейчас доступны две команды:
- Экспорт шаблона ARM
- Проверить
Экспорт шаблона ARM
Запустите npm run build export <rootFolder> <factoryId> [outputFolder]
, чтобы экспортировать шаблон ARM, используя ресурсы указанной папки. Эта команда также выполняет проверку перед созданием шаблона ARM. Ниже приведен пример использования группы ресурсов с именем testResourceGroup:
npm run build export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput
RootFolder
— это обязательное поле, представляющее место расположения ресурсов Фабрики данных.FactoryId
— это обязательное поле, представляющее идентификатор ресурса Фабрики данных в формате/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>
.OutputFolder
—это необязательный параметр, указывающий относительный путь для сохранения созданного шаблона ARM.
Возможность остановить и запустить только обновленные триггеры теперь общедоступна и объединяется в команду, показанную выше.
Примечание.
Созданный шаблон ARM не опубликован в рабочей версии фабрики. Развертывание должно выполняться с помощью конвейера CI и CD.
Проверить
Выполните команду npm run build validate <rootFolder> <factoryId>
, чтобы проверить все ресурсы указанной папки. Приведем пример:
npm run build validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory
RootFolder
— это обязательное поле, представляющее место расположения ресурсов Фабрики данных.FactoryId
— это обязательное поле, представляющее идентификатор ресурса Фабрики данных в формате/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>
.
Создание конвейера Azure
Хотя пакеты NPM могут использоваться различными способами, одним из основных преимуществ является использование Azure Pipeline. При каждом слиянии с ветвью совместной работы может быть запущен конвейер, который сначала проверяет весь код, а затем экспортирует шаблон ARM в артефакт сборки, который может использоваться конвейером выпуска. Он отличается от текущего процесса CI и CD тем, что вы указываете конвейер выпуска на этот артефакт, а не на существующуюadf_publish
ветвь .
Чтобы начать, выполните эти действия:
Откройте проект Azure DevOps и перейдите в раздел Конвейеры. Выберите Новый конвейер.
Выберите репозиторий, в котором требуется сохранить скрипт YAML конвейера. Рекомендуется сохранить его в папке сборки в том же репозитории ресурсов Фабрики данных. Убедитесь, что в репозитории существует файл package.json, содержащий имя пакета, как показано в следующем примере:
{ "scripts":{ "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index" }, "dependencies":{ "@microsoft/azure-data-factory-utilities":"^1.0.0" } }
Выберите Простейший конвейер. Если вы загрузили или объединили файл YAML, как показано в следующем примере, вы также можете указать прямо на него и изменить его.
# Sample YAML file to validate and export an ARM template into a build artifact # Requires a package.json file located in the target repository trigger: - main #collaboration branch pool: vmImage: 'ubuntu-latest' steps: # Installs Node and the npm packages saved in your package.json file in the build - task: UseNode@1 inputs: version: '18.x' displayName: 'Install Node.js' - task: Npm@1 inputs: command: 'install' workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder verbose: true displayName: 'Install npm package' # Validates all of the Data Factory resources in the repository. You'll get the same validation errors as when "Validate All" is selected. # Enter the appropriate subscription and name for the source factory. Either of the "Validate" or "Validate and Generate ARM temmplate" options are required to perform validation. Running both is unnecessary. - task: Npm@1 inputs: command: 'custom' workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder customCommand: 'run build validate $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name>' displayName: 'Validate' # Validate and then generate the ARM template into the destination folder, which is the same as selecting "Publish" from the UX. # The ARM template generated isn't published to the live version of the factory. Deployment should be done by using a CI/CD pipeline. - task: Npm@1 inputs: command: 'custom' workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder customCommand: 'run build export $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name> "ArmTemplate"' #For using preview that allows you to only stop/ start triggers that are modified, please comment out the above line and uncomment the below line. Make sure the package.json contains the build-preview command. #customCommand: 'run build-preview export $(Build.Repository.LocalPath) /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/GartnerMQ2021/providers/Microsoft.DataFactory/factories/Dev-GartnerMQ2021-DataFactory "ArmTemplate"' displayName: 'Validate and Generate ARM template' # Publish the artifact to be used as a source for a release pipeline. - task: PublishPipelineArtifact@1 inputs: targetPath: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>/ArmTemplate' #replace with the package.json folder artifact: 'ArmTemplates' publishLocation: 'pipeline'
Введите код YAML. В качестве отправной точки рекомендуется использовать файл YAML.
Сохраните его, а потом запустите. Если вы использовали YAML, он активируется каждый раз при обновлении главной ветви.
Примечание.
Созданные артефакты уже содержат скрипты предварительного и последующего развертывания для триггеров, поэтому их нельзя добавить вручную. Однако при развертывании необходимо будет ссылаться на документацию по остановке и запуску триггеров для выполнения предоставленного скрипта.
Связанный контент
Дополнительные сведения о процессе непрерывной интеграции и поставки в Фабрике данных Azure см. в этой статье.