Terraform не распознается как внутренняя или внешняя команда в jenkins - PullRequest
0 голосов
/ 30 мая 2020

Я установил jenkins на локальный компьютер windows. Затем я установил плагин terraform и изменил конфигурацию в глобальной конфигурации инструмента в jenkins, но когда я запускаю конвейер jenkin, я получаю, что «terraform» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

Код:

pipeline {
   agent any

   stages {
      stage('Hello') {
         steps {
            bat 'terraform --version'
            echo 'Hello World'
         }
      }
   }
}

вы можете мне помочь, что я делаю не так?

Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in C:\Program Files (x86)\Jenkins\workspace\actimize2
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] script
[Pipeline] {
[Pipeline] tool
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: No tool named terraform found
Finished: FAILURE

конфигурация terraform: enter image description here

1 Ответ

0 голосов
/ 30 мая 2020

Вам нужно будет получить Terraform home с помощью команды инструмента, а затем добавить его в переменную среды Path , чтобы интерпретатор оболочки, вызванный bat , мог найти terraform command:

def tfHome = tool name: 'Terraform', type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool'
env.Path = "${tfHome};${env.Path}"

В вашем конвейере это будет выглядеть так:

pipeline {
   agent any

   stages {
      stage('Hello') {
         steps {
            def tfHome = tool name: 'Terraform', type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool'
            env.Path = "${tfHome};${env.Path}"
            bat 'terraform --version'
            echo 'Hello World'
         }
      }
   }
}

Вы также можете использовать tool непосредственно в Команда bat (это то, что я делал, когда регулярно использовал Jenkins):

pipeline {
   agent any

   stages {
      stage('Hello') {
         steps {
            bat "${tool name: 'Terraform', type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool'}\terraform --version"
            echo 'Hello World'
         }
      }
   }
}

Вы можете увидеть рабочий пример в этой статье Автоматизация проектов Terraform с помощью Jenkins .

...