robur-coop / builder

Scheduling build jobs on regular intervals, collecting artifacts
ISC License
13 stars 1 forks source link

add platform to jobs #15

Closed hannesm closed 2 years ago

hannesm commented 2 years ago

after a discussion with @reynir, the plan is as follows:

To retain backwards compatibiity, the platform should be optional (also useful for unikernel builds). this should then as well clean up some bits and pieces in builder-web. I don't think a more elaborated thing than a string makes sense here.

I.e. the ASN.1 of client_hello2 (atm sequence2 (typ, version)) should be sequence3 (typ, version, optional utf8_string platform). Similar change for exec -- add an optional string to the sequence.

At the same time, we can remove the client_hello/server_hello (earlier versions) since we have upgraded our builders (woker & server) to the most recent versions anyways :)

hannesm commented 2 years ago

Take P as a metavariable of a platform.

the revised plan is:

Internally, the server will have a queue for each platform (i.e. mutable queue is a map keyed by platform).

The add_to_queue will add the job to all queues that are suitable.

When a worker connects, it sends a Job_requested P, and there is no queue for that worker (i.e. the map above does not carry a binding for P):

The job_to_script now uses P (to select the template).

The client schedule requires a platform name, the client execute optionally gets a platform name.

The (platform) queues are never deleted, which means the server may consume more and more memory (and does more and more work in add_to_queue [which checks that a job with the same name does not already exist - that is good:)]).

hannesm commented 2 years ago

supported as aacb963b11157612f7df3c676888c21d6e6c827b