Configuration

This page documents all the settings available to you in your .expeditor/config.yml. The . in each header indicates when an attribute is nested.

beta.notify_http_endpoints

One or more REST endpoints where JSON payloads containing workloads can be sent.

beta:
  notify_http_endpoints:
    - https://example.com

changelog.categories

A hash of categories to use to organize your changelog where the key is the Github label and the value is the string to use in your changelog. Defaults to the following:

changelog:
  categories:
    - "enhancement": "Features & Enhancements"
    - "bug": "Bug Fixes"

changelog.category_header_prefix

The Markdown heading prefix to prepend to your category header. Defaults to ####.

changelog.default_category_header

The category header to use if none of the configured labels are applied to the pull request. Defaults to Merged Pull Requests.

changelog.line_item

The Mustache template to use for your changelog line item. Defaults to the following:

- {{pr_title}} [#{{pr_number}}](https://github.com/{{github_repo}}/pull/{{pr_number}}) ([{{pr_author}}](https://github.com/{{pr_author}}))

Supported Mustache Variables

Value Description
{{version}} The contents of github.version_file.
{{date}} The current date in YYYY-MM-DD format.
{{github_repo}} The full name (e.g. chef/chef) of the github repo.
{{version_tag}} The version formatted how it will be in the git tag.
{{pr_title}} The title of the pull request.
{{pr_number}} The pull request number.
{{pr_author}} The GitHub name of the pull request author.

changelog.release_header

The Mustache template to use for your release header. Defaults to the following:

[v{{version}}](https://github.com/{{github_repo}}/tree/v{{version}}) ({{date}})

Supported Mustache Variables

Value Description
{{version}} The contents of github.version_file.
{{date}} The current date in YYYY-MM-DD format.
{{github_repo}} The full name (e.g. chef/chef) of the github repo.
{{latest_stable}} For projects with a product key specified, this returns the latest stable version per mixlib-install.

changelog.release_header_prefix

The Markdown heading prefix to prepend to your release header. Defaults to ##.

changelog.rollup_header

The Mustache template to use for your rollup header. Defaults to Changes since {{latest_stable}} release.

Supported Mustache Variables

Value Description
{{version}} The contents of github.version_file.
{{date}} The current date in YYYY-MM-DD format.
{{github_repo}} The full name (e.g. chef/chef) of the github repo.
{{latest_stable}} For projects with a product key specified, this returns the latest stable version per mixlib-install.

changelog.rollup_header_prefix

The Markdown heading prefix to prepend to your release header. Defaults to ###.

changelog.unreleased_header

The string to use as a release header when the most recent change to the changelog has not been released. This is defined as a pull request that is merged when the VERSION file has not been modified. Defaults to Unreleased.

docker_images

You can specify an array of Docker images that you wish Chef Expeditor to interact with. When you specify a Docker image, you should specify the name of the image without the namespace. Defaults to [].

Metadata Description
dockerfile The path, relative to your context, to the Dockerfile you wish to use to build Docker images. Defaults to Dockerfile.
build_args A hash of additional --build-args you wish to pass in to your Docker image build. Defaults to [].
context The “context” path, relative to the root of your repository, to pass to the Docker daemon. Defaults to ..
namespace The namespace to which the Docker image should be uploaded. Defaults to chef.
tags A list of additional tags you wish to apply to your Docker image at build time. Defaults to [ {{version}} ].

github.changelog_file

The markdown file where your changelog is kept. Defaults to CHANGELOG.md.

github.delete_branch_on_merge

When set to true it deletes the GitHub PR branch after successfully merged into the release branch. Defaults to false.

github.enforce_dco_signoff

Whether or not to enforce the presence of a DCO Sign-off signature on all commits made to the GitHub repository. Defaults to true.

github.major_bump_labels

An array of labels that, if one or more are present on a merged pull request, tells the built_in:bump_version action to bump the MAJOR version number instead of the PATCH/BUILD version number. Defaults to [].

github.minor_bump_labels

An array of labels that, if one or more are present on a merged pull request, tells the built_in:bump_version action to bump the MINOR version number instead of the PATCH/BUILD version number. Defaults to [].

github.release_branch

An array of release branches. Defaults to master.

Metadata Description
version_constraint A glob pattern used to associate which versions of the software projects are associated with which release branch. The default value is *.

github.version_file

The plaintext file where the MAJOR.MINOR.PATCH is kept. Defaults to VERSION.

github.version_tag_format

The format you’d like expeditor to use for git tags. You can use the {{version}} Mustache variable to specify your own tag format. Defaults to {{version}}.

product_key

An array of valid product keys from the PRODUCT MATRIX. Defaults to [].

project.base_config

This is advanced usage. Please have Release Engineering double check your first few implementations of this pattern.

project.base_config allows you to offload common Expeditor configuration settings to a file hosted in another GitHub repository. This prevents unnecessary duplication in configuration that is consistent across a large number of projects. To make sure your project’s configuration is kept up to date, your project will automatically subscribe to changes made to the project.base_config.file via a merged Pull Request.

Expeditor resolves all merge conflicts by overwriting the settings specified in the base_config with the setting specified in your .expeditor/config.yml. This includes array settings like subscriptions.

Metadata Description
repo The full name of the GitHub repository where file is kept.
branch The name of the branch in repo where file is kept. Default is `master.
file The path of the file, relative to the repo root. Default is .expeditor/config.yml.
---
project:
  base_config:
    repo: acme/common
    file: .expeditor/common_config.yml

pipelines

Metadata Description
description A description of the pipeline. Defaults to "".
definition The relative path to the pipeline YAML in the local repository. Default value based on name (see below).
env An array of environment variables you wish applied to all builds in the pipeline. Defaults to [].
public Whether or not the build logs for the pipeline should be publically available. Defaults to false.
trigger How you would like to trigger new builds in the pipeline. Default value based on name (see below).

Default pipelines.X.definition Values

If <NAME> contains a slash, it replaces it with an underscore (see example above).

Pipeline Name Regex Default Definition Value

/^habitat\// \ .expeditor/<NAME with 'habitat/' removed>.habitat.yml /^omnibus\// | .expeditor/<NAME with 'omnibus/' removed>.omnibus.yml Anything Else | .expeditor/<NAME>.pipeline.yml

Default pipelines.X.trigger Values

Pipeline Name Regex Default Trigger Value
/^deploy/ default
/^habitat/ habitat
/^omnibus/ omnibus
/^verify/ pull_request
Anything Else default

Supported pipelines.X.trigger Types

Name Description
habitat Trigger builds of a habitat pipeline via the trigger_pipeline action.
default Only trigger builds via the trigger_pipeline action.
omnibus Trigger builds of an omnibus pipeline via the trigger_pipeline action.
pull_request Trigger new builds for all pull requests.

promote.actions

A list of one or more actions you wish to execute when you promote your artifacts.

promote.channels

A list of one or more channels through which your software artifacts are promoted.

rubygems

An array of RubyGems that are/should be built and publish as part of this pipeline. Defaults to [].

Metadata Description
gemspec_path The relative path to the directory that contains the .gemspec file. Defaults to ./.

slack.notify_channel

The name of one or more Slack channels in Chef’s internal Slack you want notifications for asynchronous Expeditor activities to go (without #). Defaults to [].

Metadata Description
private Whether or not the Slack channel is private. Defaults to false.

staging_areas

An array of named stagings areas that you wish to maintain.

Metadata Description
workload A workload subscription for which workloads should be placed in the staging area instead of the queue.