# Add a "status/0-triage" to every newly opened pull request.
- triggers:
      pull_request: [ opened ]
  operations:
      - type:       label
        settings: {
            patterns: {
                status/0-triage:     [ ".*" ],
            }
        }

# For every newly created or modified issue, assign label based on matching regexp using the `label`
# operation, as well as an Engine-specific version label using `version-label`.
- triggers:
      issues:       [ edited, opened, reopened ]
  operations:
      - type:       label
        settings: {
            patterns: {
                area/builder:        [ "dockerfile", "docker build" ],
                area/distribution:   [ "docker login", "docker logout", "docker pull", "docker push", "docker search" ],
                area/plugins:        [ "docker plugin" ],
                area/networking:     [ "docker network", "ipvs", "vxlan" ],
                area/runtime:        [ "oci runtime error" ],
                area/security/trust: [ "docker_content_trust" ],
                area/swarm:          [ "docker node", "docker service", "docker swarm" ],
                platform/desktop:    [ "docker for mac", "docker for windows" ],
                platform/freebsd:    [ "freebsd" ],
                platform/windows:    [ "nanoserver", "windowsservercore", "windows server" ],
            }
        }
      - type:       version-label

# When a pull request is closed, attach it to the currently active milestone.
- triggers:
      pull_request: [ closed ]
  operations:
      - type:       version-milestone

# Labeling a PR with `rebuild/<configuration>` triggers a rebuild job for the associated
# configuration. The label is automatically removed after the rebuild is initiated. There's no such
# thing as "templating" in this configuration, so we need one operation for each type of
# configuration that can be triggered.
- triggers:
      pull_request: [ labeled ]
  operations:
      - type:       rebuild
        settings: {
            # When configurations are empty, the `rebuild` operation rebuilds all the currently
            # known statuses for that pull request.
            configurations: [],
            label:          "rebuild/*",
        }
      - type:       rebuild
        settings: {
            configurations: [ arm ],
            label:          "rebuild/arm",
        }
      - type:       rebuild
        settings: {
            configurations: [ experimental ],
            label:          "rebuild/experimental",
        }
      - type:       rebuild
        settings: {
            configurations: [ janky ],
            label:          "rebuild/janky",
        }
      - type:       rebuild
        settings: {
            configurations: [ userns ],
            label:          "rebuild/userns",
        }
      - type:       rebuild
        settings: {
            configurations: [ vendor ],
            label:          "rebuild/vendor",
        }
      - type:       rebuild
        settings: {
            configurations: [ win2lin ],
            label:          "rebuild/win2lin",
        }
      - type:       rebuild
        settings: {
            configurations: [ windowsRS1 ],
            label:          "rebuild/windowsRS1",
        }
