# 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"
  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
      $depot_tools/osx_sdk: {
        "sdk_version": "11b52"
      }
    EOF
    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" directly.
    builders {
      name: "win-msvc-dbg-x64"
      dimensions: "os:Windows"
      mixins: "no_clang"
      mixins: "debug"
      mixins: "x64"
    }
    builders {
      name: "win-msvc-rel-x64"
      dimensions: "os:Windows"
      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" directly.
    # CI Mirror only
    builders {
      name: "win-msvc-dbg-x64"
      dimensions: "os:Windows"
      mixins: "no_clang"
      mixins: "debug"
      mixins: "x64"
    }
    # CI Mirror only
    builders {
      name: "win-msvc-rel-x64"
      dimensions: "os:Windows"
      mixins: "no_clang"
      mixins: "release"
      mixins: "x64"
    }
  }
}
