Контейнеры S3 не указаны в плагине Jenkins Active choice. - PullRequest
0 голосов
/ 26 марта 2020

Привет, ребята. Я пытаюсь перечислить только имена файлов в указанном сегменте c в моем s3, и я получил следующую команду в aws cli,

aws s3 ls s3://inc-eb-deployments/my-bucket/ | awk '{ print $4 }' 

Но я хочу добавить эту команду AWS cli в мой скрипт groovy в плагине Jenkins «Active Choice Parameter», я добавил его, как показано ниже,

def sout = new StringBuilder(), serr = new StringBuilder()
def proc = 'aws s3 ls s3://inc-eb-deployments/my-bucket/ | awk '{ print $4 }' '.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(2000)
def values = "$sout".split('.zip')
def trimmedValues
def parameters=[]
values.each {  println "${it}" }
def cleanValues = "$sout".split('inc')
def last = cleanValues.last().split('.zip')[0]
cleanValues.each {  "${it}".toString(); 
                    trimmedValues = "${it}".trim();
                    parameters<<trimmedValues
                 }
parameters.remove(parameters.size() - 1);
parameters.add(last)
parameters

Но когда я запускаю задание, я надеваю не вижу никаких выходных файлов с именами файлов на странице сборки.

enter image description here

Кто-нибудь может мне помочь, где проблема в этом Groovy скрипте?

1 Ответ

1 голос
/ 26 марта 2020

Это может не сработать, так как String.execute () делает «глупые вещи» (разбивается на пробелы) и выполняет вообще не запускает оболочку вообще - это просто exec s. Если вы хотите использовать шеллизм в мире groovy, используйте:

def proc = ["/bin/sh", "-c", "aws s3 ls s3://inc-eb-deployments/my-bucket/ | awk '{ print \$4 }' "].execute()
...