# Copyright 2017 The Crashpad Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# See https://luci-config.appspot.com/schemas/projects: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: WRITER
    group: "project-crashpad-admins"
  }
  acls {
    role: SCHEDULER
    identity: "luci-scheduler@appspot.gserviceaccount.com"
  }
}

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

builder_mixins {
  name: "linux"
  dimensions: "os:Ubuntu-16.04"
  recipe {
    properties: "target_os:linux"
  }
}

builder_mixins {
  name: "fuchsia"
  dimensions: "os:Ubuntu-16.04"
  recipe {
    properties: "target_os:fuchsia"
  }
}

builder_mixins {
  name: "win"
  dimensions: "os:Windows-10"
  recipe {
    properties: "target_os:win"
    # This is the correct syntax to set the property, however, the depot_tools
    # recipe needs updating to deal with a newer SDK package, so disable
    # temporarily (so that the recipe module uses its default cipd package
    # version).
    # properties_j: "$depot_tools/windows_sdk:{\"version\":\"uploaded:2021-04-28\"}"
  }
}

builder_mixins {
  name: "mac"
  dimensions: "os:Mac-10.15"
  dimensions: "cores:"  # Can be 4 or 8 cores.
  recipe {
    properties: "target_os:mac"
  }
  caches {
    name: "osx_sdk_mac"
    path: "osx_sdk"
  }
}

builder_mixins {
  name: "ios"
  dimensions: "os:Mac-10.15"
  dimensions: "cores:"  # Can be 4 or 8 cores.
  recipe {
    properties: "target_os:ios"
  }
  caches {
    name: "osx_sdk_ios"
    path: "osx_sdk"
  }
}

builder_mixins {
  name: "debug"
  recipe {
    properties: "config:Debug"
  }
}

builder_mixins {
  name: "release"
  recipe {
    properties: "config:Release"
  }
}

builder_mixins {
  name: "arm"
  recipe {
    properties: "target_cpu:arm64"
  }
}

buckets {
  name: "luci.crashpad.ci"
  acl_sets: "ci"
  swarming {
    hostname: "chromium-swarm.appspot.com"
    builder_defaults {
      dimensions: "cores:8"
      dimensions: "cpu:x86-64"
      dimensions: "pool:luci.flex.ci"
      service_account: "crashpad-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
      execution_timeout_secs: 10800  # 3h
      swarming_tags: "vpython:native-python-wrapper"
      build_numbers: YES
      recipe {
        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
        cipd_version: "refs/heads/master"
        name: "crashpad/build"
        properties_j: <<EOF
          $gatekeeper:{
            "group": "client.crashpad"
          }
        EOF
        properties_j: "$kitchen:{\"git_auth\": true, \"devshell\": true}"
      }
    }

    builders {
      name: "crashpad_fuchsia_arm64_dbg"
      mixins: "fuchsia"
      mixins: "arm"
      mixins: "debug"
    }
    builders {
      name: "crashpad_fuchsia_arm64_rel"
      mixins: "fuchsia"
      mixins: "arm"
      mixins: "release"
    }
    builders {
      name: "crashpad_fuchsia_x64_dbg"
      mixins: "fuchsia"
      mixins: "debug"
    }
    builders {
      name: "crashpad_fuchsia_x64_rel"
      mixins: "fuchsia"
      mixins: "release"
    }
    builders {
      name: "crashpad_ios_device_dbg"
      mixins: "ios"
      mixins: "arm"
      mixins: "debug"
    }
    builders {
      name: "crashpad_ios_device_rel"
      mixins: "ios"
      mixins: "arm"
      mixins: "release"
    }
    builders {
      name: "crashpad_ios_simulator_dbg"
      mixins: "ios"
      mixins: "debug"
    }
    builders {
      name: "crashpad_ios_simulator_rel"
      mixins: "ios"
      mixins: "release"
    }
    builders {
      name: "crashpad_linux_dbg"
      mixins: "linux"
      mixins: "debug"
    }
    builders {
      name: "crashpad_linux_rel"
      mixins: "linux"
      mixins: "release"
    }
    builders {
      name: "crashpad_mac_dbg"
      mixins: "mac"
      mixins: "debug"
    }
    builders {
      name: "crashpad_mac_rel"
      mixins: "mac"
      mixins: "release"
    }
    builders {
      name: "crashpad_win_dbg"
      mixins: "win"
      mixins: "debug"
    }
    builders {
      name: "crashpad_win_rel"
      mixins: "win"
      mixins: "release"
    }
  }
}

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

  swarming {
    hostname: "chromium-swarm.appspot.com"
    builder_defaults {
      dimensions: "cores:8"
      dimensions: "cpu:x86-64"
      dimensions: "pool:luci.flex.try"
      service_account: "crashpad-try-builder@chops-service-accounts.iam.gserviceaccount.com"
      execution_timeout_secs: 10800  # 3h
      swarming_tags: "vpython:native-python-wrapper"
      build_numbers: YES
      recipe {
        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
        cipd_version: "refs/heads/master"
        name: "crashpad/build"
        properties_j: "$kitchen:{\"git_auth\": true, \"devshell\": true}"
      }
    }

    builders {
      name: "crashpad_try_fuchsia_arm64_dbg"
      mixins: "fuchsia"
      mixins: "arm"
      mixins: "debug"
    }
    builders {
      name: "crashpad_try_fuchsia_arm64_rel"
      mixins: "fuchsia"
      mixins: "arm"
      mixins: "release"
    }
    builders {
      name: "crashpad_try_fuchsia_x64_dbg"
      mixins: "fuchsia"
      mixins: "debug"
    }
    builders {
      name: "crashpad_try_fuchsia_x64_rel"
      mixins: "fuchsia"
      mixins: "release"
    }
    builders {
      name: "crashpad_try_ios_device_dbg"
      mixins: "ios"
      mixins: "arm"
      mixins: "debug"
    }
    builders {
      name: "crashpad_try_ios_device_rel"
      mixins: "ios"
      mixins: "arm"
      mixins: "release"
    }
    builders {
      name: "crashpad_try_ios_simulator_dbg"
      mixins: "ios"
      mixins: "debug"
    }
    builders {
      name: "crashpad_try_ios_simulator_rel"
      mixins: "ios"
      mixins: "release"
    }
    builders {
      name: "crashpad_try_linux_dbg"
      mixins: "linux"
      mixins: "debug"
    }
    builders {
      name: "crashpad_try_linux_rel"
      mixins: "linux"
      mixins: "release"
    }
    builders {
      name: "crashpad_try_mac_dbg"
      mixins: "mac"
      mixins: "debug"
    }
    builders {
      name: "crashpad_try_mac_rel"
      mixins: "mac"
      mixins: "release"
    }
    builders {
      name: "crashpad_try_win_dbg"
      mixins: "win"
      mixins: "debug"
    }
    builders {
      name: "crashpad_try_win_rel"
      mixins: "win"
      mixins: "release"
    }
  }
}
