ReleaseEngineering: Difference between revisions

 
(14 intermediate revisions by 6 users not shown)
Line 30: Line 30:
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 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:
* 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 #ci 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 #ci 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>blocker</tt>"
# Call one or more of the following people (nagios page preferred if you have access):
# Call one or more of the following people (nagios page preferred if you have access):
Line 61: Line 61:
| [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]
| [https://atlee.ca/blog/ chris' random ramblings]
|-
| 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
| Aki Sasaki
Line 95: Line 70:
| [https://mozillians.org/en-US/u/mtabara/ mtabara]
| [https://mozillians.org/en-US/u/mtabara/ mtabara]
| [https://twitter.com/mihaitabara @mihaitabara]
| [https://twitter.com/mihaitabara @mihaitabara]
|
| [https://mihaitabara.github.io/ Mihai Tabara's blog]
|-
| 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]
| [https://twitter.com/simonfr @simonfr]
| [https://www.underhenge.org/ Simon's blog]
|-
| Tom Prince
| [https://mozillians.org/en-US/u/tom.prince tprince]
|
|
|}
|}


Line 194: Line 149:
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 177:


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 267: Line 202:
== Testing ==
== Testing ==
* [[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 =
Line 275: Line 211:
* [http://moz-releng-docs.readthedocs.org/en/latest/ Releng Docs] '''''outdated'''''
* [http://moz-releng-docs.readthedocs.org/en/latest/ Releng Docs] '''''outdated'''''
* [[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]]
Line 284: Line 219:
* Add the following changes to taskcluster/taskgraph/transforms/task.py file:
* Add the following changes to taskcluster/taskgraph/transforms/task.py file:
<pre>
<pre>
@transforms.add
diff --git a/taskcluster/taskgraph/transforms/task.py b/taskcluster/taskgraph/transforms/task.py
def replace_level_in_workertype(config, tasks):
--- a/taskcluster/taskgraph/transforms/task.py
    """
+++ b/taskcluster/taskgraph/transforms/task.py
    This transform replaces {level} in workerType name with actual scm level.
@@ -1717,16 +1717,48 @@ def add_index_routes(config, tasks):
    """
        index_type = index.get('type', 'generic')
    for task in tasks:
        task = index_builders[index_type](config, task)
        level = str(config.params['level'])
        task['worker-type'] = task['worker-type'].format(level=level)
        yield task


@transforms.add
        del task['index']
def use_beta_workertypes(config, tasks):
        yield task
    """
    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-1010":      "releng-hardware/gecko-t-osx-1010-beta",
    }
    # This will replace releng-hardware/gecko-t-osx-1010 worker-type with releng-hardware/gecko-t-osx-1010-beta
    # for Linux, you will need to use releng-hardware/geck-t-linux-talos with releng-hardware/geck-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):
@transforms.add
    for task in tasks:
+def set_worker_type(config, tasks):
        level = str(config.params['level'])
+    for task in tasks:
        provisioner_id, worker_type = task['worker-type'].split('/', 1)
+        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>
</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.
* 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.
{| class="wikitable"
** 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].
| 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
* Push the changes into try repository: hg push -f -r . ssh://hg.mozilla.org/try
* You will receive an email like this:
* You will receive an email like this:
<pre>
<pre>
Line 343: Line 296:
Summary: Test linux generic-worker; try: -b do -p linux64 -u none -t chromez-e10s
Summary: Test linux generic-worker; try: -b do -p linux64 -u none -t chromez-e10s
</pre>
</pre>
==== Notes ====
* A useful link for try syntax: https://mozilla-releng.net/trychooser/
* A useful link for try syntax: https://mozilla-releng.net/trychooser/
* To see the hosts from the staging pool:  
* To see the hosts from the staging pool:  
  * OSX hosts: https://tools.taskcluster.net/provisioners/releng-hardware/worker-types/gecko-t-osx-1010-beta
  * 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
  * Linux hosts: https://tools.taskcluster.net/provisioners/releng-hardware/worker-types/gecko-t-linux-talos-b
canmove, Confirmed users
6,439

edits