【问题标题】:Jenkins plugin - how to get currently executing job?Jenkins 插件 - 如何获取当前正在执行的工作?
【发布时间】:2018-11-14 10:39:49
【问题描述】:

我正在构建一个 jenkins 管道插件(要从管道调用的方法),并且需要检索有关当前正在运行的作业的信息,该作业调用了我的方法。

我发现有几个问题在谈论它,例如这里 - Jenkins Plugin How to get Job information

但我不知道如何使用这些信息。我确实可以访问 Jenkins 实例,但没有关于当前项目、作业、构建等的任何信息。我​​怎样才能获得这些信息?

注意,这是一个管道步骤插件,里面没有perform方法。

【问题讨论】:

    标签: jenkins jenkins-plugins jenkins-pipeline


    【解决方案1】:

    好的,经过搜索,终于在最明显的地方找到了答案——documentation for writing pipeline steps plugins和对应的API documentation

    这样做的方法来自Execution 类。在其中,只需调用getContext(),它返回StepContext,然后有.get 方法来获取您需要的其余内容:

    public class MyExecution extends SynchronousNonBlockingStepExecution<ReturnType> {
        ...
    
        @Override
        protected ReturnType run() throws Exception {
            try {
                StepContext context = getContex();
    
                // get currently used workspace path
                FilePath path = context.get(FilePath.class);
    
                //get current run
                Run run = context.get(Run.class);
    
                // ... and so on ...
            } catch (Exception e) {
                e.printStackTrace();
                throw e;
            }
        }
    
        ...
    }
    

    【讨论】:

    • 嗨,这篇文章很有趣,但我不明白你是如何使用这段代码的。要获取 MyExecution 的实例,您需要为其构造函数提供上下文,如何获取它?其次,该类应该返回一个ReturnType,它到底是什么?
    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 2011-06-13
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多