Автоматическая публикация для непрерывной интеграции и поставки (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

  1. Каждый пользователь вносит изменения в свои частные ветви.
  2. У вас нет разрешения на отправку в главную ветвь. Пользователям нужно создать запрос на вытягивание для внесения изменений.
  3. Пользователям нужно загрузить пользовательский интерфейс Фабрики данных и выбрать Опубликовать, чтобы развернуть изменения в Фабрике данных и создать шаблоны ARM в опубликованной ветви.
  4. Конвейер Выпуска DevOps настроен для создания нового выпуска и развертывания шаблона ARM во время передачи нового изменения опубликованной ветви.

Схема, показывающая текущий поток CI и CD.

Шаг вручную

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

Новый поток CI и CD

  1. Каждый пользователь вносит изменения в свои частные ветви.
  2. У вас нет разрешения на отправку в главную ветвь. Пользователям нужно создать запрос на вытягивание для внесения изменений.
  3. Сборка конвейера Azure DevOps запускается при внесении новой фиксации в главную ветвь. Если проверка прошла успешно, конвейер проверит ресурсы и создаст шаблон ARM в качестве артефакта.
  4. Конвейер Выпуска DevOps настроен для создания нового выпуска и развертывание шаблона ARM каждый раз, когда доступна новая сборка.

Схема, на которой показан новый текущий поток CI и CD.

Что изменилось?

  • Теперь у нас есть процесс сборки, использующий конвейер сборки 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 ветвь .

Чтобы начать, выполните эти действия:

  1. Откройте проект Azure DevOps и перейдите в раздел Конвейеры. Выберите Новый конвейер.

    Снимок экрана: кнопка

  2. Выберите репозиторий, в котором требуется сохранить скрипт YAML конвейера. Рекомендуется сохранить его в папке сборки в том же репозитории ресурсов Фабрики данных. Убедитесь, что в репозитории существует файл package.json, содержащий имя пакета, как показано в следующем примере:

    {
        "scripts":{
            "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index"
        },
        "dependencies":{
            "@microsoft/azure-data-factory-utilities":"^1.0.0"
        }
    } 
    
  3. Выберите Простейший конвейер. Если вы загрузили или объединили файл 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'
    
  4. Введите код YAML. В качестве отправной точки рекомендуется использовать файл YAML.

  5. Сохраните его, а потом запустите. Если вы использовали YAML, он активируется каждый раз при обновлении главной ветви.

Примечание.

Созданные артефакты уже содержат скрипты предварительного и последующего развертывания для триггеров, поэтому их нельзя добавить вручную. Однако при развертывании необходимо будет ссылаться на документацию по остановке и запуску триггеров для выполнения предоставленного скрипта.

Дополнительные сведения о процессе непрерывной интеграции и поставки в Фабрике данных Azure см. в этой статье.