首页 > 解决方案 > Jenkins 插件 - 如何获取当前正在执行的工作?

问题描述

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

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

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

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

标签: jenkinsjenkins-pluginsjenkins-pipeline

解决方案


好的,经过一番搜索,终于在最明显的地方找到了答案——写流水线步骤插件的文档和对应的API文档

做到这一点的方法是从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;
        }
    }

    ...
}

推荐阅读