»Project Configuration: waypoint.hcl

The waypoint.hcl file is used to configure each Waypoint project. It defines how Waypoint builds, 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" {

}

»Placement Tables

Many pages within the waypoint.hcl documentation section will have a placement table just beneath the header. This table documents where a configuration, function, or variable may be used. An example placement table is shown below.

If the example below were present on the documentation page, the documented feature is only valid within the context of an app stanza. It is not valid at the top-level, or any further nested locations.

»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.

»Variables

Waypoint configuration files have access to a number of predefined variables. Using variables helps make a Waypoint configuration more robust by more explicitly specifying paths, reducing duplication, etc. You can learn more about variables in the dedicated variables section.

»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.