Saya memiliki pengaturan berikut:
(Dihapus) Jenkinsfile:
@Library('my-custom-library') _
pipeline {
agent any
stages {
stage('Example') {
steps {
printHello name: 'Jenkins'
}
}
}
}
perpustakaan-kustom-saya/resources/com/org/scripts/print-hello.sh:
#!/bin/bash
echo "Hello, $1"
perpustakaan-kustom-saya/vars/printHalo.groovy:
def call(Map parameters = [:]) {
def printHelloScript = libraryResource 'com/org/scripts/print-hello.sh'
def name = parameters.name
//the following line gives me headaches
sh(printHelloScript(name))
}
Saya mengharapkan Hello, Jenkins
, tetapi menimbulkan pengecualian berikut:
groovy.lang.MissingMethodException: Tidak ada tanda tangan metode: java.lang.String.call() berlaku untuk tipe argumen: (java.lang.String) nilai: [Jenkins]
Solusi yang mungkin: wait(), any(), wait(long), split(java.lang.String), take(int), masing-masing(groovy.lang.Closure)
Jadi, apakah mungkin melakukan sesuatu seperti dijelaskan di atas, tanpa mencampurkan kode Groovy dan Bash?