- // Code generated by ../../scripts/generate-const.sh DO NOT EDIT.
- package main
-
- //go:generate ../../scripts/generate-const.sh openAPISpecTemplate ../../api/openapi-spec/blubberoid.yaml
- const openAPISpecTemplate = `---
- openapi: '3.0.0'
- info:
- title: Blubberoid
- description: >
- Blubber is a highly opinionated abstraction for container build
- configurations.
- version: {{ .Version }}
- paths:
- /v1/{variant}:
- post:
- summary: >
- Generates a valid Dockerfile based on Blubber YAML configuration
- provided in the request body and the given variant name.
- requestBody:
- description: A valid Blubber configuration.
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/v4.Config'
- application/yaml:
- schema:
- type: string
- application/x-yaml:
- schema:
- type: string
- responses:
- '200':
- description: OK. Response body should be a valid Dockerfile.
- content:
- text/plain:
- schema:
- type: string
- '400':
- description: Bad request. The YAML request body failed to parse.
- '404':
- description: No variant name was provided in the request path.
- '422':
- description: Provided Blubber config parsed correctly but failed validation.
- '5XX':
- description: An unexpected service-side error.
-
- x-amples:
- - title: Mathoid test variant
- request:
- params:
- variant: test
- headers:
- Content-Type: application/json
- body: {
- "version": "v4",
- "base": "docker-registry.wikimedia.org/nodejs-slim",
- "apt": { "packages": ["librsvg2-2"] },
- "lives": { "in": "/srv/service" },
- "variants": {
- "build": {
- "base": "docker-registry.wikimedia.org/nodejs-devel",
- "apt": {
- "packages": ["librsvg2-dev", "git", "pkg-config", "build-essential"]
- },
- "node": { "requirements": ["package.json"] },
- "runs": { "environment": { "LINK": "g++" } }
- },
- "test": { "includes": ["build"], "entrypoint": ["npm", "test"] }
- }
- }
- response:
- status: 200
- headers:
- content-type: text/plain
- body: /^FROM docker-registry.wikimedia.org\/nodejs-devel/
-
- components:
- schemas:
- v4.Config:
- title: Top-level blubber configuration (version v4)
- allOf:
- - $ref: '#/components/schemas/v4.CommonConfig'
- - type: object
- properties:
- required: [version, variants]
- version:
- type: string
- description: Blubber configuration version
- variants:
- type: object
- description: Configuration variants (e.g. development, test, production)
- additionalProperties: true
- # OpenAPI 3.0 supports only v4 of the JSON Schema draft spec and
- # cannot define schema for object properties with arbitrary
- # names, but the following commented section is included to be
- # useful to humans for the time being. It patiently awaits v6
- # json schema draft support before its uncommenting.
- #
- # patternProperties:
- # "^[a-zA-Z][a-zA-Z0-9\-\.]+[a-zA-Z0-9]$":
- # $ref: '#/components/schemas/v4.VariantConfig'
-
- v4.CommonConfig:
- type: object
- properties:
- base:
- type: string
- description: Base image reference
- apt:
- type: object
- properties:
- packages:
- type: array
- description: Packages to install from APT sources of base image
- items:
- type: string
- node:
- type: object
- properties:
- env:
- type: string
- description: Node environment (e.g. production, etc.)
- requirements:
- type: array
- description: Files needed for Node package installation (e.g. package.json, package-lock.json)
- items:
- type: string
- python:
- type: object
- properties:
- version:
- type: string
- description: Python binary present in the system (e.g. python3)
- requirements:
- type: array
- description: Files needed for Python package installation (e.g. requirements.txt, etc.)
- items:
- type: string
- builder:
- type: object
- properties:
- command:
- type: array
- description: Command and arguments of an arbitrary build command
- items:
- type: string
- requirements:
- type: array
- description: Files needed by the build command (e.g. Makefile, ./src/, etc.)
- items:
- type: string
- lives:
- type: object
- properties:
- as:
- type: string
- description: Owner (name) of application files within the container
- uid:
- type: integer
- description: Owner (UID) of application files within the container
- gid:
- type: integer
- description: Group owner (GID) of application files within the container
- in:
- type: string
- description: Application working directory within the container
- runs:
- type: object
- properties:
- as:
- type: string
- description: Runtime process owner (name) of application entrypoint
- uid:
- type: integer
- description: Runtime process owner (UID) of application entrypoint
- gid:
- type: integer
- description: Runtime process group (GID) of application entrypoint
- environment:
- type: object
- description: Environment variables and values to be set before entrypoint execution
- additionalProperties: true
- insecurely:
- type: boolean
- description: Skip dropping of priviledge to the runtime process owner before entrypoint execution
- entrypoint:
- type: array
- description: Runtime entry point command and arguments
- items:
- type: string
- v4.VariantConfig:
- allOf:
- - $ref: '#/components/schemas/v4.CommonConfig'
- - type: object
- properties:
- includes:
- type: array
- description: Names of other variants to inherit configuration from
- items:
- description: Variant name
- type: string
- copies:
- type: string
- description: Name of variant from which to copy application files, resulting in a multi-stage build
- artifacts:
- type: array
- items:
- type: object
- description: Artifacts to copy from another variant, resulting in a multi-stage build
- required: [from, source, destination]
- properties:
- from:
- type: string
- description: Variant name
- source:
- type: string
- description: Path of files/directories to copy
- destination:
- type: string
- description: Destination path
- `
|