Как скопировать файл с использованием подстановочного имени в кодовом пути конвейера Azure Devops.yml

#azure #devops #pipeline

Вопрос:

у меня есть файл с .exe examle (hello/my-file-print-on-text-2.0.1-win-x64.exe) и этот файл с версией 2.0.1 и более поздними сборками этой версии будет изменен на 2.0.2.. и так далее.

этот же файл я хочу скопировать в другую папку с версиями всякий раз, когда версия обновляется автоматически с помощью команды cp.

не могли бы вы помочь, как сделать это имя файла подстановочным знаком

я попробовал приведенные ниже способы, но это не сработало, и это на машине с Windows, а не на Linux.

 cp "hello/my-file-print-on-text-*-win-x64.exe)" "hello/my-file-print-on-text.exe)"   cp "hello/my-file-print-on-text*-win-x64.exe)" "hello/my-file-print-on-text.exe)"  

как использовать команду cp с подстановочным знаком версия файла всякий раз, когда он изменяется, копирование должно происходить с новым именем?

Ответ №1:

Итак, вы сказали, что делаете это в Windows, поэтому я дам вам одно решение, которое использует Powershell для выполнения того, что вы ищете (скопируйте один исполняемый файл в папку с именем и номером версии, из которой он взят). Это можно использовать с powershell pwsh типами задач или в конвейерах Azure:

 # Find the EXE to copy, get the first result $exeFile = (Get-ChildItem hello/my-file-print-on-text-*-win-x64.exe |   Select-Object -First 1 Name).Name  # if the name of the file has some form of version in the name, if ($exeFile -match "my-file-print-on-text-(.*)-win-x64.exe") {  # grab the version  $version = $Matches[1]   # change this to the structure of the folder name you want  $targetFolder = "path-containing-$version-number"    # verify or create the target folder  if (!(Test-Path $targetFolder)) {   New-Item -ItemType Directory $targetFolder   }   # and then copy the EXE there  Copy-Item $n $targetFolder }  

Комментарии:

1. Извините , я не понял процесса.

2. Не о чем сожалеть — я просто интерпретировал ваш вопрос и предложил решение, основанное на этой интерпретации. Делает ли это более или менее то, что вы хотите?

3. Есть ли в любом случае возможность прочитать конкретный файл, сгенерированный из конвейера azure devops 0utput, и поместить его в нашу собственную папку.

4. Нам нужно было бы знать, какова структура папок сборки. Вообще говоря, системная переменная $(Pipeline.Workspace) ссылается на загрузку артефакта во время выпуска, я ожидаю, что исполняемый файл будет где-то под этим, но я не могу сказать вам, где из того, что я вижу.

5. структура папок файлов выглядит следующим образом $(Build. Каталог источников)/выпуск в этом расположении создается файл