获取全局日志过滤器以从 Rundeck 中的另一个作业捕获 key/value 数据

Getting global log filter to capture key/value data from another job in Rundeck

我使用 Rundeck 来执行作业 A。在作业 A 中,我有一个使用默认正则表达式 (RUNDECK:DATA:...) 捕获 key/value 数据的全局日志过滤器。

我调用另一个作业 - 作业 B - 打印以 RUNDECK:DATA:key = 值开头的内容。我从作业 A 执行作业 B。不知何故,我在作业 A 中设置的全局日志过滤器不解析作业 B 的输出。

我向作业 B 添加了相同的全局日志过滤器,发现数据被正确捕获,但它在作业 A 上不可用,因此可以在以下步骤中使用。

有谁知道是否可以从另一个作业的输出中捕获 key/value?我设法从同一个作业的步骤中捕获值,但当输出来自另一个调用的作业的执行时却没有。

检查您的最后一条评论最简单的方法是使用存储值的文件(在 JobB 上),稍后由 JobA 的后续步骤处理。基本上,JobA 通过 Job Reference Step 启动 JobB,然后 JobB 在文件上生成数据,JobA 在接下来的步骤中从临时文件中恢复该值。

工作A:

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>a0daf1e3-e918-43dc-b232-bc46a7a287b6</id>
    <loglevel>INFO</loglevel>
    <name>JobA</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "starting Job A"</exec>
      </command>
      <command>
        <description>Job B call that geneates the temp value</description>
        <jobref name='JobB' nodeStep='true'>
          <uuid>ba183d3b-67d9-4499-b863-da8b7ac8aef3</uuid>
        </jobref>
      </command>
      <command>
        <exec>echo "printing the Job B value"</exec>
      </command>
      <command>
        <exec>cat tempfile.txt</exec>
        <plugins>
          <LogFilter type='key-value-data'>
            <config>
              <invalidKeyPattern>\s|$|\{|\}|\</invalidKeyPattern>
              <logData>true</logData>
              <regex>^(mykey)\s*=\s*(.+)$</regex>
            </config>
          </LogFilter>
        </plugins>
      </command>
      <command>
        <exec>echo "the value is ${data.mykey}"</exec>
      </command>
    </sequence>
    <uuid>a0daf1e3-e918-43dc-b232-bc46a7a287b6</uuid>
  </job>
</joblist>

工作B:

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>ba183d3b-67d9-4499-b863-da8b7ac8aef3</id>
    <loglevel>INFO</loglevel>
    <name>JobB</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "Generating the value..."</exec>
      </command>
      <command>
        <exec>echo "mykey=myvalue" &gt; tempfile.txt</exec>
      </command>
      <command>
        <exec>echo "Value generated on temp file"</exec>
      </command>
    </sequence>
    <uuid>ba183d3b-67d9-4499-b863-da8b7ac8aef3</uuid>
  </job>
</joblist>