.taskcluster.yml
author tbirdbld
Sat, 20 Jan 2018 03:10:37 -0800
changeset 29441 50e458e3793c170be04c8561a281d75651685b67
parent 29370 00e527d74ef26e8f974f74b4a97676e5e0eb32b5
child 29691 9cf3c079320c1501a66a2b11655f8652e49db53c
permissions -rw-r--r--
No bug, Automated blocklist update from host bld-linux64-spot-326 - a=blocklist-update

---
# This file is rendered via JSON-e by
# - mozilla-taskcluster - https://docs.taskcluster.net/reference/integrations/mozilla-taskcluster/docs/taskcluster-yml

version: 1

tasks:
  $let:
    # sometimes the push user is just `ffxbld` or the like, but we want an email-like field..
    ownerEmail: {$if: '"@" in push.owner', then: '${push.owner}', else: '${push.owner}@noreply.mozilla.org'}
    # ensure there's no trailing `/` on the repo URL
    repoUrl: {$if: 'repository.url[-1] == "/"', then: {$eval: 'repository.url[:-1]'}, else: {$eval: 'repository.url'}}
  in:
  - taskId: '${as_slugid("decision")}'
    taskGroupId: '${as_slugid("decision")}' # same as taskId; this is how automation identifies a decision tsak
    schedulerId: 'gecko-level-${repository.level}'

    created: {$fromNow: ''}
    deadline: {$fromNow: '1 day'}
    expires: {$fromNow: '1 year 1 second'} # 1 second so artifacts expire first, despite rounding errors

    metadata:
      $merge:
        - owner: "${ownerEmail}"
          source: "${repoUrl}/raw-file/${push.revision}/.taskcluster.yml"
        - $if: 'tasks_for == "hg-push"'
          then:
            name: "Thunderbird Decision Task"
            description: 'The task that creates all of the other tasks in the task graph'
          else:
            name: "Decision Task for cron job ${cron.job_name}"
            description: 'Created by a [cron task](https://tools.taskcluster.net/tasks/${cron.task_id})'

    provisionerId: "aws-provisioner-v1"
    workerType: "gecko-${repository.level}-decision"

    tags:
      $if: 'tasks_for == "hg-push"'
      then: {createdForUser: "${ownerEmail}"}

    routes:
      - "tc-treeherder.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
      - "tc-treeherder-stage.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
      - "notify.email.${ownerEmail}.on-failed"
      - $if: '"mozilla@hocat.ca" in ownerEmail'
        # Until taskcluster is ready for general consumption, don't report exceptions from taskcluster.
        then: "notify.email.${ownerEmail}.on-exception"

    scopes:
      - 'assume:repo:${repoUrl[8:]}:*'
      - 'queue:route:notify.email.${ownerEmail}.*'

    dependencies: []
    requires: all-completed

    priority: lowest
    retries: 5

    payload:
      env:
        $merge:
        - # checkout-gecko uses these to check out the source; the inputs
          # to `mach taskgraph decision` are all on the command line.
          GECKO_BASE_REPOSITORY: 'https://hg.mozilla.org/mozilla-unified'
          GECKO_HEAD_REPOSITORY: 'https://hg.mozilla.org/mozilla-central'
          GECKO_HEAD_REF: 'default'
          COMM_BASE_REPOSITORY: 'https://hg.mozilla.org/comm-central'
          COMM_HEAD_REPOSITORY: '${repoUrl}'
          COMM_HEAD_REF: '${push.revision}'
          COMM_HEAD_REV: '${push.revision}'
          HG_STORE_PATH: /buillds/worker/checkouts/hg-store
          TASKCLUSTER_CACHES: /builds/worker/checkouts
        - $if: '("--buildbot" in push.comment) && !("mozilla@hocat.ca" in ownerEmail)'
          then:
            # Until all buildbot platforms are supported in taskcluster, avoid
            # passing try syntax to taskcluster.
            COMM_COMMIT_MSG: 'try: ignored'
          else:
            COMM_COMMIT_MSG: '${push.comment}'

      cache:
        level-${repository.level}-checkouts-sparse-v1: /builds/worker/checkouts

      features:
        taskclusterProxy: true
        chainOfTrust: true

      # Note: This task is built server side without the context or tooling that
      # exist in tree so we must hard code the hash
      # XXX Changing this will break Chain of Trust without an associated puppet and
      # scriptworker patch!
      image: 'taskcluster/decision:2.0.0@sha256:4039fd878e5700b326d4a636e28c595c053fbcb53909c1db84ad1f513cf644ef'

      maxRunTime: 1800

      # TODO use mozilla-unified for the base repository once the tc-vcs
      # tar.gz archives are created or tc-vcs isn't being used.
      command:
        - /builds/worker/bin/run-task
        - '--vcs-checkout=/builds/worker/checkouts/gecko'
        - '--sparse-profile=build/sparse-profiles/taskgraph'
        - '--comm-checkout=/builds/worker/checkouts/gecko/comm'
        - '--'
        - bash
        - -cx
        - >
            cd /builds/worker/checkouts/gecko &&
            ln -s /builds/worker/artifacts artifacts &&
            ./mach --log-no-times taskgraph decision
            --root comm/taskcluster/ci
            --pushlog-id='${push.pushlog_id}'
            --pushdate='${push.pushdate}'
            --project='${repository.project}'
            --message="$COMM_COMMIT_MSG"
            --owner='${ownerEmail}'
            --level='${repository.level}'
            --base-repository='https://hg.mozilla.org/mozilla-central'
            --head-repository="$GECKO_HEAD_REPOSITORY"
            --head-ref="$GECKO_HEAD_REF"
            --head-rev="$GECKO_HEAD_REV"
            --comm-base-repository="$COMM_BASE_REPOSITORY"
            --comm-head-repository="$COMM_HEAD_REPOSITORY"
            --comm-head-ref="$COMM_HEAD_REF"
            --comm-head-rev="$COMM_HEAD_REV"

      artifacts:
        'public':
          type: 'directory'
          path: '/builds/worker/artifacts'
          expires: {$fromNow: '1 year'}

    extra:
      treeherder:
        symbol: D
        machine:
          platform: gecko-decision