# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Defines notifiers on luci-notify.appspot.com.
# See schema at
# https://chromium.googlesource.com/infra/luci/luci-go/+/master/luci_notify/api/config/notify.proto

# Please keep this list sorted by name or layer.

# on_change  = Whenever the build status changes.
# on_success = On every build success.
# on_failure = On every build failure.

notifiers {
    name: "fuchsia-builder-status"
    notifications {
        on_change: false
        on_success: false
        on_failure: true
        email {
            recipients: "fuchsia-builder-status@google.com"
        }
    }

    # Zircon builders.
    builders {
        bucket: "ci"
        name: "zircon-arm64-clang-no_opt-build_only"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "zircon-arm64-clang-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "zircon-arm64-gcc-no_opt-build_only"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "zircon-arm64-gcc-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "zircon-x64-clang-no_opt-build_only"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "zircon-x64-clang-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "zircon-x64-gcc-no_opt-build_only"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "zircon-x64-gcc-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    # Garnet builders.
    builders {
        bucket: "ci"
        name: "garnet-arm64-debug-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/garnet"
    }
    builders {
        bucket: "ci"
        name: "garnet-arm64-release-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/garnet"
    }
    builders {
        bucket: "ci"
        name: "garnet-x64-debug-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/garnet"
    }
    builders {
        bucket: "ci"
        name: "garnet-x64-release-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/garnet"
    }

    # Peridot builders.
    builders {
        bucket: "ci"
        name: "peridot-arm64-debug-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/peridot"
    }
    builders {
        bucket: "ci"
        name: "peridot-arm64-release-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/peridot"
    }
    builders {
        bucket: "ci"
        name: "peridot-x64-debug-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/peridot"
    }
    builders {
        bucket: "ci"
        name: "peridot-x64-release-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/peridot"
    }

    # Topaz builders.
    builders {
        bucket: "ci"
        name: "topaz-arm64-debug-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/topaz"
    }
    builders {
        bucket: "ci"
        name: "topaz-arm64-release-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/topaz"
    }
    builders {
        bucket: "ci"
        name: "topaz-x64-debug-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/topaz"
    }
    builders {
        bucket: "ci"
        name: "topaz-x64-release-qemu_kvm"
        repository: "https://fuchsia.googlesource.com/topaz"
    }
}

notifiers {
    name: "fuchsia-roller-status"
    notifications {
        on_change: false
        on_success: false
        on_failure: true
        email {
            recipients: "fuchsia-builder-status@google.com"
            recipients: "fuchsia-build-notify@google.com"
        }
    }

    builders {
        bucket: "ci"
        name: "zircon-roller"
        repository: "https://fuchsia.googlesource.com/zircon"
    }

    builders {
        bucket: "ci"
        name: "garnet-roller"
        repository: "https://fuchsia.googlesource.com/garnet"
    }

    builders {
        bucket: "ci"
        name: "peridot-roller"
        repository: "https://fuchsia.googlesource.com/peridot"
    }
}

notifiers {
  name: "cobalt-builder-status"
  notifications {
    on_change: false
    on_success: false
    on_failure: true
    email {
      recipients: "cobalt-alerts@google.com"
    }
  }

  builders {
    bucket: "ci"
    name: "cobalt_client-x64-linux-debug"
  }

  builders {
    bucket: "ci"
    name: "cobalt-x64-linux"
    repository: "https://fuchsia.googlesource.com/cobalt"
  }
}

notifiers {
    name: "toolchain-builder-status"
    notifications {
        on_change: false
        on_success: false
        on_failure: true
        email {
            recipients: "fuchsia-toolchain-builder-status@google.com"
        }
    }

    # Clang builders.
    builders {
        bucket: "ci"
        name: "clang-x64-linux"
        repository:  "https://fuchsia.googlesource.com/third_party/llvm-project"
    }
    builders {
        bucket: "ci"
        name: "clang-x64-mac"
        repository:  "https://fuchsia.googlesource.com/third_party/llvm-project"
    }

    # Dart builders.
    builders {
        bucket: "ci"
        name: "dart-x64-linux"
        repository: "https://dart.googlesource.com/sdk"
    }
    builders {
        bucket: "ci"
        name: "dart-x64-mac"
        repository: "https://dart.googlesource.com/sdk"
    }

    # GCC builders.
    builders {
        bucket: "ci"
        name: "gcc-x64-linux"
        repository: "https://gnu.googlesource.com/gcc"
    }
    builders {
        bucket: "ci"
        name: "gcc-x64-mac"
        repository: "https://gnu.googlesource.com/gcc"
    }

    # Go builders.
    builders {
        bucket: "ci"
        name: "go-x64-linux"
        repository: "https://fuchsia.googlesource.com/third_party/go"
    }
    builders {
        bucket: "ci"
        name: "go-x64-mac"
        repository: "https://fuchsia.googlesource.com/third_party/go"
    }

    # Rust builders.
    builders {
        bucket: "ci"
        name: "rust-x64-linux"
        repository: "https://fuchsia.googlesource.com/third_party/rust"
    }
    builders {
        bucket: "ci"
        name: "rust-x64-mac"
        repository: "https://fuchsia.googlesource.com/third_party/rust"
    }

    # Swift builders.
    builders {
        bucket: "ci"
        name: "swift-x64-linux"
        repository: "https://fuchsia.googlesource.com/third_party/swift"
    }
}

notifiers {
    name: "fuchsia-perf-tests"
    notifications {
        on_change: false
        on_success: false
        on_failure: true
        email {
            recipients: "fuchsia-build-notify@google.com"
            recipients: "fuchsia-builder-status@google.com"
        }
    }
    # Garnet perf builders
    builders {
       bucket: "ci"
       name: "garnet-x64-perf-qemu_kvm"
       repository: "https://fuchsia.googlesource.com/garnet"
    }
    builders {
       bucket: "ci"
       name: "garnet-x64-perf-swift_canyon"
       repository: "https://fuchsia.googlesource.com/garnet"
    }
    builders {
       bucket: "ci"
       name: "garnet-arm64-perf-qemu_kvm"
       repository: "https://fuchsia.googlesource.com/garnet"
    }

    # Peridot perf builders
    builders {
       bucket: "ci"
       name: "peridot-x64-perf-qemu_kvm"
       repository: "https://fuchsia.googlesource.com/peridot"
    }
    builders {
       bucket: "ci"
       name: "peridot-x64-perf-swift_canyon"
       repository: "https://fuchsia.googlesource.com/peridot"
    }
    builders {
       bucket: "ci"
       name: "peridot-arm64-perf-qemu_kvm"
       repository: "https://fuchsia.googlesource.com/peridot"
    }
}
