Skip to main content

Github Status Checks

This a complete list of syntax and linting checks that Expeditor performs on each pull request to ensure that Expeditor will function properly for your project.

What is Expeditor?

Expeditor is a release management utility that Chef Software, Inc. uses to manage all the various software project it maintains, open source or otherwise. If you were brought to this page by a failed status check on a GitHub pull request, that means there is a configuration error in the .expeditor/config.yml file included with that project. For more information about Expeditor, please check out our Getting Started page. If at any point you have any questions, please reach out in the #expeditor channel in the Chef Community Slack.

Configuration Checks

ARTIFACT-001

What is Expeditor?

Certain projects (typically those available for download on downloads.chef.io) have an assigned product_key. There are certain actions (such as built_in:promote_artifactory_artifact that require that the project have a product_key defined. Please take a look at mixlib-install’s PRODUCT_MATRIX and update the .expeditor/config.yml to specify the correct product_key.

Example of Invalid Configuration

---
subscriptions:
  - workload: project_promoted:{{agent_id}}:*
    actions:
      - built_in:promote_artifactory_artifact

Example of Valid Configuration

---
product_key:
  - chef

subscriptions:
  - workload: project_promoted:{{agent_id}}:*
    actions:
      -built_in:promote_artifactory_artifact

ARTIFACT-002

What is Expeditor?

Certain projects (typically those available for download on downloads.chef.io) have an assigned product_key. There are certain actions (such as built_in:promote_artifactory_artifact that require that the project have a product_key defined. However, one or more of the product keys that are defined in your .expeditor/config.yml file are not valid. Please take a look at mixlib-install’s PRODUCT_MATRIX and update the .expeditor/config.yml to specify the correct product_key.

Example of Invalid Configuration

---
product_key:
  - chef-client

subscriptions:
  - workload: project_promoted:{{agent_id}}:*
    actions:
      -built_in:promote_artifactory_artifact

Example of Valid Configuration

---
product_key:
  - chef

subscriptions:
  - workload: project_promoted:{{agent_id}}:*
    actions:
      -built_in:promote_artifactory_artifact

CHANGELOG-001

What is Expeditor?

You have specified the built_in:update_changelog action in your .expeditor/config.yml file, but you are missing the required inline comment flags. For more information, please read the changelog configuration documentation.

Example of Valid CHANGELOG.md

<!-- latest_release -->
<!-- latest_release -->

CHANGELOG-002

What is Expeditor?

You have specified the built_in:rollover_changelog action in your .expeditor/config.yml file, but you are missing the required inline comment flags. For more information, please read the changelog configuration documentation.

Example of Valid CHANGELOG.md

<!-- latest_release -->
<!-- latest_release -->

<!-- release_rollup -->
<!-- release_rollup -->

<!-- latest_stable_release -->
<!-- latest_stable_release -->

CONDITION-001

What is Expeditor?

You have specified an unsupported only_if_conditions operator in your .expeditor/config.yml.

Example of Valid Configuration

---
artifact_channels:
  - dev
  - acceptance
  - current
  - stable

subscriptions:
  - workload: project_promoted:{{agent_id}}:*
    actions:
      - bash:.expeditor/promote-services.sh
      - trigger_pipeline:deploy/acceptance:
          only_if_conditions:
            - value_one: "{{target_channel}}"
              operator: equals
              value_two: acceptance

CONDITION-002

What is Expeditor?

You have specified an empty or invalid value_one or value_two value in your only_if_conditions. Please make sure that any values using Mustache templates (e.g. {{variable}}) are wrapped in quotes.

Example of Valid Configuration

---
artifact_channels:
  - dev
  - acceptance
  - current
  - stable

subscriptions:
  - workload: project_promoted:{{agent_id}}:*
    actions:
      - bash:.expeditor/promote-services.sh
      - trigger_pipeline:deploy/acceptance:
          only_if_conditions:
            - value_one: "{{target_channel}}"
              operator: equals
              value_two: acceptance

CONFIG-002

What is Expeditor?

For clarity, it is important to list the actions in your action set in the order you expect them to be executed. You have specified one or more actions in one of your action sets that will not be executed in the order they have been specified. For more information about how action sets are executed, please read this documentation.

Example of Invalid Configuration

subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - bash:.expeditor/generate-cli-docs.sh
      - built_in:trigger_habitat_package_build
      - bash:.expeditor/upload-files.sh:      # we want this to happen post-commit, but `bash` defaults to pre-commit
          only_if: built_in:trigger_habitat_package_build
      - bash:.expeditor/generate-api-docs.sh  # we want this to happen pre-commit, but it's listed after post-commit actions

Example of Valid Configuration

subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - bash:.expeditor/generate-cli-docs.sh
      - bash:.expeditor/generate-api-docs.sh  # we moved this action before the post-commit actions
      - built_in:trigger_habitat_package_build
      - bash:.expeditor/upload-files.sh:
          post_commit: true                   # to ensure that bash happens post-commit, we have added the post-commit filter
          only_if: built_in:trigger_habitat_package_build

CONFIG-003

What is Expeditor?

You have specified an invalid schedule. Please make sure you are providing a name, description, and cronline. Please check out the schedule documentation for more information on what constitutes a valid schedule.

Example of Valid Configuration

schedules:
  - name: sample_schedule
    description: A sample schedule
    cronline: "0 0 * * *"

CONFIG-005

What is Expeditor?

The staging_areas setting in your .expeditor/config.yml file is invalid. Please ensure you are providing a valid name and workload.

Example of Valid Configuration

---
staging_areas:
  - my_area:
      workload: generic_workload_published:*

CONFIG-006

What is Expeditor?

You have specified an unsupported event in one or more of your subscriptions. Please make sure that you are using of the supported events specified in our workload documentation.

CONFIG-007

What is Expeditor?

You have provided an invalid value for project.alias. Please refer to the documentation to make sure you are meeting the required criteria.

CONFIG-008

What is Expeditor?

One of the aliases you have provided in project.alias is already in use by another agent. Please update your list to remove the conflict.

CONFIG-011

What is Expeditor?

Expeditor detected an out of bounds time with your subscription delay. Max delay is 1h. Can not be less than 0s.

CONFIG-012

What is Expeditor?

Expeditor could not parse your workload which was trying to create a pull request. Please make sure your template file exists for the description, if set. Set pull_request: true or provide values for title, branch, and description. You can look at how to configure this here.

CONFIG-013

What is Expeditor?

Expeditor no longer supports promote and merge actions. Please specify the correspnoding workload subscriptions instead.

Old New
promote: project_promoted:{{agent_id}}:*
merge_actions: pull_request_merged:{{github_repo}}:{{release_branch}}:*

CONFIG-014

What is Expeditor?

The option cwd is currently not supported by Expeditor.

GEM-001

What is Expeditor?

You have specified the built_in:build_gem action in your .expeditor/config.yml file, but you have not specified any rubygems.

Example of Invalid Configuration

---
subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - built_in:build_gem

Example of Valid Configuration

---
rubygems:
  - mixlib-install

subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - built_in:build_gem

GEM-004

What is Expeditor?

Expeditor does not have permission to publish one of your Rubygems. Please make sure either a) this is a brand new gem or b) the rubygems@chef.io user has been added as an owner.

To add rubygems@chef.io as an owner, please run the following command.

gem owner GEM_NAME --add rubygems@chef.io

HELM-001

What is Expeditor?

You have not added any charts configured for us to publish.

Example of Valid Configuration

---
helm_charts:
  - chart/expeditor

PIPELINE-001

What is Expeditor?

You have specified one or more pipelines in your .expeditor/config.yml file, but one of the associated pipelines.#.definition file does not exist. Please make sure that the path you have specified exists, or that you have named the file correctly to match the default.

Example of Valid Configuration

---
pipelines:
  - verify
  - deploy/production:
      definition: .expeditor/deploy_production.pipeline.yml

subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - trigger_pipeline:deploy/production

Name to Definition Mapping

Pipeline Name Default File
verify .expeditor/verify.pipeline.yml
deploy/production .expeditor/deploy_production.pipeline.yml

PIPELINE-002

What is Expeditor?

You have specified an unsupported pipelines trigger in your .expeditor/config.yml file.

PIPELINE-003

What is Expeditor?

One of the pipeline.#.definition files you have specified does not contain valid YAML or JSON. Please ensure that all your pipeline definitions contain valid YAML or JSON.

PIPELINE-004

What is Expeditor?

You have specified one or more pipelines in your .expeditor/config.yml file to be a public canary. A pipeline can not be both public and a canary.

PREREQ-002

What is Expeditor?

The .expeditor/config.yml file in your pull request contains invalid YAML syntax. Try using YAML Lint if you need assistance.

PROMOTE-002

What is Expeditor?

You have specified a promote action for an unconfigured channel. Please make sure that you are only attempting to promote a channel you have already specified in your .expeditor/config.yml file.

Example of Invalid Configuration

---
artifact_channels:
  - unstable
  - current
  - stable

subscriptions:
  - workload: generic_workload_published:*
    actions:
      - promote:chef/example:main:dev

Example of Valid Configuration

---
artifact_channels:
  - unstable
  - current
  - stable

subscriptions:
  - workload: generic_workload_published:*
    actions:
      - promote:chef/example:main:unstable

STAGING-AREA-001

What is Expeditor?

You are attempting to take the unlock_staging_area action on one of your staging_areas that you have not defined in your .expeditor/config.yml file.

UNKNOWN-001

What is Expeditor?

Expeditor ran into an unexpected error when trying to validate your .expeditor/config.yml file. Please reach out to Release Engineering to help debug.

VERSION-001

What is Expeditor?

You have specified the built_in:bump_version action in your .expeditor/config.yml file, but the version file you have defined (default VERSION) does not exist. If you wish to use the default file, please create a VERSION file in the root of your repository that contains a version number in the form of MAJOR.MINOR.BUILD. If you are using a non-standard version file location, please make sure you have it properly configured.

Example of Non-standard Configuration

---
github:
  version_file: .version

subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - built_in:bump_version

VERSION-002

What is Expeditor?

You have specified the built_in:bump_version action in your .expeditor/config.yml file, but the contents of your version file do not match the supported \d.\d.\d (or MAJOR.MINOR.BUILD) syntax.

Example of Unsupported Versions

  • 1.0.0-dev
  • YYYYMMDDHHMMSS

Deprecated Checks

The following status checks have been deprecated and are no longer enforced.

AUTOMATE-001

What is Expeditor?

You have specified the built_in:update_acc action in your .expeditor/config.yml file, but you are missing the required automate configuration.

Warning

The built_in:update_acc action has been deprecated.

Example of Invalid Configuration

---
subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - built_in:update_acc

Example of Valid Configuration

---
automate:
  organization: products
  project: chef

subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - built_in:update_acc

CONFIG-001

What is Expeditor?

When enumerating a list of items, please provide those items as an array of strings or hashes, rather than as a hash.

CONFIG-004

What is Expeditor?

Your configuration is using the deprecated artifact_actions subscription shortcut.

CONFIG-009

What is Expeditor?

Expeditor could not find the file specified in base_config.file. Please double check your configuration to make sure you’ve specified the correct repository, branch, and file name in your configuration.

CONFIG-010

What is Expeditor?

Expeditor detected a cyclical reference in your base_config.

DOCKER-001

What is Expeditor?

You have specified either the built_in:build_docker_image or built_in:tag_docker_image action in your .expeditor/config.yml file, but you have not specified any docker_images.

Example of Invalid Configuration

---
subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - built_in:build_docker_image

Example of Valid Configuration

---
docker_images:
  - chef

subscriptions:
  - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
    actions:
      - built_in:build_docker_image

HABITAT-001

What is Expeditor?

Warning

The built_in:trigger_habitat_package_build action has been deprecated.

GEM-002

What is Expeditor?

You have specified the built_in:build_gem action in your .expeditor/config.yml, but you have also specified one or more product_keys. Gems for project’s that have a product_key are built alongside the binary artifacts, and should not be built independently by Expeditor.

GEM-003

What is Expeditor?

You have specified the built_in:build_gem action in your .expeditor/config.yml, but you have also specified more than one rubygems. At this point in time, Expeditor can only build rubygems projects that contain only a single gem.

PROMOTE-001

What is Expeditor?

You have specified a promote action for a project other than your own. Expeditor only supports triggering promotions for your own projects.

PREREQ-001

What is Expeditor?

The chef-ci GitHub user does not have Administrator priviledges to the your GitHub repository. The chef-ci user requires Administrator priviledges so that is can push and pull code as well as managed Webhooks.

PREREQ-003

What is Expeditor?

You have specified an unsupported action in your .expeditor/config.yml.

PREREQ-004

What is Expeditor?

Expeditor was unable to load the .expeditor/config.yml file from your repository. If you have opened a pull request from a fork, it’s likely that the Expeditor GitHub application does not have read permissions on your repository. Please ensure that your repository is public, or that you grant the Expeditor GitHub application read permissions on your forked repository. You may also want to check that your feature branch is on the latest revision of master as they may have diverged. Ensure that you are on the latest revision of the release branch by rebasing your branch.

SLACK-001

What is Expeditor?

Expeditor was unable to access one or more of the channels mentioned in slack.notify_channel. Please make sure the channel exists as it has been provided in the config. If you are still receiving this error, please reach out to Release Engineering.