# Defines buckets on cr-buildbucket.appspot.com, used to schedule builds
# on buildbot. In particular, CQ uses some of these buckets to schedule tryjobs.
#
# See http://luci-config.appspot.com/schemas/projects:cr-buildbucket.cfg for
# schema of this file and documentation.
#
# Please keep this list sorted by bucket name.

acl_sets {
  name: "ci"
  acls {
    role: READER
    group: "all"
  }
  acls {
    role: SCHEDULER
    identity: "luci-scheduler@appspot.gserviceaccount.com"
  }
}

acl_sets {
  name: "try"
  acls {
    role: READER
    group: "all"
  }
  acls {
    role: SCHEDULER
    group: "project-dawn-tryjob-access"
  }
  acls {
    role: SCHEDULER
    group: "service-account-cq"
  }
}

builder_mixins {
  name: "clang"
  recipe {
    properties_j: "clang:true"
  }
}
builder_mixins {
  name: "no_clang"
  recipe {
    properties_j: "clang:false"
  }
}
builder_mixins {
  name: "release"
  recipe {
    properties_j: "debug:false"
  }
}
builder_mixins {
  name: "debug"
  recipe {
    properties_j: "debug:true"
  }
}
builder_mixins {
  name: "x86"
  recipe {
    properties: "target_cpu:x86"
  }
}
builder_mixins {
  name: "x64"
  recipe {
    properties: "target_cpu:x64"
  }
}
builder_mixins {
  name: "linux",
  dimensions: "os:Ubuntu-16.04"
  recipe {
    properties_j: <<EOF
      $build/goma: {
        "enable_ats": true,
        "rpc_extra_params": "?prod",
        "server_host": "goma.chromium.org"
      }
    EOF
  }
}
builder_mixins {
  name: "windows",
  dimensions: "os:Windows-10"
  recipe {
    properties_j: <<EOF
      $build/goma: {
        "enable_ats": true,
        "rpc_extra_params": "?prod",
        "server_host": "goma.chromium.org"
      }
    EOF
  }
}
builder_mixins {
  name: "mac"
  dimensions: "os:Mac-10.15"
  caches: {   # cache for depot_tools.osx_sdk recipe module
    name: "osx_sdk"
    path: "osx_sdk"
  }
  recipe {
    properties_j: <<EOF
      $build/goma: {
        "rpc_extra_params": "?prod",
        "server_host": "goma.chromium.org"
      }
    EOF
  }
}

buckets {
  name: "luci.dawn.ci"
  acl_sets: "ci"

  swarming {
    hostname: "chromium-swarm.appspot.com"
    builder_defaults {
      dimensions: "pool:luci.flex.ci"
      # We have 32bit test configurations but some of our toolchain is 64bit (like CIPD)
      dimensions: "cpu:x86-64"
      caches {
        path: "win_toolchain"
        name: "win_toolchain"
      }
      recipe {
        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
        cipd_version: "refs/heads/master"
        name: "dawn"
      }
      service_account: "dawn-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
    }

    # Linux: test combinations of {clang}x{release,debug}x{x86,x64}
    builders {
      name: "linux-clang-dbg-x64"
      mixins: "linux"
      mixins: "debug"
      mixins: "x64"
    }
    builders {
      name: "linux-clang-dbg-x86"
      mixins: "linux"
      mixins: "debug"
      mixins: "x86"
    }
    builders {
      name: "linux-clang-rel-x64"
      mixins: "linux"
      mixins: "release"
      mixins: "x64"
    }
    builders {
      name: "linux-clang-rel-x86"
      mixins: "linux"
      mixins: "release"
      mixins: "x86"
    }

    # Mac: unlike Linux we only need to test x64 (and only clang too)
    builders {
      name: "mac-dbg"
      mixins: "mac"
      mixins: "debug"
    }
    builders {
      name: "mac-rel"
      mixins: "mac"
      mixins: "release"
    }

    # Windows: test combinations of {clang,msvc}x{release,debug}x{x86,x64}
    # but limit msvc to x64
    builders {
      name: "win-clang-dbg-x64"
      mixins: "windows"
      mixins: "clang"
      mixins: "debug"
      mixins: "x64"
    }
    builders {
      name: "win-clang-dbg-x86"
      mixins: "windows"
      mixins: "clang"
      mixins: "debug"
      mixins: "x86"
    }
    builders {
      name: "win-clang-rel-x64"
      mixins: "windows"
      mixins: "clang"
      mixins: "release"
      mixins: "x64"
    }
    builders {
      name: "win-clang-rel-x86"
      mixins: "windows"
      mixins: "clang"
      mixins: "release"
      mixins: "x86"
    }
    # GOMA doesn't support MSVC builds so we don't used the "windows" mixin and
    # instead list the dimensions: "os:Windows-10" directly.
    builders {
      name: "win-msvc-dbg-x64"
      dimensions: "os:Windows-10"
      mixins: "no_clang"
      mixins: "debug"
      mixins: "x64"
    }
    builders {
      name: "win-msvc-rel-x64"
      dimensions: "os:Windows-10"
      mixins: "no_clang"
      mixins: "release"
      mixins: "x64"
    }
  }
}

buckets: {
  name: "luci.dawn.try"
  acl_sets: "try"

  swarming {
    hostname: "chromium-swarm.appspot.com"

    builder_defaults {
      dimensions: "pool:luci.flex.try"
      # We have 32bit test configurations but some of our toolchain is 64bit (like CIPD)
      dimensions: "cpu:x86-64"
      caches {
        path: "win_toolchain"
        name: "win_toolchain"
      }
      recipe {
        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
        cipd_version: "refs/heads/master"
        name: "dawn"
        properties_j: "$depot_tools/bot_update:{\"apply_patch_on_gclient\":true}"
      }
      service_account: "dawn-try-builder@chops-service-accounts.iam.gserviceaccount.com"
    }

    builders {
      name: "presubmit"
      dimensions: "os:Ubuntu-16.04"
      recipe {
        name: "run_presubmit"
        properties: "repo_name:dawn"
        properties_j: "runhooks:true"
      }
    }

    # A subset of the CI configurations are used for the CQ. We still mirror
    # the CI builders here so we can trigger tryjobs on their specific
    # configuration.

    # CI Mirror only
    builders {
      name: "linux-clang-dbg-x64"
      mixins: "linux"
      mixins: "debug"
      mixins: "x64"
    }
    # Actually on the CQ
    builders {
      name: "linux-clang-dbg-x86"
      mixins: "linux"
      mixins: "debug"
      mixins: "x86"
    }
    # Actually on the CQ
    builders {
      name: "linux-clang-rel-x64"
      mixins: "linux"
      mixins: "release"
      mixins: "x64"
    }
    # Actually on the CQ
    builders {
      name: "linux-clang-rel-x86"
      mixins: "linux"
      mixins: "release"
      mixins: "x86"
    }

    # Actually on the CQ
    builders {
      name: "mac-dbg"
      mixins: "mac"
      mixins: "debug"
    }
    # Actually on the CQ
    builders {
      name: "mac-rel"
      mixins: "mac"
      mixins: "release"
    }

    # Actually on the CQ
    builders {
      name: "win-clang-dbg-x64"
      mixins: "windows"
      mixins: "clang"
      mixins: "debug"
      mixins: "x64"
    }
    # Actually on the CQ
    builders {
      name: "win-clang-dbg-x86"
      mixins: "windows"
      mixins: "clang"
      mixins: "debug"
      mixins: "x86"
    }
    # Actually on the CQ
    builders {
      name: "win-clang-rel-x64"
      mixins: "windows"
      mixins: "clang"
      mixins: "release"
      mixins: "x64"
    }
    # CI Mirror only
    builders {
      name: "win-clang-rel-x86"
      mixins: "windows"
      mixins: "clang"
      mixins: "release"
      mixins: "x86"
    }
    # GOMA doesn't support MSVC builds so we don't used the "windows" mixin and
    # instead list the dimensions: "os:Windows-10" directly.
    # CI Mirror only
    builders {
      name: "win-msvc-dbg-x64"
      dimensions: "os:Windows-10"
      mixins: "no_clang"
      mixins: "debug"
      mixins: "x64"
    }
    # CI Mirror only
    builders {
      name: "win-msvc-rel-x64"
      dimensions: "os:Windows-10"
      mixins: "no_clang"
      mixins: "release"
      mixins: "x64"
    }
  }
}
