Skip to content

Append Configuration

This blueprint type will append a configuration snippet to the configuration of an organization depending on a condition that is evaluated against the current configuration.

Configuration

  • type - append_configuration

Settings

Setting Necessity Value type Description
condition mandatory string a JSONata expression that is evaluated against the current configuration
content mandatory string the configuration snippet to add if the condition evaluates to true
reviewers optional list[string] the list of teams for which a review shall be requested upon pull request creation

Note

Team names will be implicitly slugified, i.e. a team name defined with a template like technology.csi-project-leads will be converted to technology-csi-project-leads.

Templating

It is possible to use Mustache logic-less templates within the content / reviewers parameters of this blueprint.

To use a context variable, simply enclose its name in curly braces:

  This is an example to use mustache template for repo: {{repo_name}}

In this example, {{repo_name}} will be replaced with the actual name of the repository being processed. For more complex examples please refer to the mustache documentation.

Template Context

The following context is injected during template evaluation when a specific repository is being processed:

Variable Type Description
project_name string the project name of the associated GitHub organization, e.g. technology.csi
github_id string the name of the associated GitHub organization
repo_name string the name of the repository being processed
org dict the organization settings for the associated GitHub organization
repo dict the repository settings for the repository being processed
repo_url string the url of the repository being processed, e.g. https://github.com/eclipse-csi/otterdog
blueprint_id string the id of the associated blueprint, e.g. require-dependabot-auto-merge
blueprint_url string the url of the associated blueprint, e.g. https://github.com/eclipse-csi/.eclipsefdn/blob/main/otterdog/blueprints/test.yml

References

Example

The following example adds an Organization Ruleset to the configuration to prevent force-pushes on the default branch of any repository if one does not exist yet:

id: prevent-force-pushes
name: Prevents force-pushes for the default branch
type: append_configuration
config:
  condition: >-
    $count($.rulesets[allows_force_pushes = false and
    "~DEFAULT_BRANCH" in include_refs and
    "~ALL" in include_repo_names and target = "branch"]) = 0
  content: |-
    {
      # snippet added due to '{{blueprint_url}}'
      rulesets+: [
        orgs.newOrgRuleset('{{blueprint_id}}') {
          allows_creations: true,
          include_repo_names: [
            "~ALL"
          ],
          include_refs: [
            "~DEFAULT_BRANCH"
          ],
          required_pull_request: null,
          required_status_checks: null,
        },
      ],
    }