Как передать переменную powershell в переменную groovy в Jenkinsfile - PullRequest
0 голосов
/ 06 июня 2019

Я пишу конвейер в Jenkinsfile.И у меня есть проблема.Как передать переменную powershell в переменную groovy, или как я могу манипулировать файлами внутри groovy в Jenkinsfile, как это делается с помощью powershell?

     stage('GETTING SLN FILES') {
       steps {
           script {
               powershell """$dirs_with_sln = Get-ChildItem -Path . -Recurse *.sln | Select-Object -Property Directory -Unique
                             $slns = @()
                             foreach($dir in $dirs_with_sln) {
                               $dir = $dir.Directory
                               $FileExists = Test-Path -Path "$dir\\default.ps1"
                               if ($FileExists -eq $true) {
                                   $slns += $(Get-ChildItem -Path $dir -Filter *.sln).FullName
                               }
                             }
                          """
    }

Файл My solutions.json:

[
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\AlertDelivery\\AlertDelivery.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\BusinessWireNewsProcessor\\BusinessWireNewsProcessor.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\ComponentMesosExecutor\\ComponentMesosExecutor.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\Crawling\\Core\\Agent\\CrawlingAgent.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\Crawling\\Crawlers\\Crawlers.Base\\_Crawlers.Base.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\Crawling\\Crawlers\\Crawlers.Custom\\_Crawlers.Custom.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\Crawling\\Crawlers\\Crawlers.Internal\\_Crawlers.Internal.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\Crawling\\Crawlers\\Crawlers.Reporting\\_Crawlers.Reporting.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\DocumentsMerge\\VADocumentsMerge\\VADocumentsMerge.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\Downloading\\DownloadProcessor.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\LogCollector\\LogCollector.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\MailProcessor\\MailProcessor.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\MailProcessor\\ProcessingAlgorithms\\CourthouseNewsAlgorithm\\InfoNgen.MailProcessor.CourthouseNewsAlgorithm.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\MailProcessor\\ProcessingAlgorithms\\DefaultProcessingAlgorithms\\InfoNgen.MailProcessor.DefaultProcessingAlgorithms.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\MailProcessor\\ProcessingAlgorithms\\HtmlNewsletterAlgorithm\\HtmlNewsletterAlgorithm.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\ProcessingUnit\\ProcessingUnit.sln",
    "D:\\ws\\workspace\\msbuild-test\\src\\DataProcessors\\SharePointDataLoader\\SharePointDataLoader.sln"
]


1 Ответ

1 голос
/ 12 июня 2019

Вот пример для вас.

Ваша проблема out-file вывод с системной кодировкой по умолчанию, которая не ASCII

Когда конвейер читает текстовый файл, он не можетраспознавать первые 1 или 2 байта как ASCII символов.Итак, сообщите об ошибке.

Таким образом, вы можете просто принудительно вывести файл json в ASCII или прочитать содержимое файла json, используя правильную кодировку.

import groovy.json.JsonSlurper
pipeline {
  agent any
  stages {
    stage('1') {
      steps {
        script {
          powershell (script: "ls C:\\ | select Name, FullName | ConvertTo-Json | out-file C:\\Temp\\1.json -encoding ascii")
          def t = readFile("C:\\Temp\\1.json")
          def tt = (new JsonSlurper()).parseText(t)
          println tt
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...