Невозможно запустить terraform из конвейера Jenkins на бродячей виртуальной машине - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть приведенная ниже настройка конвейера, которая использует плагин terraform для выполнения terraform.

Вот мое окружение. В Centos7 Vagrant VM был установлен Terraform, Jenkins с использованием пользователя Vagrant. Плагин Terraform также установлен для Jenkins. Terraform может быть запущен вручную. Когда terraform используется конвейером, он терпит неудачу. Пробовал пару других способов установить путь терраформ, все не удалось.

Terraform находится в / usr / local / bin / terraform.


pipeline {

  agent any

  stages {
    stage('Set Terraform path') {
      steps {
        script {               
            def tfHome = tool name: 'terraform'
            env.PATH = "${tfHome}:${env.PATH}"
            // def tfhome = tool name: 'terraform', type: 'org.jenkinsci.plugins.terraform.TerraformInstallation'
            // env.PATH = "${tfhome}:${env.PATH}"
            // def tfHome = tool name: 'terraform', type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool'
            // env.PATH = "${tfHome}:${env.PATH}"
            echo "tfhome is ${tfhome}, env.PATH is ${env.PATH} "
        }
        // sh '/usr/local/bin/terraform -version'
        sh 'terraform -version'
      }
    }
  }
}

Вот сообщение об ошибке:

Failed Node Use a tool from a predefined Tool Installation

hudson.AbortException: No org.jenkinsci.plugins.terraform.TerraformInstallation named terraform found
    at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:162)
    at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:133)
    at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

1 Ответ

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

Я понял это. Инструмент terraform не может использоваться пользователем jenkins. Поэтому я создаю символическую ссылку, указывающую на команду terraform. Ошибка ушла!

...