当前位置: 首页 > 面试题库 >

将命令移到jenkinsfile中的自定义类时命令失败

郜驰
2023-03-14
问题内容

我正在建立一个新的版本。运行一个简单的shell命令非常有效,如下所示:

stage("Demo") {    
    sh "echo 'Hi There'"
}

我一直试图将我的shell脚本“打包”到自己的类中,以使事情更加整洁。问题在于,当尝试从一个类中执行相同的完全相同的Shell脚本时,jenkins失败,并显示以下内容:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:未分类的方法java.lang.Class
sh java.lang.String

这是一个简单的示例,在将上述方法移入其自己的类后,对我来说失败了:

stage('Demo stage') {
    Tools.PrintMe("Hi There")   
}

public class Tools {
    public static void PrintMe(String message) {
        sh "echo " + message
    }
}

脚本管理器中也没有提供将此拒绝方法列入白名单的选项。

有办法解决这个问题吗?还是有我不知道的限制?


问题答案:

@Crait在您自己的类中调用预定义的步骤,您需要将脚本对象路径传递到您的类。

因此,请尝试以下操作:

stage('Demo stage') {
    Tools.PrintMe(this, "Hi There")   
}

public class Tools {
    public static void PrintMe(def script, String message) {
        script.sh "echo " + message
    }
}


 类似资料:
  • 3.3 自定义命令 命令语法 定义命令与定义映射的用法其实很相似: :command {lhs} {rhs} 只不过在使用自定义命令时,{lhs} 是直接输入到命令行中的,当你按下回车时,vim 就将 {lhs} 替换为 {rhs} 再执行。所以这在形式上与下面这个映射等效: : nnoremap :{lhs}<CR> :{rhs}<CR> 当然,由于 :command 所支持的参数与 :ma

  • 问题内容: 我有一个名为“ example”的库,该库正在安装到我的全局site- packages目录中。但是,我希望能够安装两个版本,一个用于生产版本,一个用于测试版本(我有一个Web应用程序,而其他东西也都以这种方式进行了版本化)。 有没有一种方法可以指定,例如“ python setup.py stage”,它不仅可以将其他鸡蛋安装到站点程序包中,还可以将模块从“ example”重命名为

  • 假设我需要一个新的git命令gitnew,它生成一个新分支,该分支与origin/master是最新的。 是否有一种方法可以使此脚本在powershell的Windows上的所有存储库中都可用? 编辑:为了澄清我想要一个git脚本,而不是一个PowerShell函数。我提到PowerShell的唯一原因是因为我不使用git bash。

  • 应用服务启动可以在多个地方进行调整,以下介绍两种方案,Dockerfile 和 平台详情页调整 Dockerfile CMD启动方式 看一下简单的例子: FROM hub.kpaas.nsini.com/app/hello:v0.0.3 CMD ["/go/bin/hello"] 启动命令写在CMD这个后面,如果后面有多个参数可以以逗号隔开例如: CMD ["static-web", "-pa

  • 应用可以通过manage.py注册它们自己的动作。例如,你可能想为你正在发布的Django应用添加一个manage.py动作。在本页文档中,我们将为教程中的 polls应用构建一个自定义的 closepoll命令。 要做到这点,只需向该应用添加一个management/commands目录。Django将为该目录中名字没有以下划线开始的每个Python模块注册一个manage.py命令。例如: p

  • 问题内容: 我希望我的自定义Django命令每分钟执行一次。但是,似乎在目录下工作正常时似乎不起作用。 我该如何实现?我使用 问题答案: 堆栈溢出 产品展示 搜索… 登录 注册 家 上市 堆栈溢出 标签 用户数 工作 队伍 这是什么? 30天免费试用 Django自定义命令和cron 问问题 问 10年零5个月前 活跃 2年,1个月前 观看了 13k次 16 14 我希望我的自定义Django命令