#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. Каталог источников)/выпуск в этом расположении создается файл