Мы настроили конвейер YAML Azure CI для запуска наших длительных интеграционных тестов. Задача интеграционного тестирования для каждого модуля выполняется на своем собственном этапе, и каждый этап выполняется на другом агенте (поэтому мы можем распараллелить выполнение этапов).
Теперь из-за зависимостей между модулями мы обнаруживаем, что компилируем большую часть один и тот же код для запуска каждого модуля. Поэтому, чтобы уменьшить необходимость в повторной компиляции, я хочу создать определенный этап для компиляции кода, опубликовать скомпилированный код, а затем позволить последующим этапам загружать скомпилированный код и просто запускать тесты.
YAML-код выглядит примерно так:
Код: Выделить всё
stages:
- stage: Compile_Source
dependsOn: []
jobs:
- job: Windows
pool:
vmImage: 'windows-latest'
steps:
- checkout
- task: Gradle@2
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'integrationTestClasses' # this will compile all code
- task: PublishPipelineArtifact@1
displayName: Publish compiled code
inputs:
targetPath: '$(Build.BinariesDirectory)'
artifact: 'CompiledCode'
publishLocation: 'pipeline'
- stage: ModuleOne
dependsOn: Compile_Source
jobs:
- job: Windows
pool:
vmImage: 'windows-latest'
steps:
- checkout
- task: DownloadPipelineArtifact@2
displayName: Download Compiled Code
inputs:
buildType: 'current'
artifactName: 'CompiledWindowsCode'
targetPath: '$(Build.BinariesDirectory)'
- task: Gradle@2
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'module_one:integrationTest'
Достижима ли моя цель, и если да, то чего мне не хватает?
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/788 ... ure-devops
Мобильная версия