Развертывание индивидуальной контейнерной службы в кластере Service Fabri c с использованием конвейеров azure YAML - PullRequest
0 голосов
/ 06 августа 2020

В настоящее время я работаю над проектом service fabri c, который использует модель программирования контейнеров .

Я реализую процесс CI / CD с использованием Azure конвейеров (с файлом YAML) который должен создать образ из файла докеров для конкретной службы c, pu sh образ в Azure Реестр контейнеров , а затем развернуть новую службу (новый образ) в службе fabri c cluster.

Чтобы завершить последний шаг, мне нужно обновить версию образа Docker внутри service fabri c manifest, используя следующий шаг .

Во время сборки конвейера я просматривал следующее руководство .

Проблема , с которой я столкнулся сейчас, заключается в том, что для обновления Docker версия сервиса внутри service fabri c manifest, я должен использовать ServiceFabricUpdateManifests@2 шаг , для которого требуются следующие параметры: imageNamesPath и imageDigestsPath. Я не могу найти обновленную документацию о том, как мне создавать эти файлы. В документации Microsoft для этапа конвейера сказано, что

Этот файл может быть выведен задачей Docker при использовании действия pu sh.

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

Подводя итог, я в настоящее время отстой на сцене, где я построил и продвинул новую Docker изображение в Azure Реестр контейнеров, но я не могу обновить манифест службы fabri c, поэтому позже, когда я смогу развернуть службу индивидуально.

Вот часть определения YAML:

- task: MSBuild@1
  displayName: Build and package $(serviceFabricProject)
  inputs:
    solution: '$(serviceFabricProject)'
    msbuildArchitecture: 'x64'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    msbuildArguments: '/t:Package /p:outputPath="bin/x64/Release/" /p:intermediateOutputPath="obj/x64/Release/" /p:PackageLocation=$(Build.ArtifactStagingDirectory)\drop\Release\applicationpackage'

- task: Docker@2
  displayName: Build Dockerfile
  inputs:
    command: 'build'
    containerRegistry: 'containerRegistry'
    repository: '$(imageRepository)'
    Dockerfile: 'Api/Dockerfile'
    buildContext: '.'
    tags: '$(imageTag)'

- task: Docker@2
  displayName: Push image
  inputs:
    command: push
    containerRegistry: 'containerRegistry'
    repository: '$(imageRepository)'
    tags: '$(imageTag)'

- task: ServiceFabricUpdateManifests@2
  displayName: Update Service Fabric Manifests (Docker image settings)
  inputs:
    updateType: 'Docker image settings'
    applicationPackagePath: '$(System.ArtifactsDirectory)\\$(publishedProjectArtifact)'
# This is where I cannot figure out how to update the docker version for a service in service fabric manifest file
#   imageNamesPath: '$(build.artifactstagingdirectory)\BuiltDockerImages.txt'
#   imageDigestsPath: '$(build.artifactstagingdirectory)\ImageDigests.txt'

 - task: ServiceFabricUpdateManifests@2
   displayName: Update Service Fabric Manifests (Manifest Versions)
   inputs:
     updateType: 'Manifest Versions'
     applicationPackagePath: '$(System.ArtifactsDirectory)\\$(PublishedProjectArtifact)'
     versionSuffix: '-CI-$(Build.BuildNumber)'
     updateOnlyChanged: true
     pkgArtifactName: 'userservicepkg'

Кроме того, я обнаружил, что для создания файла imageNamesPath я должен добавить аргумент BuiltDockerImagesFilePath при построении sfproj, но файл также не был создан.

Большое спасибо за помощь!

С уважением, Николай

...