Edgewall Software

Changes between Version 9 and Version 10 of Master Slave Protocol


Ignore:
Timestamp:
Jul 10, 2005, 11:04:52 PM (19 years ago)
Author:
cmlenz
Comment:

Update protocol description to match current implementation

Legend:

Unmodified
Added
Removed
Modified
  • Master Slave Protocol

    v9 v10  
    3636The server acknowledges that it received the registration with a positive or negative reply.
    3737
    38 Next, the server checks whether there are any pending builds for that client. For example, if it is the only client that supports GCC 4.0, and there has been no build of some revision with GCC 4 yet, it will initiate a build on that client. Anyway, the server remembers the client configuration for as long as the connection is open, and may choose to route build requests to that client when repository changes are detected, or a build is triggered otherwise.
     38Next, the server checks whether there are any pending builds for that client (see BuildConfigurations). For example, if it is the only client that supports GCC 4.0, and there has been no build of some revision with GCC 4 yet, it will initiate a build on that client. Anyway, the server remembers the client configuration for as long as the connection is open, and may choose to route build requests to that client when repository changes are detected, or a build is triggered otherwise.
    3939
    4040== Build Initiation ==
     
    109109  Content-Type: application/beep+xml
    110110
    111   <started />
     111  <started time="2005-06-29T16:41:22"/>
    112112  END
    113113}}}
     114
     115The {{{time}}} attribute contains the date and time (in ISO 8601 format) at which the build was started. These timestamps must be UTC, and consequently must not contain a timezone offset.
    114116
    115117The slave then begins executing the steps in the recipe one-by-one (in the order they appear in the file). After each step of the [wiki:BuildRecipes build recipe], the client informs the server, with '''{{{ANS}}}''' messages containing a {{{<step/>}}} element in the payload, about the step it has processed, and what the outcome was (success or failure):
     
    119121  Content-Type: application/beep+xml
    120122
    121   <step id="test" description="Run all unit tests" result="success" />
     123  <step id="test" description="Run all unit tests" result="success"
     124        time="2005-06-29T16:41:53" duration="7.61"/>
    122125  END
    123126}}}
     127
     128The {{{time}}} attribute specifies the date and time at which processing of this step was started. The {{{duration}}} attribute contains the number of seconds that it took to complete the step (this may include fractions).
    124129
    125130In case of an error, the message should include the primary error message in the body of the {{{<step></step>}}} element:
     
    129134  Content-Type: application/beep+xml
    130135
    131   <step id="test" description="Run all unit tests" result="success">
     136  <step id="test" description="Run all unit tests" result="failure"
     137        time="2005-06-29T16:41:53" duration="7.61">
    132138    Could not load command "unittest".
    133139  </step>
     
    136142
    137143 '''TODO''': ''Transmission of build log and generated reports to the master''
     144
     145After the slave has processed all of the build steps, it sends an '''{{{ANS}}}''' message containing the element {{{<completed/>}}} in the payload:
     146
     147{{{
     148  ANS 1 2 . 0 66 2
     149  Content-Type: application/beep+xml
     150
     151  <completed time="2005-06-29T16:44:02"/>
     152  END
     153}}}
    138154
    139155Furthermore, in case the slave is unexpectedly interrupted while executing a build, it should send an '''{{{ANS}}}''' message containing the element {{{<abort></abort>}}} in the payload: