在 Jenkins 文件内的循环中使用我的共享库代码时出现问题。
我在 vars/codeSigning.groovy 中有一个 Jenkins 共享库函数,如下所示
void windows(String filePath) {
String signFile = 'sign_windows.ps1'
writeFile(file: signFile, text: libraryResource('sign_windows.ps1'))
File signFilePath = new File(signFile)
withCredentials([string(credentialsId: 'SM_API_KEY', variable: 'SM_API_KEY'), string(credentialsId: 'SM_CLIENT_CERT_PASSWORD', variable: 'SM_CLIENT_CERT_PASSWORD')]) {
echo "Signing file: ${filePath}..."
powershell label: "Signing file ${filePath}", script: """./${signFilePath} -FilePath "${filePath}" -CertificateName "COMPANY Incorporated" """
}
}
当我在 Jenkins 文件中调用这样的函数时,它工作得很好
stage('CTC - Pre Build Stage') {
steps {
script {
codeSigning.windows('pathtofile')
}
}
}
当我像这样运行它时,从 Jenkins 收到一条错误消息
java.lang.NoSuchMethodError:在其中找不到这样的 DSL 方法“windows” 步骤 [....] 或全局变量 [codeSigning, ...]
stage('Sign SharedScripts') {
steps {
unstash 'SharedScripts'
script {
def filesToSign = []
def foundFiles = findFiles(glob: "scripts/**/*")
foundFiles.each { filename ->
if ("${filename}".endsWith(".ps1")) {
filesToSign.add(filename)
}
}
filesToSign.each { fileToSign ->
codeSigning.windows(fileToSign)
}
}
}
}