»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, define 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 a 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.
Warning: the project name can not be changed. Changing the project name is not currently supported. If you change the name, the history, deployments, etc. of the previous project name will not be migrated or destroyed. A future version of Waypoint will enable renaming projects.