2017-05-21 15 views
13

Làm cách nào để chuyển các biến giữa các giai đoạn trong một đường dẫn khai báo?Làm cách nào để chuyển các biến giữa các giai đoạn trong một đường dẫn Jenkins khai báo?

Trong một đường ống theo kịch bản, tôi thu thập quy trình là ghi vào một tệp tạm thời, sau đó đọc tệp đó thành một biến.

Làm cách nào để thực hiện điều này trong một đường dẫn khai báo?

Ví dụ: Tôi muốn kích hoạt một bản dựng của một công việc khác, dựa trên một biến được tạo ra bởi một hành động shell.

stage("stage 1") { 
    steps { 
     sh "do_something > var.txt" 
     // I want to get var.txt into VAR 
    } 
} 
stage("stage 2") { 
    steps { 
     build job: "job2", parameters[string(name: "var", value: "${VAR})] 
    } 
} 
+0

Đối với ghi và đọc một phần, có shash/unstash btw. – sebkraemer

Trả lời

17

Nếu bạn muốn sử dụng một tập tin (từ một kịch bản là điều tạo ra các giá trị mà bạn cần):

pipeline { 
    agent { label 'docker' } 
    stages { 
    stage('one') { 
     steps { 
     sh 'echo hotness > myfile.txt' 
     script { 
      // trim removes leading and trailing whitespace from the string 
      myVar = readFile('myfile.txt').trim() 
     } 
     echo "${myVar}" // prints 'hotness' 
     } 
    } 
    stage('two') { 
     steps { 
     echo "${myVar}" // prints 'hotness' 
     } 
    } 
    // this stage is skipped due to the when expression, so nothing is printed 
    stage('three') { 
     when { 
     expression { myVar != 'hotness' } 
     } 
     steps { 
     echo "three: ${myVar}" 
     } 
    } 
    } 
} 
+0

Chúng ta có thể sử dụng biến này với 'khi {}' không? –

+0

có; câu trả lời cập nhật để chứng minh. – burnettk

+0

bạn cũng có thể sử dụng 'def myVar' và sử dụng nó sau đó với' echo $ {myVar} 'nếu bạn muốn có cấu hình ở đầu tệp;) – wegginho

Các vấn đề liên quan