ReleaseEngineering: Difference between revisions

→‎Subpages: Mark Releng Docs as not outdated anymore
(→‎Team: adds Tom Prince to the team)
(→‎Subpages: Mark Releng Docs as not outdated anymore)
 
(28 intermediate revisions by 9 users not shown)
Line 28: Line 28:


= Contacting Release Engineering =
= Contacting Release Engineering =
Our team is located on 3 continents and in 5 time zones. This allows us to provide better service, especially if you contact us using one of the following methods:
Our team is located on 2 continents and in 5 time zones. This allows us to provide better service, especially if you contact us using one of the following methods:
* To request a new service, please [https://bugzilla.mozilla.org/enter_bug.cgi?product=Release%20Engineering file a bug]
* To request a new service, please [https://bugzilla.mozilla.org/enter_bug.cgi?product=Release%20Engineering file a bug]
* To ask a general question, ping in #releng on IRC, or email release@m.c
* To ask a general question, ping in #firefox-ci on Matrix, or email release@mozilla.com
* To request status on an existing request, set the "needinfo" flag in the bug.
* To request status on an existing request, set the "needinfo" flag in the bug.
Our team works normal business hours for our respective time zones. If you need to escalate an issue that is both '''urgent''' ''and'' '''important''', use the following methods:
Our team works normal business hours for our respective time zones. If you need to escalate an issue that is both '''urgent''' ''and'' '''important''', use the following methods:
# Use #releng in IRC or email release@m.c, starting your message with 'URGENT:'. If no response in 15 minutes, then
# Use #firefox-ci on Matrix or email release@mmozilla.com, starting your message with 'URGENT:'. If no response in 15 minutes, then
# Be sure the bug severity is set to "<tt>blocker</tt>"
# Be sure the bug severity is set to "<tt>S1</tt>"
# Call one or more of the following people (nagios page preferred if you have access):
# Call [https://people.mozilla.org/p/jlorenzo Johan Lorenzo] (Paris time).
#* [https://phonebook.mozilla.org/#search/catlee Chris AtLee] Eastern Time
#* [https://phonebook.mozilla.org/#search/jlund Jordan Lund] Pacific Time
If you get voice mail, please leave your callback number.
If you get voice mail, please leave your callback number.


Line 61: Line 59:
| [https://twitter.com/bhearsum @bhearsum]
| [https://twitter.com/bhearsum @bhearsum]
| [http://hearsum.ca/blog Ben's blog]
| [http://hearsum.ca/blog Ben's blog]
|-
| Justin Wood
| [https://mozillians.org/en-US/u/Callek/ Callek]
|
| [http://blog.drapostles.org/ "Callek's Blog"]
|-
| Chris AtLee
| [https://mozillians.org/u/catlee catlee]
| [https://twitter.com/chrisatlee @chrisatlee]
| [http://atlee.ca/blog/ chris' random ramblings: programming, photography, media, and anything else that strikes my fancy]
|-
| Jordan Lund
| [https://mozillians.org/u/jlund jlund]
|
| [http://jordan-lund.ghost.io/ ghost blog]
|-
| Nick Thomas
| [https://mozillians.org/u/nthomas nthomas]
| [https://twitter.com/nthomasftang @nthomasftang]
| [http://ftangftang.wordpress.com/ F'tang F'tang Release wrangling at the bottom of the world]
|-
| Rail Aliiev
| [https://mozillians.org/u/rail rail]
| [https://twitter.com/railaliiev @railaliiev]
| [http://rail.merail.ca/ Rail's blog]
|-
| Aki Sasaki
| [https://mozillians.org/en-US/u/aki/ aki]
| [https://twitter.com/escapewindow @escapewindow]
| [http://escapewindow.dreamwidth.org/ escapewindow]
|-
| Mihai Tabara
| [https://mozillians.org/en-US/u/mtabara/ mtabara]
| [https://twitter.com/mihaitabara @mihaitabara]
|
|-
| Rok Garbas
|
| [https://twitter.com/garbas @garbas]
| [https://garbas.si/ Rok's blog]
|-
| Johan Lorenzo
| [https://mozillians.org/u/jlorenzo/ jlorenzo]
|
| [https://johanlorenzo.github.io/blog/ Johan's blog]
|-
| Simon Fraser
| [https://mozillians.org/en-US/u/sfraser/ sfraser]
|
|
|-
| Tom Prince
| [https://mozillians.org/en-US/u/tom.prince tprince]
|
|
|}
|}


Line 145: Line 88:
== Uploading ==
== Uploading ==


As important release artifacts are created, they are then uploaded to [http://archive.mozilla.org/ archive.m.o] (FTP replacement) where they can served from and live permanently for historical or longstanding support reasons.
As important release artifacts are created, they are then uploaded to [https://archive.mozilla.org/ archive.m.o] where they can served from and live permanently for historical or longstanding support reasons.


Like signing, uploading is:
Like signing, uploading is integrated with Taskcluster thanks to [https://github.com/mozilla-releng/beetmoverscript beetmoverscript] in conjunction with [https://github.com/mozilla-releng/scriptworker scriptworker], a securely managed [https://docs.taskcluster.net/manual/tasks/workertypes Taskcluster worker type]. signingscript tasks are part of the task graph that is generated from [[ReleaseEngineering/Applications/Ship It|Ship It]]
* integrated with Taskcluster thanks to [https://github.com/mozilla-releng/beetmoverscript beetmoverscript] in conjunction with [https://github.com/mozilla-releng/scriptworker scriptworker], a securely managed [https://docs.taskcluster.net/manual/tasks/workertypes Taskcluster worker type]. signingscript tasks are part of the task graph that is generated from [[ReleaseEngineering/Applications/Ship It|Ship It]]


== Install & Update Tests ==
== Install & Update Tests ==
Line 172: Line 114:


== Best Practices ==
== Best Practices ==
* [[ReleaseEngineering/Python Standards|Python Standards]] - Our Python coding standards
* [[ReleaseEngineering/Development Best Practices|Development Best Practices]] - read this when you're starting something new
* [[ReleaseEngineering/Development Best Practices|Development Best Practices]] - read this when you're starting something new
* [[ReleaseEngineering/Deployment|Deployment]] - How we deploy our tools, and how do we update them.
* [[ReleaseEngineering/Deployment|Deployment]] - How we deploy our tools, and how do we update them.
Line 194: Line 137:
See the [[Buildduty|Buildduty home page]] and [[Buildduty/manifesto|manifesto]] for more information.
See the [[Buildduty|Buildduty home page]] and [[Buildduty/manifesto|manifesto]] for more information.


== Releaseduty ==
== CI Duty ==


Releaseduty provides support for Firefox's release infrastructure and is currently handled by Releng
CI Duty provides support for Firefox's release infrastructure and is currently handled by Releng


See the [[ReleaseEngineering/Releaseduty home page]] for more information.
See the [[CIDuty]] for more information.


= Releng Applications =
= Releng Applications =
Line 222: Line 165:


below pages should be deleted or be given a "warning" outdated box where appropriate.
below pages should be deleted or be given a "warning" outdated box where appropriate.
== Buildbot ==
* Master
** [[ReleaseEngineering/Master Naming|Master Naming]]
** [[ReleaseEngineering/Master Setup|Master Setup]]
** [[ReleaseEngineering/Upgrading Buildbot|Upgrading Buildbot]]
** [[ReleaseEngineering/Preproduction|Preproduction]]
** [https://intranet.mozilla.org/RelEngWiki/index.php/Masters Masters] (authentication required)
** [[ReleaseEngineering/Queue directories|Queue directories]]
* Slave
** [[ReleaseEngineering/Buildslave Versions|Buildslave Versions]]
** [[ReleaseEngineering/Buildslave Startup Process|Buildslave Startup Process]]
** [[ReleaseEngineering/Slave_Naming|Slave naming]]
* Development
** [[ReleaseEngineering/Virtualenv|Virtualenv]] - How to set up and use python virtual environments
** [[ReleaseEngineering:TestingTechniques|Methods for testing your changes]]
** [[ReleaseEngineering/Buildbot Best Practices|Buildbot Best Practices]]
** [[ReleaseEngineering/Landing Buildbot Master Changes|Landing Buildbot Master Changes]]
* References
** [[ReleaseEngineering/Buildbot_Database_Schemas|Buildbot Database Schemas]]


== VCS Sync ==
== VCS Sync ==
Line 266: Line 189:


== Testing ==
== Testing ==
* [[ReleaseEngineering:GraphServer | Graph Server Notes]]
* [[ReleaseEngineering:IntermittentErrors | Intermittent Errors]]
* [[ReleaseEngineering:IntermittentErrors | Intermittent Errors]]
* [[ReleaseEngineering/RequestingASlave | Requesting A Slave]]
* [[ReleaseEngineering/How To/Request a loaner | Requesting a loaner]]
* [[ReleaseEngineering/Testing a new Signing Server | Testing a new Signing Server]]
* [[ReleaseEngineering/Testing a new Signing Server | Testing a new Signing Server]]
* [[ReleaseEngineering:TestingTechniques | Testing your changes]]


= Subpages =
= Subpages =
* [[ReleaseEngineering/Presentations|Presentations]]
* [[ReleaseEngineering/Presentations|Presentations]]
* [[ReleaseEngineering/How Tos|How Tos]]
* [[ReleaseEngineering/How Tos|How Tos]]
* [http://moz-releng-docs.readthedocs.org/en/latest/ Releng Docs] '''''outdated'''''
* [https://docs.mozilla-releng.net/en/latest/ Releng Docs]
* [[Special:PrefixIndex/{{FULLPAGENAME}}/]] - all subpages of [[{{FULLPAGENAME}}]] in the wiki
* [[Special:PrefixIndex/{{FULLPAGENAME}}/]] - all subpages of [[{{FULLPAGENAME}}]] in the wiki
* [[ReleaseEngineering/Buildbot Migration|Buildbot Migration]] - '''''outdated''''' What builds are produced where? Buildbot, TaskCluster, or other?
* [[ReleaseEngineering/Obsolete Pages]]
* [[ReleaseEngineering/Obsolete Pages]]
* [[ReleaseEngineering/Day_1_Checklist|day 1 checklist]]
* [[ReleaseEngineering/Day_1_Checklist|day 1 checklist]]
* [[ReleaseEngineering/Day_-1_Checklist|day -1 checklist]]
* [[ReleaseEngineering/Day_-1_Checklist|day -1 checklist]]
= Run the tasks to staging pools (OSX/Linux) =
* Clone mozilla-central to local machine: hg clone ssh://hg.mozilla.org/mozilla-central
* Add the following changes to taskcluster/taskgraph/transforms/task.py file:
<pre>
diff --git a/taskcluster/taskgraph/transforms/task.py b/taskcluster/taskgraph/transforms/task.py
--- a/taskcluster/taskgraph/transforms/task.py
+++ b/taskcluster/taskgraph/transforms/task.py
@@ -1717,16 +1717,48 @@ def add_index_routes(config, tasks):
        index_type = index.get('type', 'generic')
        task = index_builders[index_type](config, task)
        del task['index']
        yield task
@transforms.add
+def set_worker_type(config, tasks):
+    for task in tasks:
+        level = str(config.params['level'])
+
+        provisioner_id, worker_type = get_worker_type(
+            config.graph_config,
+            task['worker-type'],
+            level,
+        )
+        task['worker-type'] = '/'.join([provisioner_id, worker_type])
+        yield task
+
+
+@transforms.add
+def use_beta_workertypes(config, tasks):
+    """
+    This transform uses a dictionary of worker type names to worker type names
+    in order to map one set of worker types to another set. This is typically
+    useful when you want to run a try push against a staging set of worker
+    types, that you want to test before rolling them out to production.
+    """
+    find_replace_dict = {
+        "releng-hardware/gecko-t-osx-1014":      "releng-hardware/gecko-t-osx-1014-staging",
+        "releng-hardware/gecko-t-linux-talos":  "releng-hardware/gecko-t-linux-talos-b"
+    }
+    for task in tasks:
+        if task['worker-type'] in find_replace_dict:
+            task['worker-type'] = find_replace_dict[task['worker-type']]
+        yield task
+
+
+@transforms.add
def build_task(config, tasks):
    for task in tasks:
        level = str(config.params['level'])
        provisioner_id, worker_type = get_worker_type(
            config.graph_config,
            task['worker-type'],
            level,
</pre>
* Commit the changes using the following commit message: hg commit -m "<commit_message>; try: -b do -p macosx64 -u all -t none". The <commit_message> will be a message that will describe your action, like: Run all tests on OSX staging workers.
** To run different tests or on a different platform, use https://mozilla-releng.net/trychooser/
** Do _not_ run unnecessay tests or you may end up on the [https://catlee.github.io/highscores/highscores.html hiscore board].
* Push the changes into try repository: hg push -f -r . ssh://hg.mozilla.org/try
* You will receive an email like this:
<pre>
Thank you for your try submission. It's the best!
Results will be displayed on Treeherder as they come in:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=6657878a04024803ce0aae0601627810b2d8d95e
It looks like this submission has talos jobs. You can compare the performance of your push against a baseline revision here:
https://treeherder.mozilla.org/perf.html#/comparechooser?newProject=try&newRevision=6657878a04024803ce0aae0601627810b2d8d95e
Once completed, all build and log artifacts will be available through the Treeherder URL above.
All Taskcluster based artifacts can also be found in the Taskcluster Artifact Index:
e.g.  https://tools.taskcluster.net/index/artifacts/gecko.v2.try.revision.6657878a04024803ce0aae0601627810b2d8d95e
Summary: Test linux generic-worker; try: -b do -p linux64 -u none -t chromez-e10s
</pre>
==== Notes ====
* A useful link for try syntax: https://mozilla-releng.net/trychooser/
* To see the hosts from the staging pool:
* OSX hosts: https://tools.taskcluster.net/provisioners/releng-hardware/worker-types/gecko-t-osx-1010-beta
* Linux hosts: https://tools.taskcluster.net/provisioners/releng-hardware/worker-types/gecko-t-linux-talos-b
Confirmed users
213

edits