Как вывести список всех каталогов из каталога в скрипте jenkins pipe - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу получить все каталоги, представленные в определенном каталоге, из сценария конвейера jenkins.

Как мы можем это сделать?

Ответы [ 3 ]

1 голос
/ 29 апреля 2019

Я не пробовал этого, но я бы посмотрел на шаг findFiles, предоставляемый Jenkins Pipeline Utility Steps Plugin , и установил для glob значение каталога в стиле муравья, что-то вроде '** / */ '

0 голосов
/ 30 апреля 2019

Я не нашел никакого плагина для списка папок, поэтому я использовал скрипт sh / bat в конвейере, и это также будет работать независимо от операционной системы.

pipeline {
  stages {
    stage('Find all fodlers from given folder') {
        steps {
            script {

               def foldersList = []

               def osName = isUnix() ? "UNIX" : "WINDOWS"
               echo "osName: " + osName

               echo ".... JENKINS_HOME: ${JENKINS_HOME}"

               if(isUnix()) {
                 def output = sh returnStdout: true, script: "ls -l ${JENKINS_HOME} | grep ^d | awk '{print \$9}'"
                 foldersList = output.tokenize('\n').collect() { it }
               } else {
                 def output = bat returnStdout: true, script: "dir \"${JENKINS_HOME}\" /b /A:D"
                 foldersList = output.tokenize('\n').collect() { it }
                 foldersList = foldersList.drop(2)

               }
               echo ".... " + foldersList

            }
        }
    }
  }
0 голосов
/ 29 апреля 2019

Предложение для самого конца Jenkinsfile:

post {
    always {
        echo '\n\n-----\nThis build process has ended.\n\nWorkspace Files:\n'
        sh 'find ${WORKSPACE} -type d -print'
    }
}

Поместите find туда, где, по вашему мнению, лучше. Проверьте больше альтернатив в здесь

...