diff --git a/docs/API/Iglu Controller/create-a-new-builder.api.mdx b/docs/API/Iglu Controller/create-a-new-builder.api.mdx new file mode 100644 index 00000000..13d2bb30 --- /dev/null +++ b/docs/API/Iglu Controller/create-a-new-builder.api.mdx @@ -0,0 +1,72 @@ +--- +id: create-a-new-builder +title: "Create a new Builder" +description: "Create a new Builder using the REST API." +sidebar_label: "Create a new Builder" +hide_title: true +hide_table_of_contents: true +api: eJztWEtvGzcQ/ivEnhJAluQ27cEoCjh2Crg91LCVk2IU3N2RljGX3PBhWxD03ztD7lNax3Z6cA/2wdCSw+E3w5lvhtwmOdjMiMoJrZKT5MwAd8A4U3DPPnohczDMW6HWzBXArj5dL9jp5cU0mSQVN7wEB8YmJ8ttovADFWQ8K+DiHOcF6fvmwWzww8A3LwzkyYkzHiZ7uy5Q9RktZBfnuA93bKM9u+fKMadZFjHR/mmNSChCYHFFyZOTbeI2FW0ulIM1GJxaaVNyF4d+/ZDsdjcRA1j3UecbWvO04agn06hSOZLnVSVFxkl+9tXSou0hAp1+hcwNDF5G1wxtniRrQWLBINoHrRcPCaKsjK7AOAGW1EavtuqtM3gUyW7PgSPzpP4pWPpMakXIvJGExXCVFZ2QPfWOPr0FU5vg9C2oEZS1pm7DVGsJXBESUj6GsN5ubGoAYFxpg2lseUR5OLPbNQ5/wjOZLkuu8uZ8FkasY1hp7yrvzgX95lLq+89qZQDqbJASZAgdS8GJClL9AKSl5A9/6tSGeEKzaNan1gnnQ/oc+LPZf9RtfUQHApMElC/JBlTgOR3rPaSF1re0ucFgudnVP0bWDlPiqvYIEyvW35UJy74EHV8SQtQ5ZQxv302jR7nnuVGZzpmj041/D5lg17h8dGpwCp0EN4YTaQkHpR2LleFpPRbgVqwV/vwLNs9R3g9SxCTDWIePJnYtTzwRv6XOQ0x6WxwGV5h8TuBw73QMl7DppU+R/65bo0ZtjqJPCAVcIwc5sL2m+sDLGI9XkbxrITzRSisbDfppPj/k8ytw3qgYvFQ5avLHomKZ9VkG1q68lG8U/0bxbxT/RvFvFP9/o/gPL2H1FHv6QO0ll9T6o4QOQZwD0IdQd1yKnPEMQyUPtxkdFNTs/h+qwNDzYIweS5Ke1VGkMfL4ZaWrNmTCxBSY0tFwNJXk6qsXmd3YizNKO7bSPlDdaxn588uMLHmONzGvMDoLhEsw4fXg//KcQLwGc4e0CSpDVxPXMK42LKjBIPSmuUBndawzhEQ9yCtZRYQKrtBIJUmlbdDGqRAns7S9+9pgU7zdBwJMCucqezKbwQMvKwlTLGIzXonZ3XFCF2wLGVrqNmEFjv9zS+ywvOnPXZM5EXEr0WIm/c29PhAEcBOgxB9/NJf6R6rZqaK3CYachAkQ3B2fAVhczn7baG+OQuvwe3AM+fiqexX4FM3qmrLHNmqH6xasbY7i40Z0VivUdEHdyLD5qRe17U4nV3c5+63BoH/o7TNoGzqSj61AJ9cr5t3goIZHRPtVO4726nQcaCvzvC3E8/2620ZQu9+gci6bcQyVQQWMhaxnyiNlqtN7WJ26uViUCDUdvlArHWKvzo6LtfTsDJPRaLTaUCgdHPyiIHK1IbZynfkSEzfms448MKJkysLzVjeG69G1rlmyDGsujaa0vnnX5BiGVuHTkGICBY5s8Z7evCgjI5b5dD49DrUWExg91AvbRx6z9i4ULfG85NWvzlQHD25WSS76/X+kkGVT16kvKYhccGi7TbmFz0budjQcnwUpLHJheSopmlZc2v2XwT7Id02z+p794HvhKPbAQL1nSyycnqQCo91xIwheYDG0BjjZRbjjsrOI7mhBmru1Bzy+mzQrTvHqWbnvyt70yPny7+sFpXb9Zlnng+H3xCL4H3FiQgdvBU4NY9tEcrX2fE2yUSf9/Qvfnpfu +sidebar_class_name: "post api-method" +info_path: docs/API/Iglu Controller/iglu-controller-api +custom_edit_url: null +hide_send_button: true +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Create a new Builder using the REST API. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/API/Iglu Controller/get-info-about-all-builders-for-a-cache.api.mdx b/docs/API/Iglu Controller/get-info-about-all-builders-for-a-cache.api.mdx new file mode 100644 index 00000000..ecdaf05c --- /dev/null +++ b/docs/API/Iglu Controller/get-info-about-all-builders-for-a-cache.api.mdx @@ -0,0 +1,72 @@ +--- +id: get-info-about-all-builders-for-a-cache +title: "Get Info about all Builders for a Cache" +description: "Returns all Builders for a given CacheID" +sidebar_label: "Get Info about all Builders for a Cache" +hide_title: true +hide_table_of_contents: true +api: eJy9V1Fv2zgM/iuCnzaga7rbdg/F4YBu3Q3BXoZu9xQUhWwztlpZ8igpbRDkvx8p24mTytdeD9hTU4siP1LkR3KTleAKVK1X1mTn2RX4gMYJqbX4GJQuAZ1YWhRSVGoFRnySRQ3zy+wkayXKBjwJZOeLTWboH1JQ7M4V6/sZANf0D8LPoBDK7NxjgJMjqz9q6BSL+aXwtfRibYO4l8YLb0XUcUpKHEk0MjvfZH7dsjFlPFSAdEQQG+m7T7+/z7bba7bpWmscOL7x29kZ/zm0eyHos5g7gdFtKIVakn0QF8HXZN+JwiJC4YU0JYVA5F1IxL2icxbsgkKoWXhpgykJTGEJl/FsT7atVoVke7Nbx0Y3j92QiJKDpDw0bvTd5rdkm0ONtgX0qnOlB/G0oCpHMiY0OV3anvQvtTtwHpWp+OAgOIlzMDLXMFaaW6tBGj4kqao6QLW/WOCExnvIa2vvAurE8XacNgv2psd+iHSPaw/iQDOlgldeR7x96Eh1pfzTEURorVPeUg6n4OcoTVEnj0h9cICTsabzO0hr7Z12kpIwHWtjC20NpA63e2fZQwbJPtsYq2ckFyU8uGTaNPLh1ubpszuA9qay7EASMDx4lBIrl3TYhdwR6NBxyUvLIp1EpF1Vhn5+hfVzlO+SbxTIEb4YYGY+rUHHyLqEx8f8dglLZcCJeyDOQEF0amykNuclemHgvmMWkqiVBmIbYXXZfROK2RhBlmuBwZihpGzTECmly+Yg3Yen50vEserh6VC2wU1kHuGtwCfjLFt1mNETyg+F9jmUZKuRM73+/Ys+y9oEB7aoVtLD14kSbENOtJ0+HSfGHshQaIA3KvUqQx0G3wZfqjRPPhWC/v36l4QXe0/MUIf8X/lJuS4GEwQ0dY1sN8q5qQ7SIiyBOmpJ6Uu/oyDNELVNhyygmlCjLCqfziOKAHWD5n8wSU3Fdkhlz+2R2+3xcwFf0pIEgnnasrYpq8cVDXgVDqm+zD8Ona2D8D497tBn8RmRCEg9Hnq6WaYf4FhAmZXUqhz46qXjzYSvwDgmYhg9eJf24N20B9w5wfk4jDHizqBeC26lBJmhwq9z4UP6ET6kH4FD7yD68R1wRX0CTEEh567I4zcYQFUMN00UXIInRjCVsF0A+vRwv8hFngr66s24LXBr5Jklmw2DFpF19KXbEWKLzmrvW3c+m8GDbFoNp8QFMyL32eptxmO7gyJ0xb1g6Oom8vzienz2ndF3AHcSO4isf9gWYs2AxAil+/HXsCr0rhw36wsjLr7NBZH/Lsrxhuiuiz9oN8E33t6B+TMWoTJLG833xTivdBCfKPxoaUpA1vbIyI+a68tF9aUtQkNPFR9oeMmEklMR96T9N7rf8vzQX1nEO9/Q8kNevxrC3JF9jLIigTeufs3LFD9Kh+Xs9Oz0bWRO6zwNFexLv819AS/m5J6QOXWu1FYY17Zj9zb77PsvG2X/fp6mxVmrpTJdD4hjXZdYi90ET8lQE1z+tNnkVDh/o95u+XO3cnLylMr1C8tSane8dY5BvrrqF43X4pm7aBJrzMPRCkz0GVgq5vVKomI4MZdPYpPhdWnRT0TZRVFA60e3HpUta9nV25fPPyj7/gFhUnLy +sidebar_class_name: "get api-method" +info_path: docs/API/Iglu Controller/iglu-controller-api +custom_edit_url: null +hide_send_button: true +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Returns all Builders for a given CacheID + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/API/Iglu Controller/iglu-controller-api.info.mdx b/docs/API/Iglu Controller/iglu-controller-api.info.mdx new file mode 100644 index 00000000..7eb55e0a --- /dev/null +++ b/docs/API/Iglu Controller/iglu-controller-api.info.mdx @@ -0,0 +1,35 @@ +--- +id: iglu-controller-api +title: "Iglu Controller API" +description: "This is the documentation of the Iglu Controller API. The Controller is part of the [Iglu Project](https://github.com/iglu-sh)." +sidebar_label: Introduction +sidebar_position: 0 +hide_title: true +custom_edit_url: null +--- + +import ApiLogo from "@theme/ApiLogo"; +import Heading from "@theme/Heading"; +import SchemaTabs from "@theme/SchemaTabs"; +import TabItem from "@theme/TabItem"; +import Export from "@theme/ApiExplorer/Export"; + + + + + + + + + +This is the documentation of the Iglu Controller API. The Controller is part of the [Iglu Project](https://github.com/iglu-sh). + + + \ No newline at end of file diff --git a/docs/API/Iglu Controller/returns-user-information-for-an-api-token.api.mdx b/docs/API/Iglu Controller/returns-user-information-for-an-api-token.api.mdx new file mode 100644 index 00000000..49cab2c2 --- /dev/null +++ b/docs/API/Iglu Controller/returns-user-information-for-an-api-token.api.mdx @@ -0,0 +1,64 @@ +--- +id: returns-user-information-for-an-api-token +title: "returns user information for an API Token" +description: "Get user information about a given API Token" +sidebar_label: "returns user information for an API Token" +hide_title: true +hide_table_of_contents: true +api: eJy9Vk1PGzEQ/SuWT60UklC1F1RViigF1Atq6Qmhyrs7yRp27a09DqQR/70z4wQSsmmFhIoCbOz5eJ73PLNLXUEsg+3QeqeP9CmgShGCsm7qQ2t4WZnCJ1RGzewcnJpcnKtLfwtOD3SEMgWLC310tdSmsz9vgZ+vH64HOkDsvIsQ9dFSvxuP+d92sm+AKTiolJ1SdEl7Z6Ka+uQqCl56h+CQ/UzXNbYUNKObyM5LHcsaWsNPuOiAwvniBkokxy74DgLanLo0ZBg37EwIZkFmFqGN//a31YaNS20BQT8M9MxinQoG7UwLGyYRg3UzNrGxSwXh3tgsvG/AON7d60a5Wxujzcfc3Q4whRCgKn1Lz2LYAta+6jUnfvaEsT5T13M4qkDRbFfnhVWrwVScqS/1lgp29vlnoNFiw6vCnuYVB3cQ8djEGqoz/vv6nHYG617EGUWfS+oqg0C//X4VBLo0oX9zahuo6ST7d6P93a+RUkQArtyqwsZ+tP21LyP68Jessh3TdGrv+2VjAu5J+STHPlafKJXkWyTzLfps0OjM/fvx4W6zmChaVmckK+5OUYWN5oE1qEnCWtqHdaWn61HiQDmPioif24rsfBC7AkygCMgdTOzZOnXE4eu1HLqevo/zlbY/9DXDiaJldcKeW8e7qwknA/8OgZSkiHPqjwghKuMWZBoTDP8TdMK+7jR6BuIsN0aPmEGZB4wxyjhIoWGyEbt4NBrBvWm7BoakkhENitH8UPOQWA+Q7wwvI3gcI48YOAYHFxtuokIhreSHLzKonrAOnlc2z6yvQNXKpcyjbS2FjwufwoEI4pMIlWefpF/J83zWJHVM9Q2+aciBou0kuayJNPpw+MqXqSUu8vT0WZ89QYbqkjY21sif79fa5Up8LoJnpq7frEuZJ49U0pLBQazfsgC48BnLeDgeHspl9RFbI/znaaOzrOLujKcn0tPWcH/Wph8F9tKXhBWLCPc46hpjXR5LDQfN+rmSDqBJDzUh5u/LZWEi/AjNwwMv/0oQ5MWCjmmCNQXzQq8ZA5kz3F9JcCIaPSlL6Fiac9MkGQ3PbwPr7lHGpyeXZGvSVuN/JjCJvh40brERm2CKhRyVoA5WIERMlIiuzB8neUBo +sidebar_class_name: "get api-method" +info_path: docs/API/Iglu Controller/iglu-controller-api +custom_edit_url: null +hide_send_button: true +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get user information about a given API Token + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/API/Iglu Controller/sidebar.ts b/docs/API/Iglu Controller/sidebar.ts new file mode 100644 index 00000000..cf9b3a21 --- /dev/null +++ b/docs/API/Iglu Controller/sidebar.ts @@ -0,0 +1,24 @@ +import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; + +const sidebar: SidebarsConfig = { + apisidebar: [ + { + type: "doc", + id: "API/Iglu Controller/iglu-controller-api", + }, + { + type: "category", + label: "UNTAGGED", + items: [ + { + type: "doc", + id: "API/Iglu Controller/build", + label: "This route returns user information based on the provided token in the Auhtorization header", + className: "api-method get", + }, + ], + }, + ], +}; + +export default sidebar.apisidebar; diff --git a/docs/Components/Controller/Builder/builder-creation.mdx b/docs/Components/Controller/Builder/builder-creation.mdx new file mode 100644 index 00000000..0d5c76d4 --- /dev/null +++ b/docs/Components/Controller/Builder/builder-creation.mdx @@ -0,0 +1,16 @@ +--- +id: builder-controller-relation +title: "Builder Controller Relation" +description: "This is how the Iglu Controller communicates with Builders." +--- + +## How are builders started? +Builders (or rather the containers) are not started directly by the Iglu Controller, but rather a Scheduler Server. This Scheduler server runs in the background and starts the containers when a new build is requested / according to a cron schedule. +The Scheduler Server is automatically setup when you spin up the Iglu Controller, so you don't have to worry about it. +The Files for this Scheduler are located unter `lib/scheduler` in the Iglu Controller repository. +## How does the Iglu Controller communicate with Builders / The Scheduler? +All of these compontens communicate via this schema: +![Iglu Controller Scheduler Communication](/img/docs/Controller/Builder/iglu-controller_scheduler_builder_relation.png) +## How can I add a new Builder? +Well first you can create one via the Iglu Controller UI in the "Builders" section. +You can also create a new Builder via the Rest API of the Iglu Controller. This API is documented here: [Iglu Controller API](/docs/API/Iglu%20Controller/create-a-new-builder) \ No newline at end of file diff --git a/docs/Components/Controller/intro.md b/docs/Components/Controller/intro.md new file mode 100644 index 00000000..0e8521fa --- /dev/null +++ b/docs/Components/Controller/intro.md @@ -0,0 +1 @@ +TBA \ No newline at end of file diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 4928264f..01f73d8d 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -86,6 +86,15 @@ const config: Config = { }, hideSendButton: true, } satisfies OpenApiPlugin.Options, + controller: { + specPath: "static/api/controller.yml", + outputDir: "docs/API/Iglu Controller", + sidebarOptions: { + groupPathsBy: "tag", + categoryLinkSource: "tag", + }, + hideSendButton: true, + } satisfies OpenApiPlugin.Options, } }, ] diff --git a/static/api/controller.yml b/static/api/controller.yml new file mode 100644 index 00000000..dca2585d --- /dev/null +++ b/static/api/controller.yml @@ -0,0 +1,459 @@ +openapi: 3.0.4 +info: + title: Iglu Controller API + description: |- + This is the documentation of the Iglu Controller API. The Controller is part of the [Iglu Project](https://github.com/iglu-sh). + version: 0.0.1 +externalDocs: + description: Read more on the official Iglu Docs + url: https://docs.iglu.sh/ +servers: + - url: https://example.com/api/v1 +paths: + /user: + get: + summary: returns user information for an API Token + description: |- + Get user information about a given API Token + security: + - api_key: [] + responses: + '200': + description: "Returned if a user was found" + content: + "application/json": + schema: + $ref: '#/components/schemas/userData' + '401': + description: 'A 401 Header is returned if the Auth was incorrect, not provided or the bearer token was corrupted' + content: + "application/json": + schema: + type: object + properties: + error: + type: string + '500': + description: "A 500 Error is returned when the Server encounters any issue." + content: + "application/json": + schema: + type: object + properties: + error: + type: string + /builder: + get: + summary: Get Info about all Builders for a Cache + description: |- + Returns all Builders for a given CacheID + parameters: + - name: cacheID + in: query + required: true + description: 'The Cache ID that you want to query.' + schema: + type: integer + format: int64 + responses: + '200': + description: 'A 200 Is returned if the Auth was correct and a builder with the given ID was found' + content: + "application/json": + schema: + type: array + items: + $ref: '#/components/schemas/dbBuilder' + '400': + description: 'A 400 Error is returned if the given cacheID is invalid or not found' + content: + "application/json": + schema: + type: object + properties: + error: + type: string + '403': + description: 'A 403 Error is returned if the request was not properly authenticated' + content: + "application/json": + schema: + type: object + properties: + error: + type: string + '500': + description: 'A 500 Error is returned in case the Server encounters a generic Error in the fetching of the builders' + content: + "application/json": + schema: + type: object + properties: + error: + type: string + post: + summary: 'Create a new Builder' + description: |- + Create a new Builder using the REST API. + parameters: + - name: cacheID + in: query + required: true + description: 'The Cache ID that you want to create the builder in.' + schema: + type: integer + format: int64 + requestBody: + description: Create a new Builder + content: + application/json: + schema: + $ref: '#/components/schemas/builderCreationRequest' + responses: + '200': + description: 'Returned if the request was successfull' + content: + application/json: + schema: + $ref: '#/components/schemas/builderCreationRequest' + '401': + description: 'Returned if the request was invalid, i.e no body or the cacheID is invalid or not found' + content: + application/json: + schema: + $ref: '#/components/schemas/error' + '403': + description: 'Returned if the request was made aunauthenticated' + content: + application/json: + schema: + $ref: '#/components/schemas/error' + '400': + description: 'Returned if the request body was malformed or is deemed invalid according to the schema' + content: + application/json: + schema: + $ref: '#/components/schemas/error' + '500': + description: 'Returned if the Server encounters any errors during the creation process' + content: + application/json: + schema: + $ref: '#/components/schemas/error' + + + + + +security: + - api_key: [] + +components: + securitySchemes: + api_key: + type: http + scheme: bearer + bearerFormat: string + description: 'An API Key in the format bearer ' + schemas: + error: + type: object + properties: + error: + type: string + + hash: + type: object + properties: + id: + type: number + path: + type: string + cache: + type: number + updatedat: + type: string + cderiver: + type: string + cfilehash: + type: string + cfilesize: + type: string + creferences: + type: string + csig: + type: string + cstorehash: + type: string + cstoresuffix: + type: string + parts: + type: string + compression: + type: string + + cache: + type: object + properties: + id: + type: number + githubusername: + type: string + ispublic: + type: boolean + name: + type: string + permission: + type: string + preferredcompressionmethod: + type: string + uri: + type: string + priority: + type: number + problems: + type: array + items: + type: object + properties: + heading: + type: string + description: + type: string + + builder: + type: object + properties: + id: + type: number + name: + type: string + description: + type: string + enabled: + type: boolean + trigger: + type: string + cron: + type: string + webhookurl: + type: string + required: ['id', 'name', 'description', 'enabled', 'trigger', 'webhookurl'] + git: + type: object + properties: + repository: + type: string + branch: + type: string + gitusername: + type: string + gitkey: + type: string + requiresauth: + type: boolean + noclone: + type: boolean + + buildoptions: + type: object + properties: + cores: + type: number + maxjobs: + type: number + keep_going: + type: boolean + extraargs: + type: string + substituters: + type: array + items: + $ref : '#/components/schemas/substituter' + parallelbuilds: + type: boolean + description: 'Defines wether or not to start new builds while an old build is already running' + command: + type: string + + cachix: + type: object + properties: + push: + type: boolean + target: + type: string + apikey: + $ref : '#/components/schemas/apikey' + signingkey: + $ref: "#/components/schemas/signingkey" + builder_id: + type: string + buildoutputdir: + type: string + id: + type: number + + builderRun: + type: object + properties: + log: + type: string + + builderDatabase: + type: + object + properties: + builder: + $ref: '#/components/schemas/builder' + git: + $ref: '#/components/schemas/git' + buildoptions: + $ref: '#/components/schemas/buildoptions' + cachix: + $ref: '#/components/schemas/cachix' + cache: + $ref: '#/components/schemas/cache' + dbBuilder: + type: + object + properties: + builder: + $ref: '#/components/schemas/builder' + git: + $ref: '#/components/schemas/git' + buildoptions: + $ref: '#/components/schemas/buildoptions' + cachix: + $ref: '#/components/schemas/cachix' + cache: + $ref: '#/components/schemas/cache' + lastrun: + $ref: '#/components/schemas/builderRun' + + signingkey: + type: object + properties: + id: + type: number + privateKey: + type: string + publicKey: + type: string + + apikey: + type: object + properties: + key: + type: number + id: + type: number + + substituter: + type: object + properties: + url: + type: string + signingKeys: + type: array + items: + type: string + + userData: + type: object + properties: + caches: + type: array + items: + $ref: '#/components/schemas/cache' + newestCashedHashes: + type: array + items: + $ref: '#/components/schemas/hash' + builderCreationRequest: + type: object + required: + - name + - description + - git + - build + - cachix + properties: + name: + type: string + description: + type: string + git: + type: object + required: + - noClone + - url + - branch + - requiresAuth + - username + - token + properties: + noClone: + type: boolean + url: + type: string + branch: + type: string + requiresAuth: + type: boolean + username: + type: string + token: + type: string + build: + type: object + required: + - command + - buildTrigger + - outputDir + - allowUnfree + - parallelBuilds + - sandboxed + - maxJobs + - cores + - substituters + properties: + command: + type: string + buildTrigger: + type: string + enum: [manual, webhook, cron] + cron: + type: string + description: Required if buildTrigger is "cron" + outputDir: + type: string + allowUnfree: + type: boolean + parallelBuilds: + type: boolean + sandboxed: + type: boolean + maxJobs: + type: integer + cores: + type: integer + substituters: + type: array + items: + $ref: '#/components/schemas/substituter' + cachix: + type: object + required: + - mode + - push + properties: + mode: + type: string + enum: [manual, auto] + cachixPublicSigningKey: + type: string + cachixSigningKey: + type: string + push: + type: boolean \ No newline at end of file diff --git a/static/img/docs/Controller/Builder/iglu-controller_scheduler_builder_relation.png b/static/img/docs/Controller/Builder/iglu-controller_scheduler_builder_relation.png new file mode 100644 index 00000000..3f2506f3 Binary files /dev/null and b/static/img/docs/Controller/Builder/iglu-controller_scheduler_builder_relation.png differ