ReleaseEngineering/How To/Enable a branch on buildbot and taskcluster: Difference between revisions
(Created page with "This documentation provides information on how to enable a branch on buildbot and taskcluster. We will consider holly branch as example. = Buildbot steps = * Enable the bran...") |
(.) |
||
| Line 49: | Line 49: | ||
* Clone the branch from https://hg.mozilla.org/ | * Clone the branch from https://hg.mozilla.org/ | ||
Note that the holly repository can be found at https://hg.mozilla.org/projects. It can simply be done using git clone or if the repository is larger, you can follow the instructions at https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial/Bundles | Note that the holly repository can be found at https://hg.mozilla.org/projects. It can simply be done using git clone or if the repository is larger, you can follow the instructions at https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial/Bundles | ||
* Enable the branch in taskcluster by adding the branch in taskcluster/src/config/default.yml from mozilla-taskcluster git repository: | |||
<pre> | |||
holly: | |||
level: 2 | |||
scopes: | |||
- "assume:repo:hg.mozilla.org/projects/holly:*" | |||
# temporary until this scope is removed from .taskcluster.yml | |||
- "assume:repo:hg.mozilla.org/try:*" | |||
</pre> | |||
| Line 87: | Line 99: | ||
- "include nightly" refers to nightly builds. Since it is set to False it means that nightly builds are excluded. | - "include nightly" refers to nightly builds. Since it is set to False it means that nightly builds are excluded. | ||
* Enable the branch in treeherder by modifying the "active_status" flag to "active" in treeherder/model/fixtures/repository.json located in the treeherder git repository: | |||
<pre> | |||
{ | |||
"pk": 29, | |||
"model": "model.repository", | |||
"fields": { | |||
"dvcs_type": "hg", | |||
"name": "holly", | |||
"url": "https://hg.mozilla.org/projects/holly", | |||
"active_status": "active", | |||
"codebase": "gecko", | |||
"repository_group": 6, | |||
"description": "" | |||
} | |||
}, | |||
</pre> | |||
Latest revision as of 13:59, 12 June 2017
This documentation provides information on how to enable a branch on buildbot and taskcluster. We will consider holly branch as example.
Buildbot steps
- Enable the branch in /mozilla/project_branches:
'holly': {
'enable_perproduct_builds': False,
'lock_platforms': True,
'enable_opt_unittests': True,
'enable_talos': False,
'platforms': {
'macosx64': {},
'macosx64-debug': {},
},
},
Explanation:
- The name of the branch is "holly"
- As you can see it was enable for 2 platforms: "macosx64" and "macosx64-debug"
- Talos tests are disabled through "enable_talos" set to False
- Opt unit tests are enabled through "enable_opt_unittests" set to True
- "lock_platforms" stands for enabling the branch strictly to the platforms written as values for "platforms" key.
- Add the branch in <your_master>/tools/buildfarm/maintenance/production-branches.json
"holly": {
"repo": "https://hg.mozilla.org/projects/holly",
"repo_type": "hg",
"access": "scm_level_2",
"features": {
"taskcluster-cron": true,
"taskcluster-push": true
}
},
Taskcluster steps
- Clone the branch from https://hg.mozilla.org/
Note that the holly repository can be found at https://hg.mozilla.org/projects. It can simply be done using git clone or if the repository is larger, you can follow the instructions at https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial/Bundles
- Enable the branch in taskcluster by adding the branch in taskcluster/src/config/default.yml from mozilla-taskcluster git repository:
holly:
level: 2
scopes:
- "assume:repo:hg.mozilla.org/projects/holly:*"
# temporary until this scope is removed from .taskcluster.yml
- "assume:repo:hg.mozilla.org/try:*"
- Filter what builds to run on the branch by adding a new target_task to point the builds you need to <branch-name>_tasks in <branch-name>/taskcluster/taskgraph/target_tasks.py
Example for macosx64 builds:
@_target_task('holly_tasks')
def target_tasks_holly(full_task_graph, parameters):
"""Bug <no of bug> - < Summary of bug>""""
def filter(task):
platform = task.attributes.get('build_platform')
# only select macosx platforms, should really just be opt
if str(platform) not in ('macosx64'):
return False
return True
return [l for l, t in full_task_graph.tasks.iteritems() if filter(t)]
- The branch needs to be added to PER_PROJECT_PARAMETERS dictionary in in <branch-name>/taskcluster/taskgraph/decision.py
PER_PROJECT_PARAMETERS = {
'holly': {
'target_tasks_method': 'holly_tasks',
'optimize_target_tasks': True,
'include_nightly': False,
},
}
Explanation:
- "target_tasks_method" refers to "holly_tasks" which was created at step 2 in target_tasks.py
- "optimize_target_tasks" refers to the set of targeted tasks and all of their dependencies, tasks that have been optimized out are either omitted or replaced with a Task instance containing only a task_id.
- "include nightly" refers to nightly builds. Since it is set to False it means that nightly builds are excluded.
- Enable the branch in treeherder by modifying the "active_status" flag to "active" in treeherder/model/fixtures/repository.json located in the treeherder git repository:
{
"pk": 29,
"model": "model.repository",
"fields": {
"dvcs_type": "hg",
"name": "holly",
"url": "https://hg.mozilla.org/projects/holly",
"active_status": "active",
"codebase": "gecko",
"repository_group": 6,
"description": ""
}
},