.taskcluster.yml
author Samael Wang <freesamael@gmail.com>
Fri, 11 Aug 2017 14:49:09 +0800
changeset 413793 1f8a03070122f8c5fa92ebe76478dcd0b2b1a357
parent 413573 bad2c7bdb5c76501f66023211a51871818b87f61
child 414562 081f830cf28595829373dcdd04c2a90906cac043
permissions -rw-r--r--
Bug 1375833 - Part 2: Set mHistoryID to aSHEntry->DocshellID() in both reload and history navigation. r=smaug The root cause of bug 1326845 is that reloading would apply frame history entries without setting new child docshells' mHistoryID to the entrys' DocshellID. So SHistory can not find corresponding entries for subframes in a consequent GoBack(), and cause history navigation being broken (it would return NS_ERROR_FAILURE). MozReview-Commit-ID: 6syGYkoP1eZ

# This file is rendered via JSON-e by
# - mozilla-taskcluster - https://docs.taskcluster.net/reference/integrations/mozilla-taskcluster/docs/taskcluster-yml
# - cron tasks - taskcluster/taskgraph/cron/decision.py
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 tsakId; 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: "Gecko 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:
      $if: 'tasks_for == "hg-push"'
      then:
        - "index.gecko.v2.${repository.project}.latest.firefox.decision"
        - "index.gecko.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision"
        - "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"
        - "notify.email.${ownerEmail}.on-exception"
      else:
        - "index.gecko.v2.${repository.project}.latest.firefox.decision-${cron.job_name}"
        - "tc-treeherder.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
        - "tc-treeherder-stage.v2.${repository.project}.${push.revision}.${push.pushlog_id}"

    scopes:
      $if: 'tasks_for == "hg-push"'
      then:
        - 'assume:repo:${repoUrl[8:]}:*'
        - 'queue:route:notify.email.${ownerEmail}.*'
      else:
        - 'assume:repo:${repoUrl[8:]}:cron:${cron.job_name}'

    dependencies: []
    requires: all-completed

    priority: lowest
    retries: 5

    payload:
      env:
        # 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: '${repoUrl}'
        GECKO_HEAD_REF: '${push.revision}'
        GECKO_HEAD_REV: '${push.revision}'
        GECKO_COMMIT_MSG: '${push.comment}'
        HG_STORE_PATH: /home/worker/checkouts/hg-store
        TASKCLUSTER_CACHES: /home/worker/checkouts

      cache:
        level-${repository.level}-checkouts-sparse-v1: /home/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:0.1.10@sha256:c5451ee6c655b3d97d4baa3b0e29a5115f23e0991d4f7f36d2a8f793076d6854'

      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:
        - /home/worker/bin/run-task
        - '--vcs-checkout=/home/worker/checkouts/gecko'
        - '--sparse-profile=build/sparse-profiles/taskgraph'
        - '--'
        - bash
        - -cx
        - $let:
            extraArgs: {$if: 'tasks_for == "hg-push"', then: '', else: '${cron.quoted_args}'}
          # NOTE: the explicit reference to mozilla-central below is required because android-stuff
          # still uses tc-vcs, which does not support mozilla-unified
          # https://bugzilla.mozilla.org/show_bug.cgi?id=1383973
          in: >
            cd /home/worker/checkouts/gecko &&
            ln -s /home/worker/artifacts artifacts &&
            ./mach --log-no-times taskgraph decision
            --pushlog-id='${push.pushlog_id}'
            --pushdate='${push.pushdate}'
            --project='${repository.project}'
            --message="$GECKO_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"
            ${extraArgs}

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

    extra:
      treeherder:
        $merge:
          - machine:
              platform: gecko-decision
          - $if: 'tasks_for == "hg-push"'
            then:
              symbol: D
            else:
              groupSymbol: cron
              symbol: "${cron.job_symbol}"