No bug - Fix YAML linting errors exposed by bug 1600904; rs=white-space-only
authorGeoff Lankow <geoff@darktrojan.net>
Wed, 11 Dec 2019 17:49:59 +1300
changeset 37734 0ccbdc62b6cd9839a3743c5bdfffe73d2730ba74
parent 37733 8315ea31d2a6b01bd59b3f7a58244f0cb96226bc
child 37735 df3dbb04dd384e4c8fd7a7e01f28bde758646bb2
push id397
push userclokep@gmail.com
push dateMon, 10 Feb 2020 21:16:13 +0000
reviewerswhite-space-only
bugs1600904
No bug - Fix YAML linting errors exposed by bug 1600904; rs=white-space-only
.taskcluster.yml
--- a/.taskcluster.yml
+++ b/.taskcluster.yml
@@ -48,259 +48,259 @@
 #     taskGroupId, // targetted taskGroupId
 #     action: {name, title, description, taskGroupId, symbol, repo_scope, cb_name}
 #     ownTaskId:   // taskId of the task that will be created
 #     clientId:    // clientId that triggered this hook
 #   }
 
 version: 1
 tasks:
-  # NOTE: support for actions in ci-admin requires that the `tasks` property be an array *before* JSON-e rendering
-  # 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'}}
-        # expire try-comm-central earlier than other branches
-        expires:
-          $if: 'repository.project == "try-comm-central"'
-          then: {$fromNow: '28 days'}
-          else: {$fromNow: '1 year'}
-      in:
-        taskId: {$if: 'tasks_for != "action"', then: '${ownTaskId}'}
-        taskGroupId:
-          $if: 'tasks_for == "action"'
-          then:
-            '${action.taskGroupId}'
-          else:
-            '${ownTaskId}' # same as taskId; this is how automation identifies a decision tsak
-        schedulerId: 'comm-level-${repository.level}'
-
-        created: {$fromNow: ''}
-        deadline: {$fromNow: '1 day'}
-        expires: {$eval: 'expires'}
-        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:
-                $if: 'tasks_for == "action"'
-                then:
-                  name: "Action: ${action.title}"
-                  description: |
-                      ${action.description}
-
-                      Action triggered by clientID `${clientId}`
-                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: "comm-${repository.level}"
-        workerType: "decision"
+    # NOTE: support for actions in ci-admin requires that the `tasks` property be an array *before* JSON-e rendering
+    # 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'}}
+              # expire try-comm-central earlier than other branches
+              expires:
+                  $if: 'repository.project == "try-comm-central"'
+                  then: {$fromNow: '28 days'}
+                  else: {$fromNow: '1 year'}
+          in:
+              taskId: {$if: 'tasks_for != "action"', then: '${ownTaskId}'}
+              taskGroupId:
+                  $if: 'tasks_for == "action"'
+                  then:
+                      '${action.taskGroupId}'
+                  else:
+                      '${ownTaskId}'  # same as taskId; this is how automation identifies a decision tsak
+              schedulerId: 'comm-level-${repository.level}'
 
-        tags:
-          $if: 'tasks_for == "hg-push"'
-          then:
-            createdForUser: "${ownerEmail}"
-            kind: decision-task
-          else:
-            $if: 'tasks_for == "action"'
-            then:
-              createdForUser: '${ownerEmail}'
-              kind: 'action-callback'
-            else:
-              $if: 'tasks_for == "cron"'
-              then:
-                kind: cron-task
+              created: {$fromNow: ''}
+              deadline: {$fromNow: '1 day'}
+              expires: {$eval: 'expires'}
+              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:
+                            $if: 'tasks_for == "action"'
+                            then:
+                                name: "Action: ${action.title}"
+                                description: |
+                                        ${action.description}
 
-        routes:
-          $flattenDeep:
-            - "tc-treeherder.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
-            - $if: 'tasks_for == "hg-push"'
-              then:
-                - "index.comm.v2.${repository.project}.latest.taskgraph.decision"
-                - "index.comm.v2.${repository.project}.revision.${push.revision}.taskgraph.decision"
-                - "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision"
-                - "notify.email.${ownerEmail}.on-failed"
-                - "notify.email.${ownerEmail}.on-exception"
-              else:
-                $if: 'tasks_for == "action"'
-                then:
-                - "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.actions.${ownTaskId}"
-                else:  # cron
-                - "index.comm.v2.${repository.project}.latest.taskgraph.decision-${cron.job_name}"
-                - "index.comm.v2.${repository.project}.revision.${push.revision}.taskgraph.decision-${cron.job_name}"
-                - "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision-${cron.job_name}"
-                # list each cron task on this revision, so actions can find them
-                - 'index.comm.v2.${repository.project}.revision.${push.revision}.cron.${ownTaskId}'
-                # Notify tb-builds by email if a nightly hook fails
-                - $if: 'repository.project != "try-comm-central"'
-                  then:
-                  - "notify.email.tb-builds@thunderbird.net.on-failed"
-                  - "notify.email.tb-builds@thunderbird.net.on-exception"
-
-        scopes:
-          $if: 'tasks_for == "hg-push"'
-          then:
-            - 'assume:repo:${repoUrl[8:]}:branch:default'
-            - 'queue:route:notify.email.${ownerEmail}.*'
-            - 'in-tree:hook-action:project-comm/in-tree-action-${repository.level}-*'
-          else:
-            $if: 'tasks_for == "action"'
-            then:
-              # when all actions are hooks, we can calculate this directly rather than using a variable
-              - '${action.repo_scope}'
-            else:
-              - 'assume:repo:${repoUrl[8:]}:cron:${cron.job_name}'
-
-        dependencies: []
-        requires: all-completed
+                                        Action triggered by clientID `${clientId}`
+                            else:
+                                name: "Decision Task for cron job ${cron.job_name}"
+                                description: 'Created by a [cron task](https://tools.taskcluster.net/tasks/${cron.task_id})'
 
-        priority:
-          # Most times, there is plenty of worker capacity so everything runs
-          # quickly, but sometimes a storm of action tasks lands.  Then we
-          # want, from highest to lowest:
-          # - cron tasks (time-sensitive) (low)
-          # - action tasks (avoid interfering with the other two) (very-low)
-          # - decision tasks (minimize user-visible delay) (lowest)
-          # SCM levels all use different workerTypes, so there is no need for priority
-          # between levels; "low" is the highest priority available at all levels, and
-          # nothing runs at any higher priority on these workerTypes.
-          $if: "tasks_for == 'cron'"
-          then: low
-          else:
-            $if: "tasks_for == 'action'"
-            then: very-low
-            else: lowest  # tasks_for == 'hg-push'
-        retries: 5
+              provisionerId: "comm-${repository.level}"
+              workerType: "decision"
 
-        payload:
-          env:
-            # checkout-gecko uses these to check out the source; the inputs
-            # to `mach taskgraph decision` are all on the command line.
-            $merge:
-              - 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: /builds/worker/checkouts/hg-store
-                TASKCLUSTER_CACHES: /builds/worker/checkouts
-                # mach generates pyc files when reading `mach_commands.py`
-                # This causes cached_task digest generation to be random for
-                # some tasks. Disable bytecode generation to work around that.
-                PYTHONDONTWRITEBYTECODE: '1'
-                # someday, these will be provided by the worker - Bug 1492664
-                TASKCLUSTER_ROOT_URL: https://taskcluster.net
-                TASKCLUSTER_PROXY_URL: http://taskcluster
-              - $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}'
-
-          cache:
-            level-${repository.level}-checkouts-sparse-v2: /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
-          image: 'taskcluster/decision:2.2.0@sha256:cbeadf57300de60408bf1337e723f0cb1f0200f559799cb54deb9535d1e03b4a'
-
-          maxRunTime: 1800
+              tags:
+                  $if: 'tasks_for == "hg-push"'
+                  then:
+                      createdForUser: "${ownerEmail}"
+                      kind: decision-task
+                  else:
+                      $if: 'tasks_for == "action"'
+                      then:
+                          createdForUser: '${ownerEmail}'
+                          kind: 'action-callback'
+                      else:
+                          $if: 'tasks_for == "cron"'
+                          then:
+                              kind: cron-task
 
-          command:
-            - /builds/worker/bin/comm-task-env
-            - /builds/worker/bin/run-task
-            - '--gecko-checkout=/builds/worker/checkouts/gecko'
-            - '--gecko-sparse-profile=build/sparse-profiles/taskgraph'
-            - '--comm-checkout=/builds/worker/checkouts/gecko/comm'
-            - '--'
-            - bash
-            - -cx
-            - $let:
-                extraArgs: {$if: 'tasks_for == "cron"', then: '${cron.quoted_args}', else: ''}
-              in:
-                $if: 'tasks_for == "action"'
-                then: >
-                  cd /builds/worker/checkouts/gecko &&
-                  ln -s /builds/worker/artifacts artifacts &&
-                  ./mach --log-no-times taskgraph action-callback
-                  --root=comm/taskcluster/ci
-                else: >
-                  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}'
-                  --owner='${ownerEmail}'
-                  --level='${repository.level}'
-                  --tasks-for='${tasks_for}'
-                  --base-repository="$GECKO_BASE_REPOSITORY"
-                  --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"
-                  --try-task-config-file=comm/try_task_config.json
-                  ${extraArgs}
+              routes:
+                  $flattenDeep:
+                      - "tc-treeherder.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
+                      - $if: 'tasks_for == "hg-push"'
+                        then:
+                            - "index.comm.v2.${repository.project}.latest.taskgraph.decision"
+                            - "index.comm.v2.${repository.project}.revision.${push.revision}.taskgraph.decision"
+                            - "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision"
+                            - "notify.email.${ownerEmail}.on-failed"
+                            - "notify.email.${ownerEmail}.on-exception"
+                        else:
+                            $if: 'tasks_for == "action"'
+                            then:
+                                - "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.actions.${ownTaskId}"
+                            else:  # cron
+                                - "index.comm.v2.${repository.project}.latest.taskgraph.decision-${cron.job_name}"
+                                - "index.comm.v2.${repository.project}.revision.${push.revision}.taskgraph.decision-${cron.job_name}"
+                                - "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision-${cron.job_name}"
+                                # list each cron task on this revision, so actions can find them
+                                - 'index.comm.v2.${repository.project}.revision.${push.revision}.cron.${ownTaskId}'
+                                # Notify tb-builds by email if a nightly hook fails
+                                - $if: 'repository.project != "try-comm-central"'
+                                  then:
+                                      - "notify.email.tb-builds@thunderbird.net.on-failed"
+                                      - "notify.email.tb-builds@thunderbird.net.on-exception"
 
-          artifacts:
-            'public':
-              type: 'directory'
-              path: '/builds/worker/artifacts'
-              expires: {$eval: expires}
-
-        extra:
-          $merge:
-            - treeherder:
-                $merge:
-                  - machine:
-                      platform: gecko-decision
-                  - $if: 'tasks_for == "hg-push"'
-                    then:
-                      symbol: D
-                    else:
+              scopes:
+                  $if: 'tasks_for == "hg-push"'
+                  then:
+                      - 'assume:repo:${repoUrl[8:]}:branch:default'
+                      - 'queue:route:notify.email.${ownerEmail}.*'
+                      - 'in-tree:hook-action:project-comm/in-tree-action-${repository.level}-*'
+                  else:
                       $if: 'tasks_for == "action"'
                       then:
-                        groupName: 'action-callback'
-                        groupSymbol: AC
-                        symbol: "${action.symbol}"
+                          # when all actions are hooks, we can calculate this directly rather than using a variable
+                          - '${action.repo_scope}'
                       else:
-                        groupSymbol: cron
-                        symbol: "${cron.job_symbol}"
-            - $if: 'tasks_for == "action"'
-              then:
-                parent: '${action.taskGroupId}'
-                action:
-                  name: '${action.name}'
-                  context:
-                    taskGroupId: '${action.taskGroupId}'
-                    taskId: {$eval: 'taskId'}
-                    input: {$eval: 'input'}
-                    clientId: {$eval: 'clientId'}
-            - $if: 'tasks_for == "cron"'
-              then:
-                cron: {$json: {$eval: 'cron'}}
-            - tasks_for: '${tasks_for}'
-            # Email for all pushes should link to treeherder
-            - $if: 'tasks_for == "hg-push"'
-              then:
-                notify:
-                  email:
-                    $merge:
-                      - link:
-                          text: "Treeherder Jobs"
-                          href: "https://treeherder.mozilla.org/#/jobs?repo=${repository.project}&revision=${push.revision}"
+                          - 'assume:repo:${repoUrl[8:]}:cron:${cron.job_name}'
+
+              dependencies: []
+              requires: all-completed
+
+              priority:
+                  # Most times, there is plenty of worker capacity so everything runs
+                  # quickly, but sometimes a storm of action tasks lands.  Then we
+                  # want, from highest to lowest:
+                  # - cron tasks (time-sensitive) (low)
+                  # - action tasks (avoid interfering with the other two) (very-low)
+                  # - decision tasks (minimize user-visible delay) (lowest)
+                  # SCM levels all use different workerTypes, so there is no need for priority
+                  # between levels; "low" is the highest priority available at all levels, and
+                  # nothing runs at any higher priority on these workerTypes.
+                  $if: "tasks_for == 'cron'"
+                  then: low
+                  else:
+                      $if: "tasks_for == 'action'"
+                      then: very-low
+                      else: lowest  # tasks_for == 'hg-push'
+              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.
+                      $merge:
+                          - 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: /builds/worker/checkouts/hg-store
+                            TASKCLUSTER_CACHES: /builds/worker/checkouts
+                            # mach generates pyc files when reading `mach_commands.py`
+                            # This causes cached_task digest generation to be random for
+                            # some tasks. Disable bytecode generation to work around that.
+                            PYTHONDONTWRITEBYTECODE: '1'
+                            # someday, these will be provided by the worker - Bug 1492664
+                            TASKCLUSTER_ROOT_URL: https://taskcluster.net
+                            TASKCLUSTER_PROXY_URL: http://taskcluster
+                          - $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}'
+
+                  cache:
+                      level-${repository.level}-checkouts-sparse-v2: /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
+                  image: 'taskcluster/decision:2.2.0@sha256:cbeadf57300de60408bf1337e723f0cb1f0200f559799cb54deb9535d1e03b4a'
+
+                  maxRunTime: 1800
+
+                  command:
+                      - /builds/worker/bin/comm-task-env
+                      - /builds/worker/bin/run-task
+                      - '--gecko-checkout=/builds/worker/checkouts/gecko'
+                      - '--gecko-sparse-profile=build/sparse-profiles/taskgraph'
+                      - '--comm-checkout=/builds/worker/checkouts/gecko/comm'
+                      - '--'
+                      - bash
+                      - -cx
+                      - $let:
+                            extraArgs: {$if: 'tasks_for == "cron"', then: '${cron.quoted_args}', else: ''}
+                        in:
+                            $if: 'tasks_for == "action"'
+                            then: >
+                                cd /builds/worker/checkouts/gecko &&
+                                ln -s /builds/worker/artifacts artifacts &&
+                                ./mach --log-no-times taskgraph action-callback
+                                --root=comm/taskcluster/ci
+                            else: >
+                                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}'
+                                --owner='${ownerEmail}'
+                                --level='${repository.level}'
+                                --tasks-for='${tasks_for}'
+                                --base-repository="$GECKO_BASE_REPOSITORY"
+                                --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"
+                                --try-task-config-file=comm/try_task_config.json
+                                ${extraArgs}
+
+                  artifacts:
+                      'public':
+                          type: 'directory'
+                          path: '/builds/worker/artifacts'
+                          expires: {$eval: expires}
+
+              extra:
+                  $merge:
+                      - treeherder:
+                            $merge:
+                                - machine:
+                                      platform: gecko-decision
+                                - $if: 'tasks_for == "hg-push"'
+                                  then:
+                                      symbol: D
+                                  else:
+                                      $if: 'tasks_for == "action"'
+                                      then:
+                                          groupName: 'action-callback'
+                                          groupSymbol: AC
+                                          symbol: "${action.symbol}"
+                                      else:
+                                          groupSymbol: cron
+                                          symbol: "${cron.job_symbol}"
+                      - $if: 'tasks_for == "action"'
+                        then:
+                            parent: '${action.taskGroupId}'
+                            action:
+                                name: '${action.name}'
+                                context:
+                                    taskGroupId: '${action.taskGroupId}'
+                                    taskId: {$eval: 'taskId'}
+                                    input: {$eval: 'input'}
+                                    clientId: {$eval: 'clientId'}
+                      - $if: 'tasks_for == "cron"'
+                        then:
+                            cron: {$json: {$eval: 'cron'}}
+                      - tasks_for: '${tasks_for}'
+                      # Email for all pushes should link to treeherder
+                      - $if: 'tasks_for == "hg-push"'
+                        then:
+                            notify:
+                                email:
+                                    $merge:
+                                        - link:
+                                              text: "Treeherder Jobs"
+                                              href: "https://treeherder.mozilla.org/#/jobs?repo=${repository.project}&revision=${push.revision}"