Декларативный конвейер Jenkins: как получить файлы (которые выходят из разных узлов) в массивы - PullRequest
0 голосов
/ 09 июля 2019

Через сценарий декларативного конвейера Jenkins можно ли читать данные файла и с разных узлов ??

Пример:
У меня 3 узла (от А до С).
Из A мне нужно прочитать данные файла со всех других узлов и сохранить их в массиве, а затем из AI нужно выполнить некоторые операции из этих значений Array.Я попытался с помощью следующего кода.

pipeline{
    agent none
    stages{
        stage("Node-C"){
            agent {
                label "Node-C"
            }
            steps{
                sh '''
                   arr1=($(grep -i "docker" /opt/abc/Text1.txt))
                '''
            }
        }
        stage("Node-B"){
            agent {
                label "Node-B"
            }
            steps{
                sh '''
                   arr1+=($(grep -i "docker" /opt/abc/Text1.txt))
                '''
            }
        }
        stage("Node-A"){
            agent {
                label "Node-A"
            }
            steps{
                sh '''
                    arr1+=($(grep -i "docker" /opt/abc/Text1.txt))
                    for i in "${arr1[@]}"
                    do
                       echo "== $i =="
                    done
                '''
            }
        }
    }
}

Выше сценарий печатает только данные файла Node-A.Но как мы можем печатать данные Node-B и Node-C?

Ответы [ 2 ]

0 голосов
/ 15 июля 2019

1 - Определить массив в Jenkinsfile

def arr1 = []

2 - Новые переменные для элементов массива

String element1 = sh (
                        script: 'grep -i "docker" /opt/abc/Text1.txt',
                        returnStdout: true
                   ).trim()

3 - добавить элементы в массив

0 голосов
/ 15 июля 2019

Определить глобальную переменную и прочитать значения этой переменной.

def str=''
pipeline{
agent any
stages {
    stage('master'){
        agent {
            label 'master' 
        }
       steps{ 
           script { str +='am in node 1 ' }
       }
    }
    stage('agent'){
        agent {
            label 'agent01' 
        }
       steps{ 
          script{ str += 'and am in node 2' }
       }
    }

     stage('output'){
       steps{ 
           echo "${str}"
       }
    }  
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...