Мне нужно использовать Java 14 на размещенном агенте (macos-12), и я пытаюсь установить его с помощью сценария, а затем использую задачу JavaToolInstaller, чтобы сделать его доступным.
Я изменил скрипт из https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/tool/java-tool-installer?view=azure-devops
jobs:
- job: RunApiTests
pool:
vmImage: macOS-12
condition: ne(variables['Build.SourceBranch'], 'refs/heads/main')
steps:
- task: JavaToolInstaller@0
displayName: Install Java 14
inputs:
versionSpec: '14'
jdkArchitectureOption: 'x64'
jdkSourceOption: AzureStorage
azureResourceManagerEndpoint: {azureResourceManagerEndpoint}
azureStorageAccountName: {azureStorageAccountName}
azureContainerName: openjdk
azureCommonVirtualFile: 'openjdk-14.0.2.zip'
jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk14'
cleanDestinationDirectory: false
Ниже приведена ошибка, которую я получаю:
##[error]JDK file is not valid. Verify if JDK file contains only one root folder with 'bin' inside.
Я скачал 14.0.2 (build 14.0.2+12) jdk для Mac с https://jdk.java.net/archive/ и сжал только папку Home в zip-файл, потому что bin там.
Итак, согласно требованию, zip-файл содержит только одну корневую папку 'Home' с bin внутри.
Мне нужна помощь, почему я получаю эту ошибку.
Я попытался протестировать ваш yaml в своем конвейере, и он работает. Ниже приведены мои шаги.
Я скачал этот пакет:
В моем zip у меня есть эти файлы:
Загружено в учетную запись хранения.
Ямл:
trigger:
- none
pool:
vmImage: macos-12
steps:
- task: JavaToolInstaller@0
inputs:
versionSpec: '14'
jdkArchitectureOption: 'x64'
jdkSourceOption: 'AzureStorage'
azureResourceManagerEndpoint: 'myEndpoint'
azureStorageAccountName: 'teststorage'
azureContainerName: 'test'
azureCommonVirtualFile: 'homefolder.zip'
jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk14'
cleanDestinationDirectory: false
Результат:
Просто чтобы скрыть название моей подписки, так как оно содержит мой идентификатор подписки. Это не пусто. Я отредактировал ответ.
Удалось исправить проблему. Мне пришлось выбрать и заархивировать поднаправления (bin, conf, include и т. д.). Я заархивировал каталог, который раньше содержал подкаталоги.
Есть ли причина, по которой вы оставили свойство «azureResourceManagerEndpoint» пустым?