»Project Configuration: waypoint.hcl

The waypoint.hcl file is used to configure each Waypoint project. It defines how Waypoint build, deploys, and releases a project. The waypoint.hcl file is written in HCL or JSON, allowing both human and machine friendly formats.

Waypoint expects one waypoint.hcl per project or version control repository. The waypoint.hcl file is supposed to be committed to version control. This allows multiple team members to share the same Waypoint behavior and also provides a history of change in how an application is deployed.

The waypoint.hcl file is typically placed at the root of a version control repository. To deploy multiple applications, defined each with an app stanza. Each application should live in subdirectories of the project.

When executing the waypoint CLI, it will search for the waypoint.hcl file in the current directory, followed by each subsequent parent directory.

»Template waypoint.hcl

project = "project-name"

app "app-name" {
  path = "./src"

  build {
    # ...
  }

  deploy {
    # ...
  }

  release {
    # ...
  }

plugin "plugin-name" {

}

»Top-level

The "top-level" refers to the objects that are not nested in any other configuration. The top-level is made of "stanzas" and "parameters".

»Stanzas and Parameters

A "stanza" is an block of code that opens and closes with braces { } and may contain more configuration parameters. Above, app "app-name" {} is the app stanza.

A "parameter" is the term used to describe any configuration object. build and path are parameters of app. project, app "app-name", and plugin are parameters of the top-level.

Several "common" parameters can be used in stanzas. These are use and hook. These can not be top-level parameters, but are available in build, deploy, and release. These are documented further in their respective pages.

A stanza is a parameter, but not all parameters are stanzas.

»Top-level Parameters

»Required

  • app (app) - One or more applications to build, deploy, and release with Waypoint.

  • project (string) - The name of the project. This should be unique for the Waypoint server and must not be changed later. This is used to organize information on the server.

»Optional

  • plugin (plugin) - External plugins that may be used in this configuration. Plugins are implicitly defined with use stanzas so this is only required if you need to additionally configure a plugin.