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:
+
+## 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