В настоящее время я работаю над конвейерным скриптом для Azure Devops. Я хочу предоставить файл настроек maven в качестве защищенных файлов для конвейера. Проблема в том, что когда я определяю задание только для предоставления файла, файл больше не появляется при запуске следующего задания.
Я попытался определить задание с помощью задачи DownloadSecureFile и команды копирования, чтобы получить файл настроек. Но когда начинается следующее задание, файла больше нет, и поэтому его нельзя использовать.
Я уже проверил это, используя pwd и ls в конвейере.
Это часть моего текущего файла YAML (который на самом деле работает):
some variables
...
trigger:
branches:
include:
- stable
- master
jobs:
- job: Latest_Release
condition: eq(variables['Build.SourceBranchName'], 'master')
steps:
- task: DownloadSecureFile@1
name: settingsxml
displayName: Download maven settings xml
inputs:
secureFile: settings.xml
- script: |
cp $(settingsxml.secureFilePath) ./settings.xml
docker login -u $(AzureRegistryUser) -p $(AzureRegistryPassword) $(AzureRegistryUrl)
docker build -t $(AzureRegistryUrl)/$(projectName):$(projectVersionNumber-Latest) .
docker push $(AzureRegistryUrl)/$(projectName):$(projectVersionNumber-Latest)
....
other jobs
Я хотел поместить задачу DownloadSecureFile и «cp $ (settingsxml.secureFilePath) ./settings.xml» в собственное задание, потому что есть больше заданий, которым нужен этот файл для других веток / выпусков, и я не хочу скопировать один и тот же код на все задания.
Это файл YAML, как я и хотел:
some variables
...
trigger:
branches:
include:
- stable
- master
jobs:
- job: provide_maven_settings
# no condition because all branches need the file
- task: DownloadSecureFile@1
name: settingsxml
displayName: Download maven settings xml
inputs:
secureFile: settings.xml
- script: |
cp $(settingsxml.secureFilePath) ./settings.xml
- job: Latest_Release
condition: eq(variables['Build.SourceBranchName'], 'master')
steps:
- script: |
docker login -u $(AzureRegistryUser) -p $(AzureRegistryPassword) $(AzureRegistryUrl)
docker build -t $(AzureRegistryUrl)/$(projectName):$(projectVersionNumber-Latest) .
docker push $(AzureRegistryUrl)/$(projectName):$(projectVersionNumber-Latest)
....
other jobs
В моем dockerfile файл настроек используется так:
FROM maven:3.6.1-jdk-8-alpine AS MAVEN_TOOL_CHAIN
COPY pom.xml /tmp/
COPY src /tmp/src/
COPY settings.xml /root/.m2/ # can't find file when executing this
WORKDIR /tmp/
RUN mvn install
...
Ошибка возникает при запуске сборки Docker, поскольку не удается найти файл настроек. Это может случиться, когда я использую свой первый пример YAML. У меня есть ощущение, что это как-то связано с каждой работой, имеющей фазу «Оформить заказ», но я не уверен в этом.