Bug 1486970 - Create revision and pushlog-id index routes for cron decision tasks. r=dustin,aki
☠☠ backed out by 32089e2911b7 ☠ ☠
authorJustin Wood <Callek@gmail.com>
Thu, 13 Sep 2018 02:32:05 +0000
changeset 436142 79d78bba6f6871cf37fe793e26aa1e5ae33d8125
parent 436141 224045731c6f2cf9f8905755937a542818f3b316
child 436143 a238b0434c9718357c7569b124f3be97f0564806
push id34630
push usernerli@mozilla.com
push dateThu, 13 Sep 2018 21:58:06 +0000
treeherdermozilla-central@71736f1f0f3e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdustin, aki
bugs1486970
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1486970 - Create revision and pushlog-id index routes for cron decision tasks. r=dustin,aki This hardcodes the push info in .taskgraph.yml for cron so that we don't break Chain Of Trust (signing) on other branches (uplifts) when we adjust scriptworker to start passing in this data to json-e. This allows us to incrementally roll this out without needing a flag day, and will be needed on all production branches. Differential Revision: https://phabricator.services.mozilla.com/D4501
.taskcluster.yml
--- a/.taskcluster.yml
+++ b/.taskcluster.yml
@@ -8,16 +8,20 @@ tasks:
   # takes place.
   - $if: 'tasks_for in ["hg-push", "action", "cron"]'
     then:
       $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'}}
+        # Hardcode cron push info for now, so that we can transition to using real values without breaking callers of Chain of Trust
+        _pushId: {$if: 'tasks_for == "cron"', then: '-1', else: {$eval: 'push.pushlog_id'}}
+        _pushDate: {$if: 'tasks_for == "cron"', then: '0', else: {$eval: 'push.pushdate'}}
+        _pushComment: {$if: 'tasks_for == "cron"', then: '', else: {$eval: 'push.comment'}}
       in:
         taskId: {$if: 'tasks_for != "action"', then: '${as_slugid("decision")}'}
         taskGroupId:
           $if: 'tasks_for == "action"'
           then:
             '${action.taskGroupId}'
           else:
             '${as_slugid("decision")}' # same as taskId; this is how automation identifies a decision tsak
@@ -58,36 +62,37 @@ tasks:
               kind: 'action-callback'
             else:
               $if: 'tasks_for == "cron"'
               then:
                 kind: cron-task
 
         routes:
           $flatten:
-            - "tc-treeherder.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
+            - "tc-treeherder.v2.${repository.project}.${push.revision}.${_pushId}"
             - $if: 'tasks_for == "hg-push"'
               then:
                 - "index.gecko.v2.${repository.project}.latest.taskgraph.decision"
                 - "index.gecko.v2.${repository.project}.revision.${push.revision}.taskgraph.decision"
-                - "index.gecko.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision"
+                - "index.gecko.v2.${repository.project}.pushlog-id.${_pushId}.decision"
                 - "notify.email.${ownerEmail}.on-failed"
                 - "notify.email.${ownerEmail}.on-exception"
                 # These are the old index routes for the decision task.
                 # They are still here so external tools that referenced them continue to work.
                 - "index.gecko.v2.${repository.project}.latest.firefox.decision"
                 - "index.gecko.v2.${repository.project}.revision.${push.revision}.firefox.decision"
               else:
                 $if: 'tasks_for == "action"'
                 then:
                 - "notify.email.taskcluster-notifications+action-task@mozilla.com.on-failed"
                 - "notify.email.taskcluster-notifications+action-task@mozilla.com.on-exception"
-                - "index.gecko.v2.${repository.project}.pushlog-id.${push.pushlog_id}.actions.${ownTaskId}"
+                - "index.gecko.v2.${repository.project}.pushlog-id.${_pushId}.actions.${ownTaskId}"
                 else:  # cron
                 - "index.gecko.v2.${repository.project}.latest.taskgraph.decision-${cron.job_name}"
+                # These are the old index routes for the decision task.
                 - "index.gecko.v2.${repository.project}.latest.firefox.decision-${cron.job_name}"
 
         scopes:
           $if: 'tasks_for == "hg-push"'
           then:
             - 'assume:repo:${repoUrl[8:]}:branch:default'
             - 'queue:route:notify.email.${ownerEmail}.*'
             - 'in-tree:hook-action:project-gecko/in-tree-action-${repository.level}-*'
@@ -109,17 +114,17 @@ tasks:
           env:
             # checkout-gecko uses these to check out the source; the inputs
             # to `mach taskgraph decision` are all on the command line.
             $merge:
               - 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: {$if: 'tasks_for != "action"', then: '${push.comment}'}
+                GECKO_COMMIT_MSG: {$if: 'tasks_for != "action"', then: '${_pushComment}'}
                 HG_STORE_PATH: /builds/worker/checkouts/hg-store
                 TASKCLUSTER_CACHES: /builds/worker/checkouts
               - $if: 'tasks_for == "action"'
                 then:
                   ACTION_TASK_GROUP_ID: '${action.taskGroupId}'     # taskGroupId of the target task
                   ACTION_TASK_ID: {$json: {$eval: 'taskId'}} # taskId of the target task (JSON-encoded)
                   ACTION_INPUT: {$json: {$eval: 'input'}}
                   ACTION_CALLBACK: '${action.cb_name}'
@@ -152,18 +157,18 @@ tasks:
                 then: >
                   cd /builds/worker/checkouts/gecko &&
                   ln -s /builds/worker/artifacts artifacts &&
                   ./mach --log-no-times taskgraph action-callback
                 else: >
                   cd /builds/worker/checkouts/gecko &&
                   ln -s /builds/worker/artifacts artifacts &&
                   ./mach --log-no-times taskgraph decision
-                  --pushlog-id='${push.pushlog_id}'
-                  --pushdate='${push.pushdate}'
+                  --pushlog-id='${_pushId}'
+                  --pushdate='${_pushDate}'
                   --project='${repository.project}'
                   --message="$GECKO_COMMIT_MSG"
                   --owner='${ownerEmail}'
                   --level='${repository.level}'
                   --base-repository="$GECKO_BASE_REPOSITORY"
                   --head-repository="$GECKO_HEAD_REPOSITORY"
                   --head-ref="$GECKO_HEAD_REF"
                   --head-rev="$GECKO_HEAD_REV"