Как запускать команды оболочки с переменными в Jenkinsfile - PullRequest
0 голосов
/ 03 августа 2020

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

Команда оболочки: HOSTNAME = $ (hostname) DATE = $ (date "+% d-% m-% y% H:% M:% S") CPUUSAGE = $ (top -b -n 1 -d1 | grep "ЦП (ы)" | awk '{print $ 2} '| awk -F.' {Print $ 1} ') MEMUSAGE = $ (free | grep Mem | awk' {print $ 3 / $ 2 * 100.0} ')

То, что я пробовал:

pipeline {  
agent {label 'server1,server2'}
     environment {
        def CPUUSAGE=0;
        def MEMUSAGE=0;
        
    }
    stages {
    stage('Check System Usage') {
        steps {
            script {
                 CPUUSAGE = sh '''"top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}'", returnStdout: true).trim()'''
                 MEMUSAGE = sh '''"free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }'", returnStdout: true).trim()'''
                 END { printf( "\n" ); }'", returnStdout: true).trim()'''
                 println("CPUUSAGE = ${CPUUSAGE}","MEMUSAGE = ${MEMUSAGE}")
            }
        }
    }
}

помогите пожалуйста Спасибо Sama

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Отметьте это:

pipeline {  
agent any
     environment {
        CPUUSAGE = sh(script: 'top -bn1 | grep load', returnStdout: true).trim()
        MEMUSAGE = sh(script: 'free -m', returnStdout: true).trim()
    }
    stages {
        stage('Check System Usage') {
            steps {
                echo "CPUUSAGE = $CPUUSAGE"
                echo "MEMUSAGE = $MEMUSAGE"
            }
        }
    }
}

Но вам нужно проверить свой полный сценарий. Эти укороченные скрипты у меня работают.

0 голосов
/ 03 августа 2020
pipeline {  
  agent {label 'server1,server2'}
  environment {
    def CPUUSAGE=0;
    def MEMUSAGE=0;
  }
  stages {
    stage('Check System Usage') {
      steps {
        script {
          def  CPUUSAGE_SCRIPT = '''
            top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}'
          '''

          def MEMUSAGE_SCRIPT = '''
            free -m | awk 'NR==2 {printf "%.2f%%\t\t", $3*100/$2} END {printf "\n"}'
          '''
          CPUUSAGE = sh(script: CPUUSAGE_SCRIPT, returnStdout: true).trim()
          MEMUSAGE = sh(script: MEMUSAGE_SCRIPT, returnStdout: true).trim()

          println("CPUUSAGE = ${CPUUSAGE}, MEMUSAGE = ${MEMUSAGE}")
        }
      }
    }
  }
}
...