Jenkins插件开发-如何检查插件是否在Jenkins Master上执行

时间:2018-12-29 19:31:24

标签: jenkins jenkins-plugins

我已经实现了自定义的兼容管道的Jenkins插件,该插件扩展了data_DF = data_DF.groupby(pd.Grouper(freq='5min')).agg({'open':'first', 'close':'last', 'high':'max', 'low':'min'}) open close high low time 2018-12-29 07:30:00 3411.4 3413.9 3413.9 3411.4 2018-12-29 07:35:00 3413.9 3413.1 3416.1 3411.9 2018-12-29 07:40:00 3413.1 3422.9 3427.5 3413.1 2018-12-29 07:45:00 3421.1 3423.8 3431.7 3418.0 2018-12-29 07:50:00 3423.8 3428.2 3428.2 3418.9 类。我想在Jenkins Master vs Jenkins Slave上实现围绕执行的特定逻辑。如何在插件代码中检查该步骤是否在Master上运行?

1 个答案:

答案 0 :(得分:0)

通常,插件执行在Jenkins从属中的构建执行器上进行。但是,要验证插件代码的哪一部分在主/从上执行,可以使用以下代码。

  1. 找出特定于您的从属的环境变量。为此,我使用了NODE_NAME env var。您可以通过http://localhost:8080/env-vars.html在Jenkins实例中找到所有可用的环境变量(替换主机名以匹配您的实例)。在其中,您会找到NODE_NAME:
  

NODE_NAME

     

如果该版本位于代理上,则为代理的名称;如果在主版本上运行,则为“ master”

  1. 记录/打印环境变量。以下是显示如何打印的代码段。在那里,我展示了使用setUp method of hudson BuildWrapper作为参考的示例。

    @Override
    public Environment setUp(final AbstractBuild build, final Launcher launcher,
                    final BuildListener listener) throws IOException, InterruptedException {
    
       String node = System.getenv("NODE_NAME");
       String msg = "I'm executing on node: " + node;
       listener.getLogger().println(msg); //prints to build log
       logger.info(msg);           // slf4j logger - prints to catalina log/jenkins log
    }
    

或者,您也可以将值写入文件,然后从文件中读取值。