>我有一个管道脚本,其中相同的方法需要在不同的代理中执行。 我为通用功能定义了方法,但是我想将代理作为参数传递给方法并执行该函数。这基本上会导致错误!
那么,是否可以将代理作为方法参数传递并在其中执行某些脚本!?
例如:
stage('[CD][POD] VERIFY INSTANCE HEALTH') {
steps{
container(container_name_aws_lb) {
script{
echo "health test fails"
startApplication("${instance1_jenkins_label}")
}
}
}
}
def startApplication(String agentLabel)
{
sh "echo agent id inside method ${agentLabel}"
agent{
label "${agentLabel}"
}
sh "sudo su tip_deployment -c 'pwd'"
sh "sudo su tip_deployment -c 'sudo systemctl restart pics'"
}
当我执行时,它错误如下
java.lang.NoSuchMethodError: No such DSL method 'agent' found among steps [addBadge, addErrorBadge, addHtmlBadge, addInfoBadge, addShortText, addWarningBadge, archive, awaitDeploymentCompletion, awsIdentity, bat, bitbucketStatusNotify, build, catchError, cfInvalidate, cfnCreateChangeSet, cfnDelete, cfnDeleteStackSet, cfnDescribe, cfnExecuteChangeSet, cfnExports, cfnUpdate, cfnUpdateStackSet, cfnValidate, checkout, container, containerLog, createSummary, cucumberSlackSend, deleteDir, deployAPI, dir, dockerFingerprintFrom, dockerFingerprintRun, ec2ShareAmi, echo, ecrDeleteImage, ecrListImages, ecrLogin, envVarsForTool, error, fileExists, findFiles, getContext, git, input, invokeLambda, isUnix, jiraComment, jiraIssueSelector, jiraSearch, junit, library, libraryResource, listAWSAccounts, load, lock, mail,
任何指导都值得赞赏。
尝试将其拆分为 2 个不同的函数,其中一个返回代理标签的值,并带有一些参数作为输入。您可以使用此功能在阶段内选择代理标签。
然后让你的函数单独执行一组 shell 变量或其他一些任务。