1# This file is rendered via JSON-e in a hook with context:
2#   {
3#     tasks_for: 'hg-push',
4#     push: {owner, pushlog_id, pushdate},
5#     repository: {url, project, level},
6#     now,
7#     ownTaskId: // taskId of the task that will be created
8#   }
9---
10version: 1
11tasks:
12  - $let:
13      # sometimes the push user is just `ffxbld` or the like, but we want an
14      # email-like field..
15      ownerEmail:
16        $if: '"@" in push.owner'
17        then: '${push.owner}'
18        else: '${push.owner}@noreply.mozilla.org'
19      # ensure there's no trailing `/` on the repo URL
20      repoUrl:
21        $if: 'repository.url[-1] == "/"'
22        then: {$eval: 'repository.url[:-1]'}
23        else: {$eval: 'repository.url'}
24      # scheduler id
25      schedulerId: 'nss-level-${repository.level}'
26    in:
27      taskId: '${ownTaskId}'
28      taskGroupId: '${ownTaskId}'
29      schedulerId: '${schedulerId}'
30      created: {$fromNow: ''}
31      deadline: {$fromNow: '1 day'}
32      expires: {$fromNow: '14 days'}
33
34      metadata:
35        owner: mozilla-taskcluster-maintenance@mozilla.com
36        source: "${repository.url}"
37        name: "NSS Decision Task"
38        description: |
39            The task that creates all of the other tasks in the task graph
40
41      workerType: "linux"
42      provisionerId: "nss-${repository.level}"
43
44      scopes:
45        - 'assume:repo:${repoUrl[8:]}:branch:default'
46      tags:
47        createdForUser: "${ownerEmail}"
48
49      routes:
50        - "tc-treeherder-stage.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
51        - "tc-treeherder.v2.${repository.project}.${push.revision}.${push.pushlog_id}"
52
53      payload:
54        # TODO: use nssdev org , not djmitche, once the image is pushed there
55        image: djmitche/nss-decision:0.0.3
56
57        env:
58          TC_OWNER: "${ownerEmail}"
59          TC_SOURCE: "${repository.url}"
60          TC_PROJECT: ${repository.project}
61          TC_SCHEDULER_ID: "${schedulerId}"
62          MOZ_SCM_LEVEL: "${repository.level}"
63          NSS_PUSHLOG_ID: '${push.pushlog_id}'
64          NSS_HEAD_REPOSITORY: '${repository.url}'
65          NSS_HEAD_REVISION: '${push.revision}'
66
67        maxRunTime: 1800
68
69        command:
70          - bash
71          - -cx
72          - >
73            bin/checkout.sh &&
74            nss/automation/taskcluster/scripts/extend_task_graph.sh
75
76        features:
77          taskclusterProxy: true
78
79      extra:
80        treeherder:
81          symbol: D
82          build:
83            platform: nss-decision
84          machine:
85            platform: nss-decision
86