В настоящее время я работаю над проектом 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
, но файл также не был создан.
Большое спасибо за помощь!
С уважением, Николай