Skip to content

Instantly share code, notes, and snippets.

@iloveitaly
Created September 27, 2025 10:46
Show Gist options
  • Save iloveitaly/e05f391559a3e4f7f2b367a34dbc0449 to your computer and use it in GitHub Desktop.
Save iloveitaly/e05f391559a3e4f7f2b367a34dbc0449 to your computer and use it in GitHub Desktop.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"provider": {
"type": "string",
"description": "The provider to use"
},
"buildAptPackages": {
"items": {
"type": "string"
},
"type": "array",
"description": "List of apt packages to install during the build step"
},
"steps": {
"additionalProperties": {
"properties": {
"inputs": {
"items": {
"oneOf": [
{
"properties": {
"step": {
"type": "string",
"description": "The step to use as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"step"
]
},
{
"properties": {
"image": {
"type": "string",
"description": "The image to use as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"image"
]
},
{
"properties": {
"local": {
"type": "boolean",
"description": "Whether to use local files as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"local"
]
},
{
"type": "string",
"enum": [
".",
"..."
],
"description": "Strings will be parsed and interpreted as an input. Valid formats are: '.', '...', or '$step'"
}
]
},
"type": "array",
"description": "The inputs for this step"
},
"commands": {
"items": {
"oneOf": [
{
"type": "string",
"description": "Strings will be parsed and interpreted as a command to run"
},
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cmd": {
"type": "string",
"description": "The shell command to execute (e.g. 'go build' or 'npm install')"
},
"customName": {
"type": "string",
"description": "Optional custom name to display for this command in build output"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"cmd"
]
},
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"path": {
"type": "string",
"description": "Directory path to add to the global PATH environment variable. This path will be available to all subsequent commands in the build"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"path"
]
},
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"image": {
"type": "string",
"description": "Optional source image to copy from. This can be any public image URL"
},
"src": {
"type": "string",
"description": "Source path to copy from. Can be a file or directory"
},
"dest": {
"type": "string",
"description": "Destination path to copy to. Will be created if it doesn't exist"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"src",
"dest"
]
},
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"path": {
"type": "string",
"description": "Directory path where the file should be created"
},
"name": {
"type": "string",
"description": "Name of the file to create"
},
"mode": {
"type": "integer",
"description": "Optional Unix file permissions mode (e.g. 0644 for regular file)"
},
"customName": {
"type": "string",
"description": "Optional custom name to display for this file operation"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"path",
"name"
]
}
]
},
"type": "array",
"description": "The commands to run in this step"
},
"secrets": {
"items": {
"type": "string"
},
"type": "array",
"description": "The secrets that this step uses"
},
"assets": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"description": "The assets available to this step. The key is the name of the asset that is referenced in a file command"
},
"variables": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"description": "The variables available to this step. The key is the name of the variable that is referenced in a variable command"
},
"caches": {
"items": {
"type": "string"
},
"type": "array",
"description": "The caches available to all commands in this step. Each cache must refer to a cache at the top level of the plan"
},
"deployOutputs": {
"items": {
"properties": {
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"additionalProperties": false,
"type": "object"
},
"type": "array",
"description": "Parts of this step that should be included in the final image. If empty"
}
},
"additionalProperties": false,
"type": "object"
},
"type": "object",
"description": "Map of step names to step definitions"
},
"deploy": {
"properties": {
"aptPackages": {
"items": {
"type": "string"
},
"type": "array",
"description": "List of apt packages to include at runtime"
},
"base": {
"oneOf": [
{
"properties": {
"step": {
"type": "string",
"description": "The step to use as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"step"
]
},
{
"properties": {
"image": {
"type": "string",
"description": "The image to use as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"image"
]
},
{
"properties": {
"local": {
"type": "boolean",
"description": "Whether to use local files as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"local"
]
},
{
"type": "string",
"enum": [
".",
"..."
],
"description": "Strings will be parsed and interpreted as an input. Valid formats are: '.', '...', or '$step'"
}
],
"description": "The base image to use for the deploy step"
},
"inputs": {
"items": {
"oneOf": [
{
"properties": {
"step": {
"type": "string",
"description": "The step to use as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"step"
]
},
{
"properties": {
"image": {
"type": "string",
"description": "The image to use as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"image"
]
},
{
"properties": {
"local": {
"type": "boolean",
"description": "Whether to use local files as input"
},
"include": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to include"
},
"exclude": {
"items": {
"type": "string"
},
"type": "array",
"description": "Files or directories to exclude"
}
},
"type": "object",
"required": [
"local"
]
},
{
"type": "string",
"enum": [
".",
"..."
],
"description": "Strings will be parsed and interpreted as an input. Valid formats are: '.', '...', or '$step'"
}
]
},
"type": "array",
"description": "The inputs for the deploy step"
},
"startCommand": {
"type": "string",
"description": "The command to run in the container"
},
"variables": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"description": "The variables available to this step. The key is the name of the variable that is referenced in a variable command"
},
"paths": {
"items": {
"type": "string"
},
"type": "array",
"description": "The paths to prepend to the $PATH environment variable"
}
},
"additionalProperties": false,
"type": "object",
"description": "Deploy configuration"
},
"packages": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"description": "Map of package name to package version"
},
"caches": {
"additionalProperties": {
"properties": {
"directory": {
"type": "string",
"description": "The directory to cache"
},
"type": {
"type": "string",
"enum": [
"shared",
"locked"
],
"description": "The type of cache (either 'shared' or 'locked')",
"default": "shared"
}
},
"additionalProperties": false,
"type": "object"
},
"type": "object",
"description": "Map of cache name to cache definitions. The cache key can be referenced in an exec command"
},
"secrets": {
"items": {
"type": "string"
},
"type": "array",
"description": "Secrets that should be made available to commands that have useSecrets set to true"
},
"$schema": {
"type": "string",
"description": "The schema for this config"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"provider"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment