Added schema and contracts for blueprints.#28
Added schema and contracts for blueprints.#28nazrhom wants to merge 5 commits intonew-contract-schemafrom
Conversation
| "properties": { | ||
| "filename": { | ||
| "$id": "/properties/output/properties/filename", | ||
| "type": "string" |
There was a problem hiding this comment.
Maybe we can add a pattern here to denote an fs path in UNIX style (with slashes, etc)?
| "definitions": {}, | ||
| "$schema": "http://json-schema.org/draft-07/schema#", | ||
| "properties": { | ||
| "data": { |
There was a problem hiding this comment.
You should add a required property for this object.
| "type": "object", | ||
| "patternProperties": { | ||
| "^.*$": { | ||
| "type": "string", |
There was a problem hiding this comment.
Keep in mind that selectors might also be an array, so we need to support both. ie:
'sw.arch': [ 1, 3 ]| "$id": "/properties/output/properties/template/items", | ||
| "type": "object", | ||
| "additionalProperties": false, | ||
| "properties": { |
There was a problem hiding this comment.
Can you mark these properties as required?
| "$ref": "contract.json#/definitions/partialContract" | ||
| }, | ||
| { | ||
| "properties": { |
There was a problem hiding this comment.
I think you're missing slug and type here
There was a problem hiding this comment.
slug and type come from the above reference to a partial contract (line 25). The spec says
An object describing how the resulting contexts should look like. You may use properties such as `type`, `slug`, `data`, etc. You may use blueprint results to construct certain properties by accessing children through the `children` property
Which I took to intend that output may contain any top-level field that appears in a contract, should it be restricted to a subset of those props?
There was a problem hiding this comment.
Yeah, you're right. Nevermind
| "template": [ | ||
| { | ||
| "name": "docker-images", | ||
| "data": "{{import partial=\"from\" combination=\"sw.os+sw.arch\"}}\nLABEL io.resin.architecture=\"{{sw.arch.slug}}\"\n{{import partial=\"os-config\" combination=\"sw.os+sw.arch\"}}\n{{#sw.blob.qemu}} {{import partial=\"qemu\" combination=\"sw.os+sw.arch\"}} {{/sw.blob.qemu}}\n{{import partial=\"base-dependencies\" combination=\"sw.os+sw.arch\"}}\nCOPY {{sw.blob.resin-xbuild.assets.bin.main}} /usr/bin/\nRUN ln -s {{sw.blob.resin-xbuild.assets.bin.main}} /usr/bin/cross-build-start \\\n && ln -s {{sw.blob.resin-xbuild.assets.bin.main}} /usr/bin/cross-build-end\n\nENV TINI_VERSION {{sw.blob.tini.version}}\nRUN chmod +x {{sw.blob.tini.assets.bin.main}} \\\n && mv {{sw.blob.tini.assets.bin.main}} /sbin/tini\n\n{{import partial=\"init-system\" combination=\"sw.os+sw.arch\"}}" |
There was a problem hiding this comment.
Ugh :P Lets aim to convert contracts to YAML sometime soon :P
| "componentVersion": "1", | ||
| "aliases": [], | ||
| "tags": [], | ||
|
|
There was a problem hiding this comment.
Any reason for this blank line?
There was a problem hiding this comment.
mostly to split up the generic contract props with the ones that are specific to the blueprint type, we can drop it
There was a problem hiding this comment.
Guys, could you point me to some description of these general properties? Specifically, slug, type, aliases, and tags. Thanks!
There was a problem hiding this comment.
slug: A human readable unique identifier. Both the id and the slug are considered to be primary keys of an elementtype: The type of entity a contract defines, such asuser,message,repository, etc. The properties you must define in the contract depend on the type of entityaliases: Alternative slugs for the element. You can fetch an element by slug using any of the aliases, but the one inslugis the canonical one. For example, if you describe the raspberry pi 3, its canonical slug may beraspberrypi3but we also put the following aliases[ rpi3, raspberry-pi3 ]tags: An array of free form strings that you attach to the contract. Can be anything and the way they are used are context-specific. For example we use#pendinguserresponseto categorise support threads when doing support
40e9af2 to
ef17200
Compare
bed0496 to
a2e1af0
Compare
a2e1af0 to
11cf69c
Compare
Change-type: minor