core.project(
    name = 'infra.git',

    buildbucket = 'cr-buildbucket.appspot.com',
    logdog = 'luci-logdog.appspot.com',
    scheduler = 'luci-scheduler.appspot.com',
    swarming = 'chromium-swarm.appspot.com',

    acls = [
        acl.entry(
            roles = [
                acl.PROJECT_CONFIGS_READER,
                acl.LOGDOG_READER,
                acl.BUILDBUCKET_READER,
                acl.SCHEDULER_READER,
            ],
            groups = ['all'],
        ),
        acl.entry(
            roles = [
                acl.BUILDBUCKET_OWNER,
                acl.SCHEDULER_OWNER,
            ],
            groups = ['admins'],
        ),
    ],
)

core.logdog(gs_bucket = 'chromium-luci-logdog')


# Recipes.

core.recipe(
    name = 'main/recipe',
    cipd_package = 'recipe/bundles/main',
)


# CI bucket.

core.bucket(
    name = 'ci',

    # Allow developers to force-launch CI builds through Scheduler, but not
    # directly through Buildbucket. The direct access to Buildbucket allows to
    # override almost all aspects of the builds (e.g. what recipe is used),
    # and Buildbucket totally ignores any concurrency limitations set in the
    # LUCI Scheduler configs. This makes direct Buildbucket access to CI buckets
    # dangerous. They usually have very small pool of machines, and these
    # machines are assumed to be running only "approved" code (being post-submit
    # builders).
    acls = [
        acl.entry(acl.SCHEDULER_TRIGGERER, groups = ['devs']),
    ],
)

core.gitiles_poller(
    name = 'master-poller',
    bucket = 'ci',
    repo = 'https://noop.com',
    refs = ['refs/heads/master', 'refs/tags/blah'],
    refs_regexps = ['refs/branch-heads/\d+\.\d+'],
    schedule = 'with 10s interval',
)

core.builder(
    name = 'linux ci builder',
    bucket = 'ci',
    recipe = 'main/recipe',

    triggered_by = ['master-poller'],
    triggers = ['ci/generically named builder'],

    properties = {
        'prop1': 'val1',
        'prop2': ['val2', 123],
    },
    service_account = 'builder@example.com',

    caches = [
        swarming.cache('path1'),
        swarming.cache('path2', name='name2'),
        swarming.cache('path3', name='name3', wait_for_warm_cache=10*time.minute),
    ],
    execution_timeout = 3 * time.hour,

    dimensions = {
        'os': 'Linux',
        'builder': 'linux ci builder',  # no auto_builder_dimension
        'prefer_if_available': [
            swarming.dimension('first-choice', expiration=5*time.minute),
            swarming.dimension('fallback'),
        ],
    },
    priority = 80,
    swarming_tags = ['tag1:val1', 'tag2:val2'],
    expiration_timeout = time.hour,
    build_numbers = True,

    triggering_policy = scheduler.greedy_batching(
        max_concurrent_invocations=5,
        max_batch_size=10,
    )
)

core.builder(
    name = 'generically named builder',
    bucket = 'ci',
    recipe = 'main/recipe',

    triggered_by = ['master-poller'],
)

core.builder(
    name = 'cron builder',
    bucket = 'ci',
    recipe = 'main/recipe',
    schedule = '0 6 * * *',
)


# Try bucket.

core.bucket(
    name = 'try',

    # Allow developers to launch try jobs directly with whatever parameters
    # they want. Try bucket is basically a free build farm for all developers.
    acls = [
        acl.entry(acl.BUILDBUCKET_TRIGGERER, groups='devs'),
    ],
)

core.builder(
    name = 'linux try builder',
    bucket = 'try',
    recipe = 'main/recipe',
)

core.builder(
    name = 'generically named builder',
    bucket = 'try',
    recipe = 'main/recipe',
)


# Expect configs:
#
# === cr-buildbucket.cfg
# buckets: <
#   name: "ci"
#   acl_sets: "ci"
#   swarming: <
#     builders: <
#       name: "cron builder"
#       swarming_host: "chromium-swarm.appspot.com"
#       recipe: <
#         name: "main/recipe"
#         cipd_package: "recipe/bundles/main"
#         cipd_version: "refs/heads/master"
#       >
#     >
#     builders: <
#       name: "generically named builder"
#       swarming_host: "chromium-swarm.appspot.com"
#       recipe: <
#         name: "main/recipe"
#         cipd_package: "recipe/bundles/main"
#         cipd_version: "refs/heads/master"
#       >
#     >
#     builders: <
#       name: "linux ci builder"
#       swarming_host: "chromium-swarm.appspot.com"
#       swarming_tags: "tag1:val1"
#       swarming_tags: "tag2:val2"
#       dimensions: "builder:linux ci builder"
#       dimensions: "os:Linux"
#       dimensions: "300:prefer_if_available:first-choice"
#       dimensions: "prefer_if_available:fallback"
#       recipe: <
#         name: "main/recipe"
#         cipd_package: "recipe/bundles/main"
#         cipd_version: "refs/heads/master"
#         properties_j: "prop1:\"val1\""
#         properties_j: "prop2:[\"val2\",123]"
#       >
#       priority: 80
#       execution_timeout_secs: 10800
#       expiration_secs: 3600
#       caches: <
#         name: "name2"
#         path: "path2"
#       >
#       caches: <
#         name: "name3"
#         path: "path3"
#         wait_for_warm_cache_secs: 600
#       >
#       caches: <
#         name: "path1"
#         path: "path1"
#       >
#       build_numbers: YES
#       service_account: "builder@example.com"
#     >
#   >
# >
# buckets: <
#   name: "try"
#   acl_sets: "try"
#   swarming: <
#     builders: <
#       name: "generically named builder"
#       swarming_host: "chromium-swarm.appspot.com"
#       recipe: <
#         name: "main/recipe"
#         cipd_package: "recipe/bundles/main"
#         cipd_version: "refs/heads/master"
#       >
#     >
#     builders: <
#       name: "linux try builder"
#       swarming_host: "chromium-swarm.appspot.com"
#       recipe: <
#         name: "main/recipe"
#         cipd_package: "recipe/bundles/main"
#         cipd_version: "refs/heads/master"
#       >
#     >
#   >
# >
# acl_sets: <
#   name: "ci"
#   acls: <
#     role: WRITER
#     group: "admins"
#   >
#   acls: <
#     group: "all"
#   >
# >
# acl_sets: <
#   name: "try"
#   acls: <
#     role: WRITER
#     group: "admins"
#   >
#   acls: <
#     group: "all"
#   >
#   acls: <
#     role: SCHEDULER
#     group: "devs"
#   >
# >
# ===
#
# === luci-logdog.cfg
# reader_auth_groups: "all"
# archive_gs_bucket: "chromium-luci-logdog"
# ===
#
# === luci-scheduler.cfg
# job: <
#   id: "cron builder"
#   schedule: "0 6 * * *"
#   acl_sets: "ci"
#   buildbucket: <
#     server: "cr-buildbucket.appspot.com"
#     bucket: "ci"
#     builder: "cron builder"
#   >
# >
# job: <
#   id: "generically named builder"
#   acls: <
#     role: TRIGGERER
#     granted_to: "builder@example.com"
#   >
#   acl_sets: "ci"
#   buildbucket: <
#     server: "cr-buildbucket.appspot.com"
#     bucket: "ci"
#     builder: "generically named builder"
#   >
# >
# job: <
#   id: "linux ci builder"
#   acl_sets: "ci"
#   triggering_policy: <
#     kind: GREEDY_BATCHING
#     max_concurrent_invocations: 5
#     max_batch_size: 10
#   >
#   buildbucket: <
#     server: "cr-buildbucket.appspot.com"
#     bucket: "ci"
#     builder: "linux ci builder"
#   >
# >
# trigger: <
#   id: "master-poller"
#   schedule: "with 10s interval"
#   acl_sets: "ci"
#   triggers: "generically named builder"
#   triggers: "linux ci builder"
#   gitiles: <
#     repo: "https://noop.com"
#     refs: "refs/heads/master"
#     refs: "refs/tags/blah"
#     refs: "regexp:refs/branch-heads/\\d+\\.\\d+"
#   >
# >
# acl_sets: <
#   name: "ci"
#   acls: <
#     role: OWNER
#     granted_to: "group:admins"
#   >
#   acls: <
#     granted_to: "group:all"
#   >
#   acls: <
#     role: TRIGGERER
#     granted_to: "group:devs"
#   >
# >
# ===
#
# === project.cfg
# name: "infra.git"
# access: "group:all"
# ===
