Skip to content

Blueprints

Blueprints are a mechanism to help project to ensure that certain settings / files are present. They can be defined on global or organization level. Any configured blueprint is also displayed in the dashboard.

Blueprints are defined in an additive manner (contrary to policies), i.e. multiple blueprints of the same type might be active for a single organization. To distinguish blueprints of the same type, an additional id setting must be defined. If multiple blueprints use the same id value, only the first encountered blueprint will be taken into account.

If a blueprint is defined for an organization, otterdog will check if the matching repositories of the organization comply to the configuration of that blueprint. If this is not the case, a PR will be created to remediate the situation, e.g. by adding a file or updating its contents. The committers of an organization still need to manually merge the PR but are able to edit it prior to merging.

If such a remediation PR gets closed without being merged, the associated blueprint for that repository is put into state DISMISSED, and not further checks will be performed for that pair of blueprint / repository. In order to reinstate the checks, the PR needs to be reopened.

Configuration

Blueprints are defined using a yaml syntax and placed in the otterdog/blueprints folder of the config repository using either a .yml or .yaml extension.

Example

id: default-security-policy
name: Adds a default SECURITY.md file
description: |-
  This blueprint will create a PR that will add a default SECURITY.md file to the `.github` repo of your GitHub organization if it does not yet exist.
  You can adjust the PR as needed to fit it to your needs. If a repo defines a more specific SECURITY.md file it will take precedence of the one present in the `.github` repo.
type: required_file
config:
  repo_selector:
    name_pattern: .github
  files:
    - path: SECURITY.md
      content: |
        # Security Policy
        This Eclipse Foundation Project adheres to the [Eclipse Foundation Vulnerability Reporting Policy](https://www.eclipse.org/security/policy/).
        ...

Settings

Setting Necessity Description
id mandatory unique identification of the blueprint
name optional Name of the blueprint as displayed in the dashboard
description optional Description of the blueprint as displayed in the dashboard
type mandatory Type of the blueprint
config mandatory Custom configuration dependent on the type of blueprint