是否可以将jenkins管道编译到jar中以供共享库使用?

是否可以将jenkins管道编译到jar中以供共享库使用?,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,这里是我的问题,我想将jenkins管道编译到jar中,以供共享库导入和使用,这样我就可以保护我的jenkins管道源代码 正如我们所知,共享库可以使用第三方库,我编写自己的第三方库并编译到jar中,然后让共享库导入并使用它,但我不知道如何在自己的第三方库中使用jenkins管道步骤 以下是我所做的: 我用groovy语言创建自己的第三方库,并将其编译成jar,源代码如下: //src/main/groovy/DemoLibrary.groovy //我想让这个库运行jenkins管道步骤 包c

这里是我的问题,我想将jenkins管道编译到jar中,以供共享库导入和使用,这样我就可以保护我的jenkins管道源代码

正如我们所知,共享库可以使用第三方库,我编写自己的第三方库并编译到jar中,然后让共享库导入并使用它,但我不知道如何在自己的第三方库中使用jenkins管道步骤

以下是我所做的:

  • 我用groovy语言创建自己的第三方库,并将其编译成jar,源代码如下:
  • //src/main/groovy/DemoLibrary.groovy
    //我想让这个库运行jenkins管道步骤
    包com.example
    导入org.jenkinsci.plugins.workflow.steps.dustable_task.ShellStep
    类库{
    //此函数可以在jenkins主节点中运行命令
    //runShell(脚本:script,cwd:cwd)
    //返回:进程
    def runShell(args){
    def cmd=args.script
    如果(args.cwd&&args.cwd!=“”){
    cmd=“cd${args.cwd}&${cmd}”
    }
    def cmds=['bash','-c',cmd]
    def proc=cmds.execute()
    waitFor()程序
    if(proc.exitValue()!=0){
    抛出新异常(“[ERROR]运行shell错误:${proc.err.text}”)
    }
    返回过程
    }
    //我希望这个函数调用jenkins“sh”步骤,但我不知道如何在共享库中获取StepContext
    //runStepShell(脚本:脚本,上下文:上下文)
    //返回:步执行
    def runStepShell(args){
    def shellStep=new shellStep(args.script)
    def stepExecution=shellStep.start(args.context)
    重新运行步骤执行
    }
    }
    
  • 我创建了我的共享库,源代码如下:
  • //vars/demoLibrary.groovy
    @Grab('com.example:demo库:0.1.0')
    @字段demoLib=new DemoLibrary()
    def demoStage(){
    docker.image(“alpine:latest”).内部(“--user 1000:1000”){
    def script=“主机名”
    //运行步骤“sh”可以显示docker容器的主机名
    sh脚本:脚本
    //但是运行runShell显示jenkins主机的主机名
    def proc=demoLib.runShell(脚本:script)
    回显“${proc.text}”
    //如何让docker stepContext使我的第三方库运行jenkins sh step?
    rrunStepShell(脚本:脚本,上下文:上下文)
    }
    }
    
    我可以在自己的第三方库中调用jenkins steps吗?这让我有好几天都很沮丧。Thx