# 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-tint-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
      $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.tint.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: "tint"
      }
      service_account: "tint-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.tint.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: "tint"
        properties_j: "$depot_tools/bot_update:{\"apply_patch_on_gclient\":true}"
      }
      service_account: "tint-try-builder@chops-service-accounts.iam.gserviceaccount.com"
    }

    builders {
      name: "presubmit"
      dimensions: "os:Ubuntu-16.04"
      recipe {
        name: "run_presubmit"
        properties: "repo_name:tint"
        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"
    }
  }
}