#powershell #jenkins
Вопрос:
С помощью Powershell я пытаюсь добиться следующего: Увеличьте номер сборки в файле AssemblyInfo.cs на сервере сборки. Мой сценарий выглядит так, как показано ниже, прямо сейчас, после более чем 100 итераций различных вариантов, я все еще не могу заставить его работать. Сценарий хорошо работает в консоли Powershell, но при включении в сценарий конвейера Дженкинса я получаю различные ошибки, которые трудно исправить…
def getVersion (file) {
def result = powershell(script:"""Get-Content '${file}' |
Select-String '[0-9] \.[0-9] \.[0-9] \.' |
foreach-object{$_.Matches.Value}.${BUILD_NUMBER}""", returnStdout: true)
echo result
return result
}
...
powershell "(Get-Content ${files[0].path}).replace('[0-9] \.[0-9] \.[0-9] \.[0-9] ',
${getVersion(files[0].path)})) } | Set-Content ${files[0].path}"
...
Комментарии:
1. Взгляните на плагин ассемблерной версии , он в значительной степени делает то, что вы хотите из коробки. Вот ссылка на соответствующие этапы конвейера для заданий конвейера.
2. Да, я действительно наткнулся на этот плагин в самом начале … Но на его домашней странице написано «Готов к усыновлению»… это заставляло меня нервничать по поводу его использования… Поэтому решил написать свой собственный сценарий… Я проверю и попробую это сделать
3. Только что связался с менеджером … Не в порядке, чтобы использовать плагин … Придется придерживаться моего собственного сценария …
Ответ №1:
Как насчет классного подхода (с ключевыми словами Дженкинса) вместо PowerShell:
def updtaeAssemblyVersion() {
def files = findFiles(glob: '**/AssemblyInfo.cs')
files.each {
def content = readFile file: it.path
def modifedContent = content.repalceAll(/([0-9] \.[0-9] \.[0-9] \.)([0-9] )/,"$1${BUILD_NUMBER}")
writeFile file: it.path, text: modifedContent
}
}
Он прочитает все соответствующие файлы и заменит только раздел сборки версии для каждого события, соответствующего регулярному выражению версии.
Комментарии:
1. Да, именно это я в итоге и сделал … Я смешивал классный код со сценарием Powershell … Что не очень хорошо прошло … Спасибо