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 built-in actions (such as 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

---
promote:
  actions:
    - built_in:promote_artifactory_artifact

Example of Valid Configuration

---
product_key:
  - chef
  - angrychef

promote:
  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 built-in actions (such as 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 are not valid. Please take a look at mixlib-install’s PRODUCT_MATRIX and double check your .expeditor/config.yml for spelling to ensure you’ve specified a valid product_key.

Example of Invalid Configuration

---
product_key:
  - chef
  - aangrycheff

promote:
  actions:
    - built_in:promote_artifactory_artifact

Example of Valid Configuration

---
product_key:
  - chef
  - angrychef

promote:
  actions:
    - built_in:promote_artifactory_artifact

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.

The built_in:update_acc action has been deprecated.

Example of Invalid Configuration

---
merge_actions:
  - built_in:update_acc

Example of Valid Configuration

---
automate:
  organization: products
  project: chef

merge_actions:
  - built_in:update_acc

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. Please check the docs to see a list of supported operators.

Example of Valid Configuration

---
promote:
  actions:
    - bash:.expeditor/promote-services.sh
    - trigger_pipeline:deploy/acceptance:
        only_if_conditions:
          - value_one: "{{target_channel}}"
            operator: equals
            value_two: acceptance
  channels:
    - dev
    - acceptance
    - current
    - stable

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

---
promote:
  actions:
    - bash:.expeditor/promote-services.sh
    - trigger_pipeline:deploy/acceptance:
        only_if_conditions:
          - value_one: "{{target_channel}}"
            operator: equals
            value_two: acceptance
  channels:
    - dev
    - acceptance
    - current
    - stable

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.

Example of Invalid Configuration

habitat_packages:
  pkg_one:
    source: components/pkg_one
    bldr_paths: components/pkg_one/*
  pkg_two:
    source: components/pkg_two
    bldr_paths: components/pkg_two/*

Example of Valid Configuration

habitat_packages:
  - pkg_one:
      source: components/pkg_one
      bldr_paths: components/pkg_one/*
  - pkg_two:
      source: components/pkg_two
      bldr_paths: components/pkg_two/*

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

merge_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

merge_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_area 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-009

What is Expeditor?

Expeditor could not find the file specified in project.base_config.file. Please double check your configuration to make sure you’ve specified the correct repository, branch, and file name in your configuration. Please also double check that the chef-ci user has read permissions on that repository.

CONFIG-010

What is Expeditor?

Expeditor detected a cylical reference in your project.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

---
merge_actions:
  - built_in:build_docker_image

Example of Valid Configuration

---
docker_images:
  - chef

merge_actions:
  - built_in:build_docker_image

GEM-001

What is Expeditor?

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

Example of Invalid Configuration

---
merge_actions:
  - built_in:build_gem

Example of Valid Configuration

---
rubygems:
  - mixlib-install

merge_actions:
  - built_in:build_gem

HABITAT-001

What is Expeditor?

You have specified the built_in:trigger_habitat_package_build action in your .expeditor/config.yml, but you have not defined any habitat_packages.

Example of Invalid Configuration

---
merge_actions:
  - built_in:trigger_habitat_package_build

Example of Valid Configuration

---
habitat_packages:
  - package1
  - package2

merge_actions:
  - built_in:trigger_habitat_package_build

PIPELINE-001

What is Expeditor?

You have specified one or more pipelines in your .expeditor/config.yml, but one of the associated pipeline definition files 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

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

Supported Triggers

Name Description
manual 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.

PIPELINE-003

What is Expeditor?

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

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

PREREQ-003

What is Expeditor?

You have specified an unsupported action in your .expeditor/config.yml. The following actions exist within the system but are currently unsupported:

action Reason

PREREQ-004

What is Expeditor?

Expeditor was unable to load the .expeditor/config.yml from your repository. If have opened a pull request from a fork, it’s likely that our GitHub user (chef-ci) does not have read permissions on your repository. Please ensure that your repository is public, or that you grant the chef-ci user read permissions on your forked repository.

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.

Example of Invalid Configuration

---
promote:
  channels:
    - unstable
    - current
    - stable

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

Example of Valid Configuration

---
promote:
  channels:
    - unstable
    - current
    - stable

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

SLACK-001

What is Expeditor?

Expeditor was unable to access one or more of the channels mentioned in slack.notify_channel configuration. Please make sure the channel exists as it has been provided in the config, and that the Expeditor Slack Application has been invited to the channel.

/invite @Expeditor

At this time Expeditor does not support sending messages to the Chef Community Slack workspace.

STAGING-AREA-001

What is Expeditor?

You are attempting to take the unlock_staging_area action on a staging area that you have not defined in your .expeditor/config.yml.

VERSION-001

What is Expeditor?

You have specified the built_in:bump_version action in your .expeditor/config.yml, 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

merge_actions:
  - built_in:bump_version

VERSION-002

What is Expeditor?

You have specified the built_in:bump_version action in your .expeditor/config.yml, 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.

CONFIG-004

What is Expeditor?

Your configuration is using the deprecated artifact_actions subscription shortcut. Please check out the subscription documentation for instructions on how to convert your artifact_actions to subscriptions.

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.

Example of Invalid Configuration

# configuration file for chef/example:master
---
subscriptions:
  - workload: generic_workload_published:*
    actions:
      - promote:chef/acme:master:unstable