Changes between Version 1 and Version 2 of Master Slave Protocol Http
- Timestamp:
- Jul 23, 2007, 10:43:54 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Master Slave Protocol Http
v1 v2 4 4 This 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. 5 5 6 == Comparison t he Previous BEEP Protocol ==6 == Comparison to the Previous BEEP Protocol == 7 7 8 8 The BEEP-based protocol currently used by Bitten is described on MasterSlaveProtocol. … … 17 17 == Build Creation == 18 18 19 A new client connects to the build master and asksthe 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,19 A 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, 21 21 * the operating system, 22 22 * 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 … … 27 27 POST /build/ HTTP/1.1 28 28 Host: example.org 29 Content-Type: application/x ml; charset=utf-829 Content-Type: application/x-bitten+xml 30 30 Content-Length: 666 31 31 … … 45 45 }}} 46 46 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 alsobe viewed as HTML at the specified URL using any HTTP user agent.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. The progress on this build can be viewed as HTML at the specified URL using any HTTP user agent. 48 48 49 49 On the other hand, if the master has no work for the slave, it would return a `204 No Content` response: … … 95 95 ''Open issue: details of the checkout process should also be reported back the master'' 96 96 97 After every completed step, the slave should make a `PUT` request sthe `steps` member of build collection:97 After every completed step, the slave should make a `PUT` request to the `steps` member of build collection: 98 98 99 99 {{{ … … 109 109 The `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). 110 110 111 The `<result>` element may contain one or more child elements:111 The `<result>` element may contain one or more of the following child elements: 112 112 * `<error></error>` elements indicate errors in the execution of the step, 113 113 * `<log></log>` elements contain the build log output, and … … 120 120 == Uploading of Build Artifacts == 121 121 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:122 If 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: 123 123 124 124 {{{