Do you like Lambda, the concept of disposable functions? Well this is surely the solution for you! Do you find OpenFaaS overly complicated for a basic setup? Me too! Are you a fan of basic docker-compose setup scripts? Ai Ai!
The objective of this project is to provide nothing more than a basic interface to create lambda-like functions. These functions can be triggered by a HTTP gateway, MQTT events, or cron schedules!
- Jobber: This application/service
- Job: An individual job, containing multiple versions, runners, actions, triggers and environment variables.
- Action: Describes how a job should run, timeouts, parallelism, run-duration, etc.
- Trigger: Describes how a job should start. MQTT, HTTP, or a Schedule.
- Environment: Describes environment variables for a job.
- Runners: Describes a action that is currently running.
- Runner Manager: Describes the component that controls the connections between runners, actions and triggers.
- Gateway: Describes the http server we utilise for forwarding traffic to jobs and runners.
Click Here to see some demo pictures of the application in action!
Click Here For more detailed explanation of metrics!
Click Here For more extensive list of environment variable configuration!
DATABASE_URLPostgres connection URL. Example:postgresql://user:pass@host/dbJOBBER_NAMEThe name of your jobber instance, should be unique per host.MANAGER_PORTPort that runner-manager server operates on. Default: 5211MANAGER_HOSTHost that runner-manager server operates on. Default: hostname()STARTUP_USERNAMEThe administrator account username. Created at every startup. Has full permissions. If you change this after a previous start, it will create a NEW account, not update the previous account.STARTUP_PASSWORDThe administrator account password.
See docker-compose.yaml for a sample setup. Networking is configured securely, volumes are created, and all essential details are provided there.
For security reasons, this application hides behind two separate ports. One is for the administrative panel, and the other is for the HTTP API Gateway for function invocations.
Port 3000: Administrative panel. Port 3001: HTTP Gateway (Router for HTTP triggers)
It is highly suggested to use loki as your log driver if you have a decent amount of log-spam, especially high bandwidth logging. This will defer a lot of load from the database.
Documentation for this will be finalised in the future, though don't hold me to that. We will be providing a jobber-template repository which includes everything you need to create your first TypeScript job. In the meantime, feel free to reference the examples we have provided in the /Examples Directory. We have an example for http-typescript and a schedule-javascript application.
For further details on the API, please refer to the bruno scripts.
Fetches list of jobs
Fetches a specific job
Fetches a job environment
Creates a new environment variable. Body should be multi-part form with the following properties:
type = secret|text
value = {variable value}
Deletes new environment variable.
Fetches job actions
Fetches actions for the latest version
Fetches job triggers
Fetches triggers for the latest version
Fetches logs associated with a job
Fetches all the current runners associated with a job
Fetches all the current runners associated with an actionId
Deletes a job
Publishes a archive (zip) file to jobber. Jobber automatically extracts metadata from the package.json file. If a job does not currently exist, one will be created. This is ideal for CI/CD.
The body should be a multi-part form, with the file attached to the name archive.
See Bruno for further information.
- Jobber requires access to a docker daemon, be it docker-in-docker, or the hosts docker daemon. We suggest defaulting to the hosts docker daemon, as its the only tested method. Managing the networking of DIND will be very difficult.