作业条件报告先前的作业“从不运行”

时间:2020-06-14 17:25:48

标签: rundeck

我有一个Job可以调用其他作业作为主运行文件。我执行了初步检查,该检查会在管理服务器上设置一些值,以确保不会由于运行更新而收到任何错误警报。

初步作业执行良好,但紧随其后的条件始终输出以下状态:

sum

无论我做什么,我都无法弄清楚是我做错了什么,还是只是配置有误,还是条件被破坏了。对于我的约有10台服务器的家庭实验室来说,这是一个很小的安装,因此我正在使用默认的数据库后端运行,而不是MySQL或其他版本,因此我不知道这是否是一个问题。

我的Rundeck详细信息

{{UUID}} is NOT RUNNING AND previously NEVER. Expected NOT RUNNING AND 'Succeeded'

1 个答案:

答案 0 :(得分:0)

验证工作状态的条件期望,我在3.2.8上工作的一个例子。基本上,Job Step Conditional期望另一个作业最后一次执行成功,而任何其他使条件失败的事情。

HelloWorld工作:

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <group>test1</group>
    <id>0bdd6fe5-addb-4051-b072-bb4430130a80</id>
    <loglevel>INFO</loglevel>
    <name>HelloWorld</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "hello world"</exec>
      </command>
    </sequence>
    <uuid>0bdd6fe5-addb-4051-b072-bb4430130a80</uuid>
  </job>
</joblist>

CheckerJob(通过“作业步骤”为条件步骤,期望HelloWorld作业成功执行):

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <group>test1</group>
    <id>c6f2be75-81e8-4f8e-ba35-234d5c8a97d6</id>
    <loglevel>INFO</loglevel>
    <name>CheckerJob</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "starting..."</exec>
      </command>
      <command>
        <step-plugin type='job-state-conditional'>
          <configuration>
            <entry key='condition' value='Equals' />
            <entry key='executionState' value='Succeeded' />
            <entry key='fail' value='true' />
            <entry key='halt' value='true' />
            <entry key='jobName' value='test1/HelloWorld' />
            <entry key='jobProject' value='${job.project}' />
            <entry key='jobUUID' value='0bdd6fe5-addb-4051-b072-bb4430130a80' />
            <entry key='running' value='false' />
          </configuration>
        </step-plugin>
      </command>
    </sequence>
    <uuid>c6f2be75-81e8-4f8e-ba35-234d5c8a97d6</uuid>
  </job>
</joblist>

如果作业从不运行before

如果作业运行before(作业状态有条件的期望)。

另一种方式

如果要在同一父作业中有条件地运行作业状态,则需要单独执行“子”作业,而这样做的方式是“外部”执行该作业(使用RD-CLI或API,我举个例子):

HelloWord:

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>dd33434e-5b6e-40e1-88b0-e9b5b52a3801</id>
    <loglevel>INFO</loglevel>
    <name>HelloWorld</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "hello world!"</exec>
      </command>
    </sequence>
    <uuid>dd33434e-5b6e-40e1-88b0-e9b5b52a3801</uuid>
  </job>
</joblist>

CheckerFakeParentJob(执行HelloWorld vi RD-CLI并在以后评估该执行):

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>a90ec790-b856-4f00-8b66-2f37da1d00cb</id>
    <loglevel>INFO</loglevel>
    <name>CheckerFakeParentJob</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "starting"</exec>
      </command>
      <command>
        <fileExtension>.sh</fileExtension>
        <script><![CDATA[# print a message
echo "running HelloWorld job"

# run the hello world job via RD-CLI to get the individual execution and evaluate later
rd run -j HelloWorld -p ProjectEXAMPLE

# some time depending of job
sleep 3

# print a message
echo "done"]]></script>
        <scriptargs />
        <scriptinterpreter>/bin/bash</scriptinterpreter>
      </command>
      <command>
        <step-plugin type='job-state-conditional'>
          <configuration>
            <entry key='condition' value='Equals' />
            <entry key='executionState' value='Succeeded' />
            <entry key='fail' value='true' />
            <entry key='halt' value='true' />
            <entry key='jobUUID' value='dd33434e-5b6e-40e1-88b0-e9b5b52a3801' />
            <entry key='running' value='false' />
          </configuration>
        </step-plugin>
      </command>
    </sequence>
    <uuid>a90ec790-b856-4f00-8b66-2f37da1d00cb</uuid>
  </job>
</joblist>

结果here

您有更多信息here

编辑:如果您引用的是基于作业参考步骤的工作流程,则必须采用父作业状态(即使子作业是通过父作业执行的)。