Команда не найдена в jenkins pipeline grrovy

#jenkins #groovy #jenkins-pipeline #jenkins-groovy

#дженкинс #groovy #дженкинс-конвейер #дженкинс-groovy

Вопрос:

Я получаю сообщение об ошибке «команда не найдена» при выполнении приведенного ниже кода jenkns. Может кто-нибудь, пожалуйста, помочь мне решить эту проблему?

 def myVariable = "foo"

pipeline {
    agent none
    
    stages {
        stage ('npm publish on web package') {
            agent {label 'master'}
        
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    script{
                        def pom = readMavenPom file: 'Project1/pom.xml'
                        sh "echo ${pom.version}"
                        sh 'ssh -tt admin@20.100.300.28 cd /opt/admin/projects/as/ amp;amp; echo "${myVariable}" >/opt/automation/projects/automation_suite/.version'
                    }    
                }
            }
        }
    }
}
  

Журнал прилагается ниже. Это часть журнала, которая связана с ошибкой Дженкинса.

 Commit message: "fff"
[Pipeline] withEnv
[Pipeline] {
[Pipeline] tool
[Pipeline] envVarsForTool
[Pipeline] withEnv
[Pipeline] {
[Pipeline] catchError
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] sh
  1.1.39
/opt/software/jenkins/workspace/automation_suite/Test_Pipeline_2@tmp/durable-14b3d621/script.sh: line 1: 1.1.39: command not found
[Pipeline] }
[Pipeline] // script
[Pipeline] }
ERROR: script returned exit code 127
[Pipeline] // catchError
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
  

Комментарии:

1. Вы знаете, что sh "${myVariable}" => sh "foo" ? Является foo допустимой командой?

2. извините за это. это моя ошибка при добавлении вопроса. ее не было в коде.

3. Теперь я повторно исправил код

4. Добавьте также полный журнал консоли. command not found не оставляет никаких сведений о том, какая команда может вызвать проблему.

5. Добавлена часть журнала

Ответ №1:

Дважды проверьте свой код конвейера. Ошибка, которую вы видите, может быть вызвана

 sh "${pom.version}"
  

В опубликованном вами примере используется

 sh "echo ${pom.version}"
  

но если бы это было так, вы бы увидели что-то вроде этого в журнале консоли:

 [Pipeline] sh
  echo 1.1.39
1.1.39
[Pipeline] }
  

Ваш журнал консоли доказывает, что это не так, и вы ${pom.version} sh где-то явно переходите к команде.

 [Pipeline] sh
  1.1.39
/opt/software/jenkins/workspace/automation_suite/Test_Pipeline_2@tmp/durable-14b3d621/script.sh: line 1: 1.1.39: command not found