The Job Manifest File Schema¶
To deploy a Job, the Developer should provide a build recipe called a Manifest, describing how to build, run, and deploy.
The Manifest should be kept in job.yaml
file located in the root of a Job's
repository. Some fields are required, while optional ones will be assigned a
default value if not provided. The YAML manifest file can have the following
fields:
name
, string (required) - name of the current service to be deployed by means of this mainfest file. It cannot contain underscores (but can contain dashes).jobtype
, string (required) - Jobtype wrapper used to embed model. This should be one of the supported wrapper names combined with the wrapper version:python3:2.4.0
,python3:latest
,golang:latest
ordocker-http:latest
, etc.git
, object (required) - the object describes the place where the source code can be found using git VCS.remote
, string (required) - HTTPS URL of git remote. This is also root of your git repo, which will become the "current working directory" at runtime of Job. SSH remote URLs are NOT supported.branch
, string - name of the branch (if other than master)directory
, string - subdirectory relative to git repo root where the project is
owner_email
, string (required) - email address of the Job's owner to reach outextends
, string - relative path to base manifest file, which will be extended by this manifestversion
, string - Version of the Job. It must adhere to Semantic Versioning standard.jobtype_extra
, object - Jobtype specific extra parameters- Fields specified and validated by the jobtype.
build_env
, object: string to string - dictionary of environment variables that should be set when building the imageimage_type
, string - type of deployed image. Onlydocker
is currently available.infrastructure_target
, string - Back-end platform where to deploy the service.labels
, object: string to string - dictionary with metadata describing job for humanspublic_endpoints
, array of strings - list of public job endpoints that can be accessed without authenticationreplicas
, integer - number of running instances of the Job to deployresources
, object - resources demands to allocate to the Jobmemory_min
, string - minimum memory amount in bytes, eg. 256Mimemory_max
, string - maximum memory amount in bytes, eg. 1Gicpu_min
, string - minimum CPU consumption in cores, eg. 10mcpu_max
, string - maximum CPU consumption in cores, eg. 1000m
runtime_env
, object: string to string - dictionary of environment variables that should be set when running Jobsecret_build_env_file
, string - path to a secret file (on a client machine) with build environment variablessecret_runtime_env_file
, string - path to a secret file (on a client machine) with runtime environment variablessystem_dependencies
, array of strings - list of system-wide packages that should be installed with package manager (apt or apk depending on base image type)
Example¶
This example is not valid as a whole, but it contains all fields with exemplary values:
name: skynet
jobtype: python3:latest
git:
remote: https://github.com/racetrack/supersmart-model
branch: master
directory: 'examples/skynet'
owner_email: arnold@skynet.com
extends: './base/job.yaml'
version: '1.2.3-alpha'
jobtype_extra:
requirements_path: 'python/requirements.txt'
entrypoint_path: 'python/entrypoint.py'
entrypoint_class: 'JobClazz'
build_env:
DEBIAN_FRONTEND: 'noninteractive'
image_type: docker
infrastructure_target: kubernetes
labels:
model: linear-regression
public_endpoints:
- '/api/v1/perform'
- '/api/v1/webview'
replicas: 1
resources:
memory_min: 256Mi
memory_max: 1Gi
cpu_min: 10m
cpu_max: 1000m
runtime_env:
DJANGO_DEBUG: 'true'
TORCH_MODEL_ZOO: zoo
secret_build_env_file: '.secrets/build.env'
secret_runtime_env_file: .secrets/runtime.env'
system_dependencies:
- 'libgomp1'