# Declare a Backstage Component that represents your application.
---
# yaml-language-server: $schema=https://json.schemastore.org/catalog-info.json
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: elastic-package
  description: elastic-package - Command line tool for developing Elastic Integrations
  links:
    - title: Developer Documentation
      icon: file-doc
      url: https://www.elastic.co/guide/en/integrations-developer/current/elastic-package.html

spec:
  type: tool
  owner: group:ingest-fp
  system: platform-ingest
  lifecycle: production

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

spec:
  type: buildkite-pipeline
  owner: group:ingest-fp
  system: platform-ingest
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: elastic-package
      description: ':go: Build and test the elastic-package project'
    spec:
      branch_configuration: "main v0.* v1.*"
      pipeline_file: ".buildkite/pipeline.yml"
      provider_settings:
        build_pull_request_forks: false
        build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot
        build_tags: true
        filter_enabled: true
        filter_condition: >-
          build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null && build.source == 'api')
      repository: elastic/elastic-package
      cancel_intermediate_builds: true
      cancel_intermediate_builds_branch_filter: '!main'
      skip_intermediate_builds: true
      skip_intermediate_builds_branch_filter: '!main'
      env:
        ELASTIC_PR_COMMENTS_ENABLED: 'true'
      teams:
        ecosystem:
          access_level: MANAGE_BUILD_AND_READ
        ingest-fp:
          access_level: MANAGE_BUILD_AND_READ
        observablt-ci:
          access_level: MANAGE_BUILD_AND_READ
        everyone:
          access_level: READ_ONLY

---
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-elastic-package-test-with-integrations
  description: 'Buildkite pipeline to run specific elastic-package version with all packages in integrations repository'
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/elastic-package-test-with-integrations

spec:
  type: buildkite-pipeline
  owner: group:ingest-fp
  system: platform-ingest
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: elastic-package-test-with-integrations
      description: 'Buildkite pipeline to run specific elastic-package version with all packages in integrations repository'
    spec:
      branch_configuration: main
      pipeline_file: ".buildkite/pipeline.test-with-integrations-repo.yml"
      provider_settings:
        build_tags: false # just run on demand
        build_branches: false # just run on demand
        publish_commit_status: false # do not update status of commits for this pipeline
        build_pull_request_forks: false
        build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot
        filter_enabled: true
        filter_condition: >-
          build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null && build.source == 'api')
      repository: elastic/elastic-package
      cancel_intermediate_builds: true
      cancel_intermediate_builds_branch_filter: '!main'
      skip_intermediate_builds: true
      skip_intermediate_builds_branch_filter: '!main'
      teams:
        ecosystem:
          access_level: MANAGE_BUILD_AND_READ
        ingest-fp:
          access_level: MANAGE_BUILD_AND_READ
        everyone:
          access_level: READ_ONLY

---
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-elastic-package-cloud-cleanup
  description: Clean up stale cloud resources
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/elastic-package-cloud-cleanup

spec:
  type: buildkite-pipeline
  owner: group:ingest-fp
  system: platform-ingest
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: elastic-package-cloud-cleanup
      description: Buildkite pipeline for cleaning stale resource in cloud providers
    spec:
      pipeline_file: ".buildkite/pipeline.cloud-cleanup.yml"
      provider_settings:
        build_pull_request_forks: false
        build_pull_requests: false # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot
        publish_commit_status: false # do not update status of commits for this pipeline
        build_tags: false
        build_branches: false
        filter_enabled: true
        filter_condition: >-
          build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null && build.source == 'api')
      cancel_intermediate_builds: false  # do not cancel any build to avoid inconsistent states
      skip_intermediate_builds: true     # just need to run the latest commit
      repository: elastic/elastic-package
      schedules:
        Daily main:
          branch: main
          cronline: "00 1 * * *"
          message: Daily Cloud cleanup
      teams:
        ingest-fp:
          access_level: MANAGE_BUILD_AND_READ
        observablt-ci:
          access_level: MANAGE_BUILD_AND_READ
        everyone:
          access_level: READ_ONLY

---
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
  name: buildkite-pipeline-elastic-package-test-serverless
  description: Pipeline to test elastic-package with Serverless projects
  links:
    - title: Pipeline
      url: https://buildkite.com/elastic/elastic-package-test-serverless

spec:
  type: buildkite-pipeline
  owner: group:ingest-fp
  system: platform-ingest
  implementation:
    apiVersion: buildkite.elastic.dev/v1
    kind: Pipeline
    metadata:
      name: elastic-package-test-serverless
      description: Pipeline to test elastic-package with Serverless projects
    spec:
      pipeline_file: ".buildkite/pipeline.serverless.yml"
      provider_settings:
        build_pull_request_forks: false
        # Managed by buildkite-pr-bot
        build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot
        publish_commit_status: false # do not update status of commits for this pipeline
        build_tags: false
        build_branches: false
        filter_enabled: true
        filter_condition: >-
          build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null && build.source == 'api')
      cancel_intermediate_builds: true
      cancel_intermediate_builds_branch_filter: '!main'
      skip_intermediate_builds: true
      skip_intermediate_builds_branch_filter: '!main'
      repository: elastic/elastic-package
      schedules:
        Test Serverless Daily:
          branch: main
          cronline: "00 5 * * *"
          message: Test Serverless Daily
          env:
            SERVERLESS_PROJECT: observability
      teams:
        ingest-fp:
          access_level: MANAGE_BUILD_AND_READ
        observablt-ci:
          access_level: MANAGE_BUILD_AND_READ
        everyone:
          access_level: BUILD_AND_READ

