Edgewall Software

Changes between Version 1 and Version 2 of Master Slave Protocol Http


Ignore:
Timestamp:
Jul 23, 2007, 10:43:54 PM (17 years ago)
Author:
cmlenz
Comment:

Minor corrections

Legend:

Unmodified
Added
Removed
Modified
  • Master Slave Protocol Http

    v1 v2  
    44This is a proposal for an HTTP-based protocol enabling communication between the build master and various build slaves. The protocol presented here is not final yet, nor is it implemented. Just throwing ideas out there, basically.
    55
    6 == Comparison the Previous BEEP Protocol ==
     6== Comparison to the Previous BEEP Protocol ==
    77
    88The BEEP-based protocol currently used by Bitten is described on MasterSlaveProtocol.
     
    1717== Build Creation ==
    1818
    19 A new client connects to the build master and asks the master whether there are any pending builds it could perform. The slave does this by `POST`ing its profile to the master, which contains information such as:
    20  * The platform/architecture of the slave machine,
     19A new slave connects to the build master and “asks” the master whether there are any pending builds it could perform. The slave does this by `POST`ing its profile to the master, which contains information such as:
     20 * the platform/architecture of the slave machine,
    2121 * the operating system,
    2222 * the product name and version number of each of the dependencies of the project to build (for example, the C compiler or the Python runtime), and
     
    2727POST /build/ HTTP/1.1
    2828Host: example.org
    29 Content-Type: application/xml; charset=utf-8
     29Content-Type: application/x-bitten+xml
    3030Content-Length: 666
    3131
     
    4545}}}
    4646
    47 The response contains the URL to a build recipe as the value of the `Location` header. At this point, the master has allocated a pending build entity in its database that can also be viewed as HTML at the specified URL using any HTTP user agent.
     47The response contains the URL to a build recipe as the value of the `Location` header. At this point, the master has allocated a pending build entity in its database. The progress on this build can be viewed as HTML at the specified URL using any HTTP user agent.
    4848
    4949On the other hand, if the master has no work for the slave, it would return a `204 No Content` response:
     
    9595  ''Open issue: details of the checkout process should also be reported back the master''
    9696
    97 After every completed step, the slave should make a `PUT` requests the `steps` member of build collection:
     97After every completed step, the slave should make a `PUT` request to the `steps` member of build collection:
    9898
    9999{{{
     
    109109The `started` 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).
    110110
    111 The `<result>` element may contain one or more child elements:
     111The `<result>` element may contain one or more of the following child elements:
    112112 * `<error></error>` elements indicate errors in the execution of the step,
    113113 * `<log></log>` elements contain the build log output, and
     
    120120== Uploading of Build Artifacts ==
    121121
    122 If the recipe contains an `<upload>` element at the end of the recipe, the slave is expected to perform file uploads of any of the files specified. This is done using `PUT` requests the the `files` member of the build collection:
     122If the recipe contains an `<upload>` element at the end (after all `<step>` elements), the slave is expected to perform file uploads of any of the files specified. This is done using `PUT` requests the the `files` member of the build collection:
    123123
    124124{{{