# 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 buckets on cr-buildbucket-dev.appspot.com, used by to schedule builds
# on buildbot.
#
# See http://luci-config.appspot.com/schemas/projects:buildbucket.cfg for
# schema of this file and documentation.

# Please keep this list sorted by name.

acl_sets {
  name: "default"
  acls {
    role: READER
    group: "all"
  }
}

builder_mixins {
  name: "fuchsia"
  category: "Fuchsia"
  recipe {
    name: "fuchsia"
    properties: "isolate_server:https://isolateserver-dev.appspot.com"
    properties: "swarming_server:https://chromium-swarm-dev.appspot.com"
    properties_j: "goma_local_cache:true"
    properties_j: "variant:[\"host_asan\"]"
    # TODO(INTK-319): Remove /system/test when all fuchsia packages are in pkgfs.
    properties: "runtests_args:/system/test /pkgfs/packages/*/*/test"
    properties_j: "run_tests:true"
  }
}

builder_mixins {
  name: "garnet"
  mixins: "fuchsia"
  recipe {
    properties: "project:garnet"
    properties: "remote:https://fuchsia.googlesource.com/garnet"
    properties: "manifest:manifest/garnet"
    properties_j: "packages:[\"garnet/packages/default\"]"
  }
}

builder_mixins {
  name: "garnet-ci"
  mixins: "garnet"
  service_account: "garnet-ci-builder-dev@fuchsia-infra.iam.gserviceaccount.com"
  recipe {
    properties_j: "$kitchen:{\"git_auth\": true, \"devshell\": true}"
  }
}

builder_mixins {
  name: "peridot"
  mixins: "fuchsia"
  recipe {
    properties: "project:peridot"
    properties: "remote:https://fuchsia.googlesource.com/peridot"
    properties: "manifest:manifest/peridot"
    properties_j: "packages:[\"peridot/packages/default\"]"
  }
}

builder_mixins {
  name: "peridot-ci"
  mixins: "peridot"
  service_account: "peridot-ci-builder-dev@fuchsia-infra.iam.gserviceaccount.com"
  recipe {
    properties_j: "$kitchen:{\"git_auth\": true, \"devshell\": true}"
  }
}

builder_mixins {
  name: "topaz"
  mixins: "fuchsia"
  recipe {
    properties: "project:topaz"
    properties: "remote:https://fuchsia.googlesource.com/topaz"
    properties: "manifest:manifest/topaz"
    properties_j: "packages:[\"topaz/packages/default\"]"
  }
}

builder_mixins {
  name: "topaz-ci"
  mixins: "topaz"
  service_account: "topaz-ci-builder-dev@fuchsia-infra.iam.gserviceaccount.com"
  recipe {
    properties_j: "$kitchen:{\"git_auth\": true, \"devshell\": true}"
  }
}

builder_mixins {
  name: "zircon"
  category: "Zircon"
  recipe {
    name: "zircon"
    properties: "isolate_server:https://isolateserver-dev.appspot.com"
    properties: "swarming_server:https://chromium-swarm-dev.appspot.com"
    properties: "project:zircon"
    properties: "remote:https://fuchsia.googlesource.com/zircon"
    properties: "manifest:manifest/zircon"
    properties: "toolchain:clang"
    properties_j: "$kitchen:{\"git_auth\": true}"
  }
}

builder_mixins {
  name: "zircon-ci"
  mixins: "zircon"
  service_account: "zircon-ci-builder-dev@fuchsia-infra.iam.gserviceaccount.com"
}

buckets {
  name: "luci.fuchsia.ci"
  acl_sets: "default"
  acls {
    role: SCHEDULER
    identity: "user:luci-scheduler-dev@appspot.gserviceaccount.com"
  }

  swarming {
    hostname: "chromium-swarm-dev.appspot.com"
    url_format: "https://luci-milo-dev.appspot.com/swarming/task/{task_id}?server=chromium-swarm-dev.appspot.com"

    builder_defaults {
      swarming_tags: "allow_milo:1"
      swarming_tags: "vpython:native-python-wrapper"
      dimensions: "pool:luci.fuchsia.ci"
      dimensions: "os:Debian"
      recipe {
        name: "fuchsia"
        cipd_package: "fuchsia/infra/recipe_bundles/fuchsia.googlesource.com/infra/recipes"
        properties: "remote:https://fuchsia.googlesource.com/manifest"
        properties: "manifest:fuchsia"
      }
      # TODO(INTK-93): Drop this back to 30 min if we find a way to speed
      # up the recipes.
      execution_timeout_secs: 3600  # 60 min
    }

    # Keep builders sorted by category, then name.

    builders {
      name: "garnet-arm64-debug"
      mixins: "garnet-ci"
      recipe {
        properties: "target:arm64"
      }
    }

    builders {
      name: "garnet-roller"
      dimensions: "os:Linux"
      recipe {
        name: "fuchsia_roller"
        properties: "project:peridot"
        properties: "remote:https://fuchsia.googlesource.com/peridot"
        properties: "manifest:manifest/minimal"
        properties: "import_in:manifest/peridot"
        properties: "import_from:garnet"
        properties_j: "$kitchen:{\"git_auth\": true}"
        properties_j: "dry_run:true"
      }
      service_account: "garnet-roller-dev@fuchsia-infra.iam.gserviceaccount.com"
    }

    builders {
      name: "garnet-x64-debug"
      mixins: "garnet-ci"
      recipe {
        properties: "target:x64"
      }
    }

    # Same as garnet, but generates netboot image which is a ramdisk
    # containing fvm.blk, used for netbooting.
    #
    # TODO(INTK-138): Remove and integrate the functionality into a more
    # standard set of builders once the issue has been resolved.
    builders {
      name: "garnet-x64-debug-netboot"
      mixins: "garnet-ci"
      recipe {
        properties: "target:x64"
        properties_j: "packages:[\"garnet/packages/default,build/packages/netboot\"]"
      }
    }

    builders {
      name: "garnet-x64-debug-perf"
      mixins: "garnet-ci"
      recipe {
        name: "fuchsia_perf"
        properties: "target:x64"
      }
    }

    builders {
      name: "peridot-arm64-debug"
      mixins: "peridot-ci"
      recipe {
        properties: "target:arm64"
      }
    }

    builders {
      name: "peridot-x64-debug"
      mixins: "peridot-ci"
      recipe {
        properties: "target:x64"
      }
    }

    builders {
      name: "topaz-arm64-debug"
      mixins: "topaz-ci"
      recipe {
        properties: "target:arm64"
      }
    }

    builders {
      name: "topaz-x64-debug"
      mixins: "topaz-ci"
      recipe {
        properties: "target:x64"
      }
    }

    builders {
      name: "zircon-arm64-clang-qemu_kvm"
      mixins: "zircon-ci"
      recipe {
        properties: "target:arm64"
      }
    }

    builders {
      name: "zircon-x64-clang-qemu_kvm"
      mixins: "zircon-ci"
      recipe {
        properties: "target:x64"
      }
    }

    builders {
      name: "zircon-x64-gcc-qemu_kvm"
      mixins: "zircon-ci"
      recipe {
        properties: "target:x64"
        properties: "toolchain:gcc"
      }
    }
  }
}
