---
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-docs
  description: Build and Publish the docs
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/docs-build

spec:
  type: buildkite-pipeline
  owner: group:docs
  system: buildkite
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: docs / build
    spec:
      repository: elastic/docs
      pipeline_file: ".buildkite/build_pipeline.yml"
      branch_configuration: master
      provider_settings:
        build_pull_requests: false
      schedules:
        periodic_docs_build:
          branch: "master"
          message: "Build the docs every 30 minutes"
          cronline: "*/30 * * * *"
      teams:
        docs-build-guild:
          access_level: MANAGE_BUILD_AND_READ
        docs:
          access_level: BUILD_AND_READ
        everyone:
          access_level: READ_ONLY
      env:
        ELASTIC_SLACK_NOTIFICATIONS_ENABLED: "true"
        SLACK_NOTIFICATIONS_CHANNEL: "#docs-builds"
        SLACK_NOTIFICATIONS_ALL_BRANCHES: "false"
        SLACK_NOTIFICATIONS_ON_SUCCESS: "false"

---
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-docs-pr
  description: Build the docs on pull requests to the `elastic/docs` and products docs repositories.
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/docs-build-pr

spec:
  type: buildkite-pipeline
  owner: group:docs
  system: buildkite
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: docs / build-pr
    spec:
      repository: elastic/docs
      pipeline_file: ".buildkite/build_pr_pipeline.yml"
      skip_intermediate_builds: false
      provider_settings:
        # Trigger mode should be set to `none` since this job should only be triggered by API from the buildkite-pr-bot
        # But doing so, we hit this bug: https://forum.buildkite.community/t/request-build-error-branches-have-been-disabled-for-this-pipeline/1463
        # So we set the `deployment` trigger which we never use and seem to allow API triggers
        trigger_mode: "deployment"
      teams:
        docs-build-guild:
          access_level: MANAGE_BUILD_AND_READ
        everyone:
          access_level: BUILD_AND_READ

# Declare daily preview cleaner
---
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-docs-preview-cleaner
  description: Daily Preview Cleaner
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/docs-preview-cleaner

spec:
  type: buildkite-pipeline
  owner: group:docs
  system: buildkite
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: docs / preview-cleaner
    spec:
      repository: elastic/docs
      pipeline_file: ".buildkite/preview_cleaner_pipeline.yml"
      env:
        ELASTIC_SLACK_NOTIFICATIONS_ENABLED: "true"
        SLACK_NOTIFICATIONS_CHANNEL: "#docs-builds"
        SLACK_NOTIFICATIONS_ALL_BRANCHES: "false"
        SLACK_NOTIFICATIONS_ON_SUCCESS: "false"
      provider_settings:
        trigger_mode: none
      schedules:
        Daily Run:
          branch: "master"
          cronline: "0 6 * * *"
          message: "Runs daily preview cleaning."
      teams:
        docs-build-guild:
          access_level: MANAGE_BUILD_AND_READ
        docs:
          access_level: BUILD_AND_READ
        everyone:
          access_level: READ_ONLY

# Declare test execution on PR and merge to master
---
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-docs-test
  description: Run tests on PR and merges
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/docs-test

spec:
  type: buildkite-pipeline
  owner: group:docs
  system: buildkite
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: docs / test
    spec:
      branch_configuration: master
      repository: elastic/docs
      pipeline_file: ".buildkite/test_pipeline.yml"
      teams:
        docs-build-guild:
          access_level: MANAGE_BUILD_AND_READ
        docs:
          access_level: BUILD_AND_READ
        everyone:
          access_level: READ_ONLY
      env:
        ELASTIC_SLACK_NOTIFICATIONS_ENABLED: "true"
        SLACK_NOTIFICATIONS_CHANNEL: "#docs-builds"
        SLACK_NOTIFICATIONS_ALL_BRANCHES: "false"
        SLACK_NOTIFICATIONS_ON_SUCCESS: "false"

# Declare build air-gapped
---
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-docs-build-air-gapped
  description: Build air-gapped
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/docs-build-air-gapped

spec:
  type: buildkite-pipeline
  owner: group:docs
  system: buildkite
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: docs / build air-gapped
    spec:
      repository: elastic/docs
      pipeline_file: ".buildkite/air_gapped_pipeline.yml"
      provider_settings:
        trigger_mode: none
      schedules:
        Daily Run:
          branch: "master"
          cronline: "0 5 * * *"
          message: "Daily push image to registry."
      teams:
        docs-build-guild:
          access_level: MANAGE_BUILD_AND_READ
        docs:
          access_level: BUILD_AND_READ
        everyone:
          access_level: READ_ONLY

# Declare link-checker
---
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-docs-link-checker
  description: Link-checker
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/docs-link-check

spec:
  type: buildkite-pipeline
  owner: group:docs
  system: buildkite
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: docs / link_check
    spec:
      repository: elastic/docs
      pipeline_file: ".buildkite/link_check_pipeline.yml"
      provider_settings:
        trigger_mode: none
      schedules:
        Daily Run:
          branch: "master"
          # This cron won't run until 2044 (yes, we want that for now)
          cronline: "0 0 29 2 1"
          message: "Check links between MDX and Legacy docs."
      teams:
        docs-build-guild:
          access_level: MANAGE_BUILD_AND_READ
        docs-engineering:
          access_level: MANAGE_BUILD_AND_READ
        docs:
          access_level: BUILD_AND_READ
        everyone:
          access_level: READ_ONLY
