Skip to content

reoclo.yml reference

A reoclo.yml file sets the build, deploy, and CI behavior for one application. Reoclo reads the file from your repository, instead of only the dashboard.

Reoclo reads the file from one of two locations.

  • <base_directory>/reoclo.yml, in the application’s base directory. This file needs no app: key. Its location already identifies the application.
  • ci/reoclo/<label>.yml, one file for each application. Each file needs a top-level app: selector, so Reoclo knows which application it configures.

Set app.slug or app.base_directory in a ci/reoclo/<label>.yml file. Set one of the two fields. Reoclo rejects a file that sets neither.

Reoclo reads the file at the commit it deploys. A deployment always uses the version of the file from its own commit, never a cached copy.

The setup wizard’s repository scan finds these files at the same two locations. If your config lives somewhere else, use Add a config file by path on the scan step to point the scan at it.

Never put a secret value in reoclo.yml. Anyone with read access to your repository can read the file. Store secrets as environment variables, or in the Reoclo secrets manager, instead.

For a stack, the compose file is the source of truth for build and deploy settings. The source, build, deploy, and health_check sections do not apply to stack members.

One key does apply: ci.require_checks. Reoclo reads it from every member’s reoclo.yml and applies the result to the whole stack. When the files disagree, an explicit true wins. When no member file sets the key, the stack’s own Require CI checks toggle applies. See Wait for CI before a deployment.

KeyTypeDefault
versioninteger, 1 or 21

version sets the pipeline spec format. Set version: 2 to define custom stages.

source sets where Reoclo gets your application code.

KeyTypeDefault
source.typegit or imagegit
source.repository_idstringnot set
source.branchstringmain
source.base_directorystring.
source.clone_depthinteger, 1 to 1001
source.imagestringnot set
source.image_commandstringnot set
source.registry_credential_idstringnot set

Reoclo binds source.repository_id and source.registry_credential_id from the application’s dashboard configuration. A repository-hosted reoclo.yml file does not set these two fields.

Set source.image when source.type is image. Set build.type to docker_image too. An image source always builds from a registry image.

build sets how Reoclo builds your application.

KeyTypeDefault
build.typedockerfile, docker_image, or docker_composedockerfile
build.dockerfile_pathstringDockerfile
build.build_contextstring.
build.build_argsmap of string to stringempty
build.target_stagestringnot set
build.compose_file_pathstringdocker-compose.yml
build.compose_servicestringnot set
build.compose_contentstringnot set

Reoclo rejects build.compose_content in a repository-hosted file. Set build.compose_file_path to a file in your repository instead.

deploy sets how Reoclo runs your application’s container.

KeyTypeDefault
deploy.server_idstringnot set
deploy.port_mappingslist of port mappingsone mapping, container port 8080
deploy.replicasinteger, 1 to 101
deploy.resource_limits.cpu_coresnumber, 0.1 to 161.0
deploy.resource_limits.memory_mbinteger, 64 to 32768512
deploy.use_docker_secretsbooleanfalse
deploy.health_check_portintegernot set

Reoclo binds deploy.server_id from the application’s dashboard configuration. A repository-hosted reoclo.yml file does not set this field.

Each entry in deploy.port_mappings has these fields:

KeyTypeDefault
container_portinteger, 1 to 655358080
host_portintegernot set
protocolstringtcp
labelstringempty

When host_port is not set, Reoclo publishes the container port as the host port. Set host_port when that port is already in use on the server.

health_check sets the check Reoclo runs against a new container, before Reoclo replaces the old one.

KeyTypeDefault
health_check.typenone, http, tcp, or commandnone
health_check.http_pathstringnot set
health_check.http_methodstringGET
health_check.commandstringnot set
health_check.interval_secondsinteger, 5 to 30030
health_check.timeout_secondsinteger, 1 to 12010
health_check.retriesinteger, 1 to 203
health_check.start_period_secondsinteger, 0 to 30010

See Deployment Configuration for what makes a good health check.

ci sets how Reoclo reports a deployment to your git provider, and whether a push waits for CI.

ci:
report_status: true # post a commit status (reoclo/deploy/<app>) for each deployment
report_deployment: true # on GitHub, also create a Deployment in the Environments panel
auto_deploy_branches: [main]
require_checks: true # wait for every check on the commit before a push deploys
KeyTypeDefault
ci.report_statusbooleantrue
ci.report_deploymentbooleantrue
ci.auto_deploy_brancheslist of strings[main]
ci.require_checksboolean, or not setnot set

When ci.require_checks is not set, the application’s dashboard setting applies. Set ci.require_checks to true or false to override the dashboard setting.

For a repo-sourced spec, the copy of reoclo.yml on the repository default branch decides which branches can auto-deploy. A pushed branch cannot add itself to ci.auto_deploy_branches in its own copy of the file. Reoclo refreshes the stored copy on each push to the default branch, so add the branch there first. The build and deploy steps still come from the file on the branch that deploys.

See Wait for CI before a deployment and Deployment Status on GitHub and Gitea.

branches overrides source, build, deploy, or health_check for one branch. Reoclo merges each override into the defaults set earlier in this page. Reoclo does not override ci for a branch.

branches:
staging:
deploy:
server_id: 00000000-0000-0000-0000-000000000000
KeyTypeDefault
branches.<name>.sourcemap, same fields as sourceempty
branches.<name>.buildmap, same fields as buildempty
branches.<name>.deploymap, same fields as deployempty
branches.<name>.health_checkmap, same fields as health_checkempty

stages replaces the default pipeline with a custom set of steps. Set version: 2 to use stages.

KeyTypeDefault
stagesmap of stage name to stage definitionnot set

When stages is not set, Reoclo runs its default pipeline: precheck, clone, build, deploy, health check, then cleanup.

Each stage definition has these fields:

KeyTypeDefault
typebuiltin or commandbuiltin
builtinprecheck, clone, build, deploy, health_check, or cleanupnot set
commandstringnot set
needslist of stage namesempty
timeout_secondsinteger, 10 to 3600600

Set builtin when type is builtin. Set command when type is command.

Reoclo does not run command stages yet. Set type: builtin for every stage today.

A pipeline holds at most 20 stages. Reoclo rejects a stages map that has a cycle in needs, or a needs entry that names a stage that does not exist.