diff --git a/conf.py b/conf.py index 54f54e4..45aaedd 100644 --- a/conf.py +++ b/conf.py @@ -16,8 +16,8 @@ import os # -- Project information ----------------------------------------------------- -project = 'RelEng Docs' -copyright = '2020, Mozilla Release Engineering' +project = 'RelEng' +copyright = '2023, Mozilla Release Engineering' author = 'Mozilla Release Engineering' @@ -56,4 +56,11 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # +html_title = "RelEng Docs" html_theme = 'sphinx_book_theme' +html_theme_options = { + "logo": { + "image_light": "media/releng.png", + "image_dark": "media/releng-dark.png", + }, +} diff --git a/balrog/Balrog-and-Scheduled-Changes.rst b/explanations/balrog/Balrog-and-Scheduled-Changes.rst similarity index 85% rename from balrog/Balrog-and-Scheduled-Changes.rst rename to explanations/balrog/Balrog-and-Scheduled-Changes.rst index 1c4c3c2..e447ee3 100644 --- a/balrog/Balrog-and-Scheduled-Changes.rst +++ b/explanations/balrog/Balrog-and-Scheduled-Changes.rst @@ -53,7 +53,7 @@ changes for and it is worth searching for relevant entries in other places as update-verify is refactored in 2020. -.. |scheduled change without signoffs| image:: /balrog/media/only_scheduled.png -.. |signoff modal dialog| image:: /balrog/media/signoff_dialog.png -.. |scheduled change with one signoff| image:: /balrog/media/one_signoff.png -.. |scheduled change with two signoffs| image:: /balrog/media/all_signoffs.png +.. |scheduled change without signoffs| image:: media/only_scheduled.png +.. |signoff modal dialog| image:: media/signoff_dialog.png +.. |scheduled change with one signoff| image:: media/one_signoff.png +.. |scheduled change with two signoffs| image:: media/all_signoffs.png diff --git a/balrog/index.rst b/explanations/balrog/index.rst similarity index 100% rename from balrog/index.rst rename to explanations/balrog/index.rst diff --git a/balrog/media/all_signoffs.png b/explanations/balrog/media/all_signoffs.png similarity index 100% rename from balrog/media/all_signoffs.png rename to explanations/balrog/media/all_signoffs.png diff --git a/balrog/media/big_red_button.png b/explanations/balrog/media/big_red_button.png similarity index 100% rename from balrog/media/big_red_button.png rename to explanations/balrog/media/big_red_button.png diff --git a/balrog/media/one_signoff.png b/explanations/balrog/media/one_signoff.png similarity index 100% rename from balrog/media/one_signoff.png rename to explanations/balrog/media/one_signoff.png diff --git a/balrog/media/only_scheduled.png b/explanations/balrog/media/only_scheduled.png similarity index 100% rename from balrog/media/only_scheduled.png rename to explanations/balrog/media/only_scheduled.png diff --git a/balrog/media/signoff_dialog.png b/explanations/balrog/media/signoff_dialog.png similarity index 100% rename from balrog/media/signoff_dialog.png rename to explanations/balrog/media/signoff_dialog.png diff --git a/balrog/os-de-support.rst b/explanations/balrog/os-de-support.rst similarity index 98% rename from balrog/os-de-support.rst rename to explanations/balrog/os-de-support.rst index 2a87447..632b855 100644 --- a/balrog/os-de-support.rst +++ b/explanations/balrog/os-de-support.rst @@ -31,7 +31,7 @@ Create a new channel-switching mar mar -x switch-to-esr115.0-eol-mac.mar xz -c -d updatev3.manifest -* Verify your mar. :ref:`update-testing` describes how to apply a mar manually. +* Verify your mar. :doc:`/how-to/test/updates` describes how to apply a mar manually. * Sign the mar via adhoc_signing. See https://github.com/mozilla-releng/adhoc-signing/blob/main/signing-manifests/bug1835022.yml for a sample manifest. Copy the channel-switching mar to archive.mozilla.org @@ -189,7 +189,7 @@ and check that the response updates to the pinned build (eg. 20230605094751): :: Verify changes: Application behavior ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* :ref:`update-testing` describes how to apply a mar manually. +* :doc:`/how-to/test/updates` describes how to apply a mar manually. * QA usually verifies Firefox update behavior on each affected platform using trial rules on the ``beta-localtest`` channel prior to Merge Day II. Stop running tests diff --git a/balrog/update_to_last_good_build.rst b/explanations/balrog/update_to_last_good_build.rst similarity index 91% rename from balrog/update_to_last_good_build.rst rename to explanations/balrog/update_to_last_good_build.rst index 66a3c19..72bed4b 100644 --- a/balrog/update_to_last_good_build.rst +++ b/explanations/balrog/update_to_last_good_build.rst @@ -22,4 +22,4 @@ Once a new build contains the fix - ``*-latest`` on mozilla-central - the new build on devedition and mozilla-{beta,release}. -.. |scheduled change without signoffs| image:: /balrog/media/big_red_button.png +.. |scheduled change without signoffs| image:: media/big_red_button.png diff --git a/balrog/win32-win64-migration-balrog.rst b/explanations/balrog/win32-win64-migration-balrog.rst similarity index 100% rename from balrog/win32-win64-migration-balrog.rst rename to explanations/balrog/win32-win64-migration-balrog.rst diff --git a/procedures/releng_bug_triage.rst b/explanations/best-practices/bug-triage.rst similarity index 99% rename from procedures/releng_bug_triage.rst rename to explanations/best-practices/bug-triage.rst index 43ff36f..1663139 100644 --- a/procedures/releng_bug_triage.rst +++ b/explanations/best-practices/bug-triage.rst @@ -1,5 +1,5 @@ -RelEng Bug Triage -================= +Bug Triage +========== This page outlines the process for triaging open RelEng bugs in `Bugzilla `_. The procedure ensures a well-organized bug database, where each bug is appropriately tagged and prioritized, making full use of Mozilla's `Bugdash `_ triage tool. diff --git a/best-practices/cross-training.rst b/explanations/best-practices/cross-training.rst similarity index 100% rename from best-practices/cross-training.rst rename to explanations/best-practices/cross-training.rst diff --git a/best-practices/handoffs.rst b/explanations/best-practices/handoffs.rst similarity index 100% rename from best-practices/handoffs.rst rename to explanations/best-practices/handoffs.rst diff --git a/best-practices/index.rst b/explanations/best-practices/index.rst similarity index 79% rename from best-practices/index.rst rename to explanations/best-practices/index.rst index 62c2860..e77ed91 100644 --- a/best-practices/index.rst +++ b/explanations/best-practices/index.rst @@ -6,5 +6,7 @@ Best Practices project-standards cross-training + bug-triage handoffs security + screen-sharing diff --git a/best-practices/project-standards.rst b/explanations/best-practices/project-standards.rst similarity index 100% rename from best-practices/project-standards.rst rename to explanations/best-practices/project-standards.rst diff --git a/procedures/misc-operations/screen_sharing.rst b/explanations/best-practices/screen-sharing.rst similarity index 95% rename from procedures/misc-operations/screen_sharing.rst rename to explanations/best-practices/screen-sharing.rst index 1543a00..807850d 100644 --- a/procedures/misc-operations/screen_sharing.rst +++ b/explanations/best-practices/screen-sharing.rst @@ -1,5 +1,5 @@ -Sharing your terminal -===================== +Sharing Terminal Sessions +========================= Introduction ------------ @@ -9,7 +9,7 @@ check commands before they are entered. This may be due to the severity of an event and the risk if the commands are incorrect, or may be as straightforward as running a tutorial. -While Vidyo can share screens (in the display sense), it's often not the +While Zoom can share screens (in the display sense), it's often not the clearest for sharing a terminal window. Screen diff --git a/best-practices/security.rst b/explanations/best-practices/security.rst similarity index 100% rename from best-practices/security.rst rename to explanations/best-practices/security.rst diff --git a/explanations/index.rst b/explanations/index.rst index 21c1281..5f77d2a 100644 --- a/explanations/index.rst +++ b/explanations/index.rst @@ -4,6 +4,12 @@ Explanations .. toctree:: :maxdepth: 2 + best-practices/index.rst + taskcluster/index.rst + Balrog & Updates + signing/index l10n.rst + mozharness.rst slide_decks.rst releng_environments.rst + tree-closing-window.rst diff --git a/mozharness.rst b/explanations/mozharness.rst similarity index 100% rename from mozharness.rst rename to explanations/mozharness.rst diff --git a/explanations/releng_environments.rst b/explanations/releng_environments.rst index 35fec3e..6d173a9 100644 --- a/explanations/releng_environments.rst +++ b/explanations/releng_environments.rst @@ -53,7 +53,7 @@ Autograph Stage ~~~~~~~~~~~~~~~ https://autograph-external.stage.autograph.services.mozaws.net -Only for testing Autograph changes, so we should have *zero* signingscript or iscript signing formats that target Autograph Stage, except for any formats that are explicitly for testing Autograph Stage functionality (see :ref:`Testing_Autograph`). +Only for testing Autograph changes, so we should have *zero* signingscript or iscript signing formats that target Autograph Stage, except for any formats that are explicitly for testing Autograph Stage functionality (see :doc:`/how-to/test/autograph`). Staging Shipit ~~~~~~~~~~~~~~ diff --git a/signing/cert_levels_and_best_practices.md b/explanations/signing/cert_levels_and_best_practices.md similarity index 100% rename from signing/cert_levels_and_best_practices.md rename to explanations/signing/cert_levels_and_best_practices.md diff --git a/signing/index.rst b/explanations/signing/index.rst similarity index 55% rename from signing/index.rst rename to explanations/signing/index.rst index 68edc0a..7c06ee4 100644 --- a/signing/index.rst +++ b/explanations/signing/index.rst @@ -1,5 +1,5 @@ -Signing Articles and Documentation -================================== +Signing +======= `Signing Mana page `__ @@ -9,9 +9,5 @@ Contents: :maxdepth: 2 cert_levels_and_best_practices.md - Manually-sign-Android-APKs - create_new_release_signing_key - rotate_gpg_signing_key notarization - adhoc_signing inventory_and_safe diff --git a/signing/inventory_and_safe.rst b/explanations/signing/inventory_and_safe.rst similarity index 100% rename from signing/inventory_and_safe.rst rename to explanations/signing/inventory_and_safe.rst diff --git a/signing/notarization.rst b/explanations/signing/notarization.rst similarity index 100% rename from signing/notarization.rst rename to explanations/signing/notarization.rst diff --git a/taskcluster/how_tasks_are_triggered.rst b/explanations/taskcluster/how_tasks_are_triggered.rst similarity index 100% rename from taskcluster/how_tasks_are_triggered.rst rename to explanations/taskcluster/how_tasks_are_triggered.rst diff --git a/explanations/taskcluster/index.rst b/explanations/taskcluster/index.rst new file mode 100644 index 0000000..d0398e7 --- /dev/null +++ b/explanations/taskcluster/index.rst @@ -0,0 +1,26 @@ +Firefox-CI & Taskcluster +======================== + +`Taskcluster`_ is Mozilla's home grown task execution framework and CI service. +Mozilla runs two instances of Taskcluster; `Community`_ and `Firefox-CI`_. + +The ``community`` instance is operated by the Taskcluster team. It acts as a +reference instance and primarily provides CI for projects that are adjacent to, +but not strictly owned by MoCo. + +The ``firefox-ci`` instance is operated by Release Engineering. It provides CI +for most MoCo products (including Firefox) and supporting repos. + +This section goes into some detail on core Taskcluster concepts, as well as +Firefox-CI specific extensions that underpin Mozilla's CI. + +.. toctree:: + :maxdepth: 2 + + how_tasks_are_triggered + scopes + rerun_vs_retrigger + +.. _Taskcluster: https://taskcluster.net/ +.. _Community: https://community-tc.services.mozilla.com/ +.. _Firefox-CI: https://firefox-ci-tc.services.mozilla.com/ diff --git a/taskcluster/rerun_vs_retrigger.rst b/explanations/taskcluster/rerun_vs_retrigger.rst similarity index 100% rename from taskcluster/rerun_vs_retrigger.rst rename to explanations/taskcluster/rerun_vs_retrigger.rst diff --git a/taskcluster/scopes.rst b/explanations/taskcluster/scopes.rst similarity index 100% rename from taskcluster/scopes.rst rename to explanations/taskcluster/scopes.rst diff --git a/procedures/TCW_Process.rst b/explanations/tree-closing-window.rst similarity index 55% rename from procedures/TCW_Process.rst rename to explanations/tree-closing-window.rst index 40fd1e8..30f6127 100644 --- a/procedures/TCW_Process.rst +++ b/explanations/tree-closing-window.rst @@ -1,11 +1,5 @@ -.. _TCW: -.. index:: - single: Tree Closing Window - seealso: TCW; Tree Closing Window - -============================ -Tree Closing Window Planning -============================ +Tree Closing Window +=================== The purpose of the Planning Procedure below is to state the de facto agreement on the process for Tree Closing @@ -15,7 +9,7 @@ italics*. .. _planning procedure: Planning Procedure -================== +------------------ The goal is to have all the workload, durations, and personnel assignments done at least one week in advance of the TCW. @@ -83,8 +77,13 @@ assignments done at least one week in advance of the TCW. MOC email is sent to everyone, we still post to newsgroups to reach community members of the development community. -Execution of TCW -================ +.. _CAB: https://mana.mozilla.org/wiki/display/MOC/Change+Advisory+Board +.. _official release: https://wiki.mozilla.org/RapidRelease/Calendar +.. _TCW Requests: https://mozilla.service-now.com/nav_to.do?uri=%2Fsys_report_template.do%3Fjvar_report_id%3D012b81bbdb0e26006c3fb1c0ef9619e1%26jvar_selected_tab%3DmyReports%26jvar_list_order_by%3D%26jvar_list_sort_direction%3D%26sysparm_reportquery%3D%26jvar_search_created_by%3D%26jvar_search_table%3D%26jvar_search_report_sys_id%3D%26jvar_report_home_query%3D +.. _Internal Status: https://mozilla2.statuspage.io/ + +Tree Closing Window Execution +============================= The MOC administers the TCW. In general, the following generally occur: @@ -104,10 +103,103 @@ The MOC administers the TCW. In general, the following generally occur: * All people involved with a tree closing part of the window remain on call until the trees are reopened. -See :ref:`detailed checklist` for actions to be taken. +The checklist below is for before, during, and after a Tree Closing +Window (TCW). These are the actions for almost any TCW. Most will +benefit from specific additions. -.. _CAB: https://mana.mozilla.org/wiki/display/MOC/Change+Advisory+Board -.. _approved changes: https://mozilla.service-now.com/sys_report_template.do?jvar_report_id=dee1b20913c5aa00472ed2f18144b068&jvar_selected_tab=myReports&jvar_report_home_query= -.. _official release: https://wiki.mozilla.org/RapidRelease/Calendar -.. _TCW Requests: https://mozilla.service-now.com/nav_to.do?uri=%2Fsys_report_template.do%3Fjvar_report_id%3D012b81bbdb0e26006c3fb1c0ef9619e1%26jvar_selected_tab%3DmyReports%26jvar_list_order_by%3D%26jvar_list_sort_direction%3D%26sysparm_reportquery%3D%26jvar_search_created_by%3D%26jvar_search_table%3D%26jvar_search_report_sys_id%3D%26jvar_report_home_query%3D -.. _Internal Status: https://mozilla2.statuspage.io/ +Wednesday Before +---------------- + +|_| Review any notes_ or bugs_ from prior TCWs that may be relevant. + +|_| Ensure the decision on "hard close" vs. "soft close" has been made. + +|_| Make sure all communications have gone out from the +:ref:`planning procedure`. + +|_| Double check all bugs to be included, make sure you know how to +recover from potential issues. The CAB list is the "source of truth". + + +Day of TCW +---------- + +|_| Check and screenshot various dashboards to see what is current "normal". + + - |_| Check `nagios service dashboard`__ + - |_| Screenshot `nagios tactical dashboard`__ + - |_| Screenshot `slavehealth`__ + +__ https://nagios.mozilla.org/releng-scl3/cgi-bin/status.cgi?servicegroup=all&style=summary +__ https://nagios.mozilla.org/releng-scl3/cgi-bin/tac.cgi +__ https://secure.pub.build.mozilla.org/builddata/reports/slave_health/index.html + +|_| (optional) post message in IRC channels in advance. Usually #mobile, +#developers, and #releng. Sample:: + + REMINDER - Trees close in about 1 hour for https://bugzil.la/1087431 + +|_| Pull up local copies of all bugs and the spreadsheet, in case of +network issues (planned, or unplanned) + +|_| Log in to the primary and backup IRC channels, see `IT IRC usage`__, +make sure you have latest passwords. + +__ https://mana.mozilla.org/wiki/display/SYSADMIN/IRC+use+within+IT + +|_| Touch base with the MOC "on duty" person about 15 minutes before +scheduled start of TCW. + +|_| Close the trees with the tracker bug URL mentioned. (For "soft tree +closing" TCW: + + - |_| Hard close autoland first. + + - |_| Select all the open branches and add the message "TCW in + process, devs need to handle their own restarts", and "open" them + saving state. + +When TCW Done, Before Opening Trees +----------------------------------- + +|_| Check `nagios dashboard`__ that all is as expected. + +__ https://nagios.mozilla.org/releng-scl3/ + +|_| Check build API for `pending`__, `running`__, and `recent`__ to +ensure those system are up. + +__ https://secure.pub.build.mozilla.org/buildapi/pending +__ https://secure.pub.build.mozilla.org/buildapi/running +__ https://secure.pub.build.mozilla.org/buildapi/recent + +|_| Check `Treeherder`__ to ensure it is up. + +__ https://treeherder.mozilla.org/ + +|_| Reopen regular trees. + +|_| Reopen autoland (if closed for this TCW). + +|_| Update notes_ and file bugs_ as appropriate to capture any issues. +Invite all TCW participants to do the same. + +Next Business Day +----------------- + +|_| Review any notes_ or bugs_, and ensure they have enough context. + +|_| File Bugzilla tickets for any work that must be done. Put a link to +the Bugzilla ticket in the GitHub issue, but do not close the issue +until the bug is fixed. + +.. _notes: https://github.com/mozilla-releng/TCW-history/wiki +.. _bugs: https://github.com/mozilla-releng/TCW-history/issues + +.. |_| raw:: html + + + +.. |X| raw:: html + + diff --git a/how-to/create/index.rst b/how-to/create/index.rst new file mode 100644 index 0000000..ddc6a65 --- /dev/null +++ b/how-to/create/index.rst @@ -0,0 +1,11 @@ +Create +====== + +These guides are focused on implementing new functionality in our release pipelines. + +.. toctree:: + :maxdepth: 1 + + new-scriptworker-script + new-package-format + mobile_automation_setup diff --git a/procedures/mobile_automation_setup.rst b/how-to/create/mobile_automation_setup.rst similarity index 99% rename from procedures/mobile_automation_setup.rst rename to how-to/create/mobile_automation_setup.rst index 3c9cb4e..cda41ff 100644 --- a/procedures/mobile_automation_setup.rst +++ b/how-to/create/mobile_automation_setup.rst @@ -1,5 +1,5 @@ -How to automate nightly Google Play deployments -=============================================== +Google Play Deployments +======================= These instructions define how to set up an Android product for nightly deployments to the Google Play store. diff --git a/procedures/adding_package_format.rst b/how-to/create/new-package-format.rst similarity index 95% rename from procedures/adding_package_format.rst rename to how-to/create/new-package-format.rst index 40e00bc..55b3d53 100644 --- a/procedures/adding_package_format.rst +++ b/how-to/create/new-package-format.rst @@ -1,6 +1,5 @@ - -Adding a package format -======================= +New Package Format +================== There are some gotchas to pay attention to when adding a new package format, in particular related to bouncer. diff --git a/how-to/add-scriptworker-script.rst b/how-to/create/new-scriptworker-script.rst similarity index 96% rename from how-to/add-scriptworker-script.rst rename to how-to/create/new-scriptworker-script.rst index eec14a9..9733a20 100644 --- a/how-to/add-scriptworker-script.rst +++ b/how-to/create/new-scriptworker-script.rst @@ -1,5 +1,5 @@ -How to add a new script to scriptworker-scripts -=============================================== +New Scriptworker-Script +======================= This procedure is based on the experience of `adding the pushmsixscript to scriptworker-scripts. `__ diff --git a/how-to/expired-artifacts.rst b/how-to/handle-emergencies/expired-artifacts.rst similarity index 74% rename from how-to/expired-artifacts.rst rename to how-to/handle-emergencies/expired-artifacts.rst index 06947ee..3a00b3c 100644 --- a/how-to/expired-artifacts.rst +++ b/how-to/handle-emergencies/expired-artifacts.rst @@ -1,12 +1,9 @@ -Recover from tasks with expired artifacts -========================================= +Recover From Expired Artifacts +============================== We sometimes have issues where a new Task or Task Graph depends on an older cached task whose key artifacts have expired. Recovering from this can be tricky, but the following steps should work for all cases: -1) Rebuild the cached tasks with the "Rebuild Cached Tasks" action. This should be done against the most recent revision in the affected repository. For example, if the problem is happening on mozilla-beta you can visit https://treeherder.mozilla.org/jobs?repo=mozilla-beta, click the carat in the top right corner, select "Custom Push Action", and then Trigger the ``rebuild-cached-tasks`` action in the modal that pops up. - -2) Wait for the cached tasks to complete successfully. Until this has happened and the Taskcluster indexes have been updated, any new pushes or tasks created will potentially still use the old, broken cached tasks. - -3) Push a new commit to the affected branch. (This is not strictly necessary in all cases, but doing so avoids any possibility that older cached tasks will be used, so it is recommended unless you are very certain about what you are doing.) - -4) If you need tasks other than the ones created by the new push, create them now. For example, if your ultimate goal is to get a release shipped, it can now be scheduled. +1. Rebuild the cached tasks with the "Rebuild Cached Tasks" action. This should be done against the most recent revision in the affected repository. For example, if the problem is happening on mozilla-beta you can visit https://treeherder.mozilla.org/jobs?repo=mozilla-beta, click the carat in the top right corner, select "Custom Push Action", and then Trigger the ``rebuild-cached-tasks`` action in the modal that pops up. +2. Wait for the cached tasks to complete successfully. Until this has happened and the Taskcluster indexes have been updated, any new pushes or tasks created will potentially still use the old, broken cached tasks. +3. Push a new commit to the affected branch. (This is not strictly necessary in all cases, but doing so avoids any possibility that older cached tasks will be used, so it is recommended unless you are very certain about what you are doing.) +4. If you need tasks other than the ones created by the new push, create them now. For example, if your ultimate goal is to get a release shipped, it can now be scheduled. diff --git a/how-to/handle-emergencies/index.rst b/how-to/handle-emergencies/index.rst new file mode 100644 index 0000000..7f56792 --- /dev/null +++ b/how-to/handle-emergencies/index.rst @@ -0,0 +1,15 @@ +Handle Emergencies +================== + +Sometimes releases don't go as planned and we need to step in and make manual +interventions. This section outlines some How-To guides on procedures that might +help in such circumstances. + +.. toctree:: + :maxdepth: 1 + + manual-release + manually-beetmove + manually-generate-partials + purge-partials-cache + expired-artifacts diff --git a/how-to/manual-release.rst b/how-to/handle-emergencies/manual-release.rst similarity index 100% rename from how-to/manual-release.rst rename to how-to/handle-emergencies/manual-release.rst diff --git a/procedures/misc-operations/manually-beetmove.rst b/how-to/handle-emergencies/manually-beetmove.rst similarity index 100% rename from procedures/misc-operations/manually-beetmove.rst rename to how-to/handle-emergencies/manually-beetmove.rst diff --git a/procedures/misc-operations/manually-generate-partials.rst b/how-to/handle-emergencies/manually-generate-partials.rst similarity index 100% rename from procedures/misc-operations/manually-generate-partials.rst rename to how-to/handle-emergencies/manually-generate-partials.rst diff --git a/procedures/misc-operations/purging-the-partials-cache.rst b/how-to/handle-emergencies/purge-partials-cache.rst similarity index 100% rename from procedures/misc-operations/purging-the-partials-cache.rst rename to how-to/handle-emergencies/purge-partials-cache.rst diff --git a/how-to/index.rst b/how-to/index.rst index fbe5457..632d1dd 100644 --- a/how-to/index.rst +++ b/how-to/index.rst @@ -4,10 +4,13 @@ How To .. toctree:: :maxdepth: 2 - Add a scriptworker-script - Manage L10n - partner-repacks Release - Manual update testing - Manually submit a release with the Ship It API - expired-artifacts + releaseduty/index + taskcluster/index + handle-emergencies/index + rotate/index + troubleshoot/index + test/index + create/index + Manage L10n + Upload to Internal Pypi diff --git a/addons/index.rst b/how-to/release/addons/index.rst similarity index 74% rename from addons/index.rst rename to how-to/release/addons/index.rst index 5021dbd..def67af 100644 --- a/addons/index.rst +++ b/how-to/release/addons/index.rst @@ -6,3 +6,5 @@ Addons langpacks xpi-signing + openh264 + widevine diff --git a/addons/langpacks.rst b/how-to/release/addons/langpacks.rst similarity index 100% rename from addons/langpacks.rst rename to how-to/release/addons/langpacks.rst diff --git a/procedures/misc-operations/openh264-updates.rst b/how-to/release/addons/openh264.rst similarity index 100% rename from procedures/misc-operations/openh264-updates.rst rename to how-to/release/addons/openh264.rst diff --git a/procedures/misc-operations/widevine-updates.rst b/how-to/release/addons/widevine.rst similarity index 99% rename from procedures/misc-operations/widevine-updates.rst rename to how-to/release/addons/widevine.rst index 8a221bc..6722fc5 100644 --- a/procedures/misc-operations/widevine-updates.rst +++ b/how-to/release/addons/widevine.rst @@ -171,6 +171,7 @@ Create a new rule to use the release you just created: Deployment usually proceeds in a series of steps over several days. Usually the Media team requests initial deployment to only the nightlytest channel, then the nightlytest and nightly channels, then also the beta channel, etc. To implement this (assuming an existing default Widevine rule with priority 420): + - create a rule for nightlytest with priority 425 - when requested to add nightly, create a new rule for the nightly channel with priority 425 - when requested to add beta, create a new rule for beta with priority 425 @@ -205,5 +206,5 @@ https://aus5.mozilla.org/update/3/GMP/98.0/20180802174131/WINNT_x86_64-msvc-x64/ works from Balrog's point of view, Firefox doesn't send this piece of data. -.. |Balrog rule| image:: /procedures/misc-operations/widevine-balrog-rule.png +.. |Balrog rule| image:: /media/widevine-balrog-rule.png diff --git a/addons/xpi-signing.rst b/how-to/release/addons/xpi-signing.rst similarity index 100% rename from addons/xpi-signing.rst rename to how-to/release/addons/xpi-signing.rst diff --git a/signing/adhoc_signing.rst b/how-to/release/adhoc_signing.rst similarity index 96% rename from signing/adhoc_signing.rst rename to how-to/release/adhoc_signing.rst index e99e679..c732e86 100644 --- a/signing/adhoc_signing.rst +++ b/how-to/release/adhoc_signing.rst @@ -1,4 +1,4 @@ -Adhoc signing +Adhoc Signing ============= Requestors should follow the `how to request an ad-hoc signature doc `_. diff --git a/procedures/doing_a_firefox_release.rst b/how-to/release/firefox/index.rst similarity index 98% rename from procedures/doing_a_firefox_release.rst rename to how-to/release/firefox/index.rst index b1a856c..3e6d93c 100644 --- a/procedures/doing_a_firefox_release.rst +++ b/how-to/release/firefox/index.rst @@ -166,3 +166,12 @@ Shipit Shipit is used to initiate, track, and sign off on Firefox releases for each of the various stages. `Shipit `_ is a web app. + +Off-Cycle Releases +------------------ + +.. toctree:: + :maxdepth: 1 + + partner-repacks + off-cycle-partner-repacks-and-funnelcake diff --git a/procedures/misc-operations/off-cycle-partner-repacks-and-funnelcake.rst b/how-to/release/firefox/off-cycle-partner-repacks-and-funnelcake.rst similarity index 100% rename from procedures/misc-operations/off-cycle-partner-repacks-and-funnelcake.rst rename to how-to/release/firefox/off-cycle-partner-repacks-and-funnelcake.rst diff --git a/how-to/partner-repacks.rst b/how-to/release/firefox/partner-repacks.rst similarity index 100% rename from how-to/partner-repacks.rst rename to how-to/release/firefox/partner-repacks.rst diff --git a/how-to/release/index.rst b/how-to/release/index.rst index 14fdf3a..fe5ff48 100644 --- a/how-to/release/index.rst +++ b/how-to/release/index.rst @@ -6,4 +6,7 @@ This section contains how-to guides on releasing Mozilla's products. .. toctree:: :maxdepth: 2 + Firefox Mozilla VPN + addons/index + Adhoc diff --git a/procedures/release-duty/desktop/esr-to-esr-updates.rst b/how-to/releaseduty/desktop/esr-to-esr-updates.rst similarity index 97% rename from procedures/release-duty/desktop/esr-to-esr-updates.rst rename to how-to/releaseduty/desktop/esr-to-esr-updates.rst index 3e545df..e7541b8 100644 --- a/procedures/release-duty/desktop/esr-to-esr-updates.rst +++ b/how-to/releaseduty/desktop/esr-to-esr-updates.rst @@ -80,8 +80,8 @@ cause them to apply to any channel starting with ``esr``. These will be subject Once they've been made live you should also delete the ``esr-localtest`` rules, as they have been superceded by the new ``esr*`` rules. -.. |platform-deprecation| image:: /procedures/release-duty/desktop/platform-deprecation.png -.. |watershed| image:: /procedures/release-duty/desktop/watershed.png +.. |platform-deprecation| image:: /media/platform-deprecation.png +.. |watershed| image:: /media/watershed.png The Snap case diff --git a/procedures/release-duty/desktop/flathub-flatpak.rst b/how-to/releaseduty/desktop/flathub-flatpak.rst similarity index 100% rename from procedures/release-duty/desktop/flathub-flatpak.rst rename to how-to/releaseduty/desktop/flathub-flatpak.rst diff --git a/procedures/release-duty/desktop/howto.rst b/how-to/releaseduty/desktop/howto.rst similarity index 100% rename from procedures/release-duty/desktop/howto.rst rename to how-to/releaseduty/desktop/howto.rst diff --git a/procedures/release-duty/desktop/staging-release.rst b/how-to/releaseduty/desktop/staging-release.rst similarity index 100% rename from procedures/release-duty/desktop/staging-release.rst rename to how-to/releaseduty/desktop/staging-release.rst diff --git a/procedures/release-duty/index.rst b/how-to/releaseduty/index.rst similarity index 99% rename from procedures/release-duty/index.rst rename to how-to/releaseduty/index.rst index faedce1..6feb260 100644 --- a/procedures/release-duty/index.rst +++ b/how-to/releaseduty/index.rst @@ -1,5 +1,5 @@ -Release Duty -============ +Perform Release Duty +==================== More detailed information on specific ReleaseDuty topics: @@ -8,10 +8,8 @@ More detailed information on specific ReleaseDuty topics: :glob: desktop/* - mobile/* merge-duty/* interrupt-duty - ../../taskcluster/fxci_upgrades ReleaseDuty is a role within the Release Engineering team. It is conducted on a rolling rotation matching one person against one release cycle (currently 4 weeks). Below you will find a description of the expectations and resources diff --git a/procedures/release-duty/interrupt-duty.rst b/how-to/releaseduty/interrupt-duty.rst similarity index 100% rename from procedures/release-duty/interrupt-duty.rst rename to how-to/releaseduty/interrupt-duty.rst diff --git a/procedures/release-duty/merge-duty/merge_duty.rst b/how-to/releaseduty/merge-duty/merge_duty.rst similarity index 100% rename from procedures/release-duty/merge-duty/merge_duty.rst rename to how-to/releaseduty/merge-duty/merge_duty.rst diff --git a/procedures/release-duty/merge-duty/merge_new_esr_branch.rst b/how-to/releaseduty/merge-duty/merge_new_esr_branch.rst similarity index 100% rename from procedures/release-duty/merge-duty/merge_new_esr_branch.rst rename to how-to/releaseduty/merge-duty/merge_new_esr_branch.rst diff --git a/signing/rotate_gpg_signing_key.rst b/how-to/rotate/gpg_signing_key.rst similarity index 100% rename from signing/rotate_gpg_signing_key.rst rename to how-to/rotate/gpg_signing_key.rst diff --git a/procedures/misc-operations/rotate-hg-cert.rst b/how-to/rotate/hg-cert.rst similarity index 100% rename from procedures/misc-operations/rotate-hg-cert.rst rename to how-to/rotate/hg-cert.rst diff --git a/how-to/rotate/index.rst b/how-to/rotate/index.rst new file mode 100644 index 0000000..507770f --- /dev/null +++ b/how-to/rotate/index.rst @@ -0,0 +1,11 @@ +Rotate +====== + +Releng is responsible for rotating various keys and secrets from time to time. +This section outlines How-To guides on how to handle them. + +.. toctree:: + :maxdepth: 1 + + Firefox GPG Signing Key + hg-cert diff --git a/taskcluster/ci_admin.rst b/how-to/taskcluster/ci_admin.rst similarity index 100% rename from taskcluster/ci_admin.rst rename to how-to/taskcluster/ci_admin.rst diff --git a/taskcluster/fxci_upgrades.rst b/how-to/taskcluster/fxci_upgrades.rst similarity index 100% rename from taskcluster/fxci_upgrades.rst rename to how-to/taskcluster/fxci_upgrades.rst diff --git a/taskcluster/index.rst b/how-to/taskcluster/index.rst similarity index 77% rename from taskcluster/index.rst rename to how-to/taskcluster/index.rst index 4c0b230..f322f3b 100644 --- a/taskcluster/index.rst +++ b/how-to/taskcluster/index.rst @@ -1,10 +1,9 @@ .. _taskcluster: -======================================== -Taskcluster Administration and Debugging -======================================== +Administer Firefox-CI +===================== -Specifically for the FirefoxCI cluster. +These external docs are relevant to Mozilla's Firefox-CI Taskcluster instance: - `Taskcluster docs`_ - `Taskgraph docs`_ @@ -21,19 +20,15 @@ Specifically for the FirefoxCI cluster. .. _Rotate CoT keys: https://mana.mozilla.org/wiki/display/RelEng/Chain+of+Trust+key+rotation?flashId=459232040 .. toctree:: - :maxdepth: 2 + :maxdepth: 1 + :caption: How-To Guides :glob: uploading_an_image troubleshooting_workers taskcluster_cli - rerun_vs_retrigger testing_relpro.md - scopes known_problems ci_admin fxci_upgrades tc_staging - how_tasks_are_triggered - -.. vim: nospell : diff --git a/taskcluster/known_problems.rst b/how-to/taskcluster/known_problems.rst similarity index 99% rename from taskcluster/known_problems.rst rename to how-to/taskcluster/known_problems.rst index afc5eee..45498a9 100644 --- a/taskcluster/known_problems.rst +++ b/how-to/taskcluster/known_problems.rst @@ -105,7 +105,7 @@ Workers are spinning up slowly First, see :ref:`troubleshooting_workers`. -Second, as of 2022.01.26, we have had a number of issues with worker-manager. There is a single process that goes through worker pool by worker pool to spin workers up and down on demand. The Azure workers, in particular, take a long time to spin up and down, and these processes block spinning other pools up or down. There's not much we can do here except adjust our idle times, which isn't the ideal solution. Otherwise we wait for the Taskcluster team to fix the issues:: +Second, as of 2022.01.26, we have had a number of issues with worker-manager. There is a single process that goes through worker pool by worker pool to spin workers up and down on demand. The Azure workers, in particular, take a long time to spin up and down, and these processes block spinning other pools up or down. There's not much we can do here except adjust our idle times, which isn't the ideal solution. Otherwise we wait for the Taskcluster team to fix the issues: 1. `Bug 1736329 - gecko-3/decision workers not taking tasks `__ 2. `Bug 1735411 - windows 2004 test worker backlog (gecko-t/win10-64-2004) `__ diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/actions.json b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/actions.json similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/actions.json rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/actions.json diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json.sig b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json.sig similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json.sig rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/chain-of-trust.json.sig diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/label-to-taskid.json b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/label-to-taskid.json similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/label-to-taskid.json rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/label-to-taskid.json diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/parameters.yml b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/parameters.yml similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/parameters.yml rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/parameters.yml diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task-graph.json b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task-graph.json similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task-graph.json rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task-graph.json diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task.json b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task.json similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task.json rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/task.json diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-relpro.png b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-relpro.png similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-relpro.png rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-relpro.png diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-task-group-link.png b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-task-group-link.png similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-task-group-link.png rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/tc-task-group-link.png diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-custom-push-action.png b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-custom-push-action.png similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-custom-push-action.png rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-custom-push-action.png diff --git a/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-input-schema.png b/how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-input-schema.png similarity index 100% rename from taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-input-schema.png rename to how-to/taskcluster/relpro/decision_K_iM4y8xTyqsVKSAcZjzWQ/treeherder-input-schema.png diff --git a/taskcluster/relpro/helpers/yaml_input_from_task_json.py b/how-to/taskcluster/relpro/helpers/yaml_input_from_task_json.py similarity index 100% rename from taskcluster/relpro/helpers/yaml_input_from_task_json.py rename to how-to/taskcluster/relpro/helpers/yaml_input_from_task_json.py diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/extra-action-input.png b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/extra-action-input.png similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/extra-action-input.png rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/extra-action-input.png diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/input.yml b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/input.yml similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/input.yml rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/input.yml diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/label-to-taskid.json b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/label-to-taskid.json similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/label-to-taskid.json rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/label-to-taskid.json diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parameters.yml b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parameters.yml similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parameters.yml rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parameters.yml diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parent.png b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parent.png similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parent.png rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/parent.png diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/target-tasks.json b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/target-tasks.json similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/target-tasks.json rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/target-tasks.json diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task-graph.json b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task-graph.json similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task-graph.json rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task-graph.json diff --git a/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task.json b/how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task.json similarity index 100% rename from taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task.json rename to how-to/taskcluster/relpro/promote_firefox_NpcI7tFfSDmYVyPNzkYMKw/task.json diff --git a/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/input.yml b/how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/input.yml similarity index 100% rename from taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/input.yml rename to how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/input.yml diff --git a/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/label-to-taskid.json b/how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/label-to-taskid.json similarity index 100% rename from taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/label-to-taskid.json rename to how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/label-to-taskid.json diff --git a/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parameters.yml b/how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parameters.yml similarity index 100% rename from taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parameters.yml rename to how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parameters.yml diff --git a/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parent.png b/how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parent.png similarity index 100% rename from taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parent.png rename to how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/parent.png diff --git a/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/target-tasks.json b/how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/target-tasks.json similarity index 100% rename from taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/target-tasks.json rename to how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/target-tasks.json diff --git a/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task-graph.json b/how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task-graph.json similarity index 100% rename from taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task-graph.json rename to how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task-graph.json diff --git a/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task.json b/how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task.json similarity index 100% rename from taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task.json rename to how-to/taskcluster/relpro/push_firefox_ZuFQcboASzeI-aVjkD7uuA/task.json diff --git a/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/input.yml b/how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/input.yml similarity index 100% rename from taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/input.yml rename to how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/input.yml diff --git a/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/label-to-taskid.json b/how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/label-to-taskid.json similarity index 100% rename from taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/label-to-taskid.json rename to how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/label-to-taskid.json diff --git a/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parameters.yml b/how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parameters.yml similarity index 100% rename from taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parameters.yml rename to how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parameters.yml diff --git a/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parent.png b/how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parent.png similarity index 100% rename from taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parent.png rename to how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/parent.png diff --git a/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/target-tasks.json b/how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/target-tasks.json similarity index 100% rename from taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/target-tasks.json rename to how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/target-tasks.json diff --git a/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task-graph.json b/how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task-graph.json similarity index 100% rename from taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task-graph.json rename to how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task-graph.json diff --git a/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task.json b/how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task.json similarity index 100% rename from taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task.json rename to how-to/taskcluster/relpro/ship_firefox_U4J9PRqGQxeHWbuWY_dLCg/task.json diff --git a/taskcluster/taskcluster_cli.rst b/how-to/taskcluster/taskcluster_cli.rst similarity index 100% rename from taskcluster/taskcluster_cli.rst rename to how-to/taskcluster/taskcluster_cli.rst diff --git a/taskcluster/tc_staging.rst b/how-to/taskcluster/tc_staging.rst similarity index 100% rename from taskcluster/tc_staging.rst rename to how-to/taskcluster/tc_staging.rst diff --git a/taskcluster/testing_relpro.rst b/how-to/taskcluster/testing_relpro.rst similarity index 100% rename from taskcluster/testing_relpro.rst rename to how-to/taskcluster/testing_relpro.rst diff --git a/taskcluster/troubleshooting_workers.rst b/how-to/taskcluster/troubleshooting_workers.rst similarity index 100% rename from taskcluster/troubleshooting_workers.rst rename to how-to/taskcluster/troubleshooting_workers.rst diff --git a/taskcluster/uploading_an_image.rst b/how-to/taskcluster/uploading_an_image.rst similarity index 100% rename from taskcluster/uploading_an_image.rst rename to how-to/taskcluster/uploading_an_image.rst diff --git a/procedures/Testing_Autograph.rst b/how-to/test/autograph.rst similarity index 96% rename from procedures/Testing_Autograph.rst rename to how-to/test/autograph.rst index 671e411..681bddd 100644 --- a/procedures/Testing_Autograph.rst +++ b/how-to/test/autograph.rst @@ -1,10 +1,5 @@ -.. index:: - single: Testing Autograph - -.. _Testing_Autograph: - -Testing Autograph -================= +Autograph +========= We currently use `Autograph`_ to sign our files with a number of our signing formats. Occasionally the autograph team will ask us to test to make sure @@ -20,8 +15,6 @@ changes or availability affect production CI, nightlies, or releases. However, sometimes the Autograph team needs to make changes to autograph-stage, and want us to verify that it still works for us. Here's how. -.. _autograph-stage mar signing test: - Autograph-stage mar signing test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/how-to/test/index.rst b/how-to/test/index.rst new file mode 100644 index 0000000..c849565 --- /dev/null +++ b/how-to/test/index.rst @@ -0,0 +1,10 @@ +Test +==== + +This section outlines various guides on how to test changes prior to deploying. + +.. toctree:: + :maxdepth: 1 + + Updates + autograph diff --git a/how-to/update-testing.rst b/how-to/test/updates.rst similarity index 95% rename from how-to/update-testing.rst rename to how-to/test/updates.rst index 69de09b..1000385 100644 --- a/how-to/update-testing.rst +++ b/how-to/test/updates.rst @@ -1,7 +1,5 @@ -.. _update-testing: - -Manual testing of dep-signed mar files -====================================== +Manually Test Dep Signed Mar Files +================================== Usually, mar files are created and tested in automation. Occasionally, we need to create special-purpose mar files, typically for diff --git a/troubleshooting.rst b/how-to/troubleshoot/expirations.rst similarity index 75% rename from troubleshooting.rst rename to how-to/troubleshoot/expirations.rst index c9fefec..efcd7a3 100644 --- a/troubleshooting.rst +++ b/how-to/troubleshoot/expirations.rst @@ -1,7 +1,5 @@ -.. _troubleshooting_expirations: - -Troubleshooting Expirations Notifications -========================================= +Expiration Notifications +======================== (This page needs fleshing out. Ideally we have a runbook where we can go from symptom to solution.) diff --git a/how-to/troubleshoot/index.rst b/how-to/troubleshoot/index.rst new file mode 100644 index 0000000..74a9926 --- /dev/null +++ b/how-to/troubleshoot/index.rst @@ -0,0 +1,8 @@ +Troubleshoot +============ + +.. toctree:: + :maxdepth: 1 + + expirations + update-verify-logs diff --git a/procedures/misc-operations/analyze-update-verify-logs.rst b/how-to/troubleshoot/update-verify-logs.rst similarity index 100% rename from procedures/misc-operations/analyze-update-verify-logs.rst rename to how-to/troubleshoot/update-verify-logs.rst diff --git a/index.rst b/index.rst index 813549c..7cf2368 100644 --- a/index.rst +++ b/index.rst @@ -1,57 +1,20 @@ -.. RelEng Docs documentation master file, created by - sphinx-quickstart on Tue Nov 19 11:46:54 2013. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. +================================ +Mozilla Release Engineering Docs +================================ -======================================= -Welcome to RelEng Docs's documentation! -======================================= - -Here is Mozilla's Release Engineering Group's more technical -documentation. You might also be interested in our `main web site`_. - -.. _`main web site`: https://wiki.mozilla.org/Release +This is documentation for the Release Engineering team at Mozilla. Contents: .. toctree:: - :maxdepth: 4 + :caption: Releng Docs + :maxdepth: 3 - tutorials/index.rst - how-to/index.rst - reference/index.rst - explanations/index.rst - -.. toctree:: - :maxdepth: 4 - :caption: Overview and Procedures - - procedures/index.rst - -.. toctree:: - :maxdepth: 4 - :caption: Documentation and Articles - :glob: - - logs/index.rst - best-practices/index.rst - taskcluster/index.rst - mozharness.rst - addons/index.rst - Balrog & Updates - Signing - releng_changelog - machine-users.rst - troubleshooting.rst - -.. toctree:: - :caption: Meta - :hidden: - - CODE_OF_CONDUCT - Add a new repo to docs - Add existing repo to docs - Maintaining this Documentation + tutorials/index + how-to/index + explanations/index + reference/index + meta/index Indices and tables @@ -60,7 +23,3 @@ Indices and tables * :ref:`genindex` * :ref:`modindex` * :ref:`search` - -* :ref:`tobewritten` - -.. vim: nospell : diff --git a/procedures/mailFilters.xml b/media/mailFilters.xml similarity index 100% rename from procedures/mailFilters.xml rename to media/mailFilters.xml diff --git a/procedures/release-duty/desktop/platform-deprecation.png b/media/platform-deprecation.png similarity index 100% rename from procedures/release-duty/desktop/platform-deprecation.png rename to media/platform-deprecation.png diff --git a/media/releng-dark.png b/media/releng-dark.png new file mode 100644 index 0000000..434683d Binary files /dev/null and b/media/releng-dark.png differ diff --git a/media/releng.png b/media/releng.png new file mode 100644 index 0000000..0663e89 Binary files /dev/null and b/media/releng.png differ diff --git a/procedures/release-duty/desktop/watershed.png b/media/watershed.png similarity index 100% rename from procedures/release-duty/desktop/watershed.png rename to media/watershed.png diff --git a/procedures/misc-operations/widevine-balrog-rule.png b/media/widevine-balrog-rule.png similarity index 100% rename from procedures/misc-operations/widevine-balrog-rule.png rename to media/widevine-balrog-rule.png diff --git a/adding_docs_to_existing_code.rst b/meta/adding_docs_to_existing_code.rst similarity index 100% rename from adding_docs_to_existing_code.rst rename to meta/adding_docs_to_existing_code.rst diff --git a/adding_repo_to_releng_rtfd_account.rst b/meta/adding_repo_to_releng_rtfd_account.rst similarity index 100% rename from adding_repo_to_releng_rtfd_account.rst rename to meta/adding_repo_to_releng_rtfd_account.rst diff --git a/meta/index.rst b/meta/index.rst new file mode 100644 index 0000000..1ef3ff5 --- /dev/null +++ b/meta/index.rst @@ -0,0 +1,10 @@ +Meta +==== + +.. toctree:: + :maxdepth: 1 + + ../CODE_OF_CONDUCT + Add a new repo to docs + Add existing repo to docs + Maintaining this Documentation <../README.md> diff --git a/procedures/TCW_RelEng.rst b/procedures/TCW_RelEng.rst deleted file mode 100644 index 2d260c1..0000000 --- a/procedures/TCW_RelEng.rst +++ /dev/null @@ -1,112 +0,0 @@ -.. _TCW_RelEng: -.. index:: - single: Tree Closing Window - pair: Tree Closing Window; checklist - seealso: TCW; Tree Closing Window - -============================= -Tree Closing Window Execution -============================= - -.. toctree:: - -The checklist below is for before, during, and after a Tree Closing -Window (TCW). These are the actions for almost any TCW. Most will -benefit from specific additions. - -Wednesday Before -================ - -|_| Review any notes_ or bugs_ from prior TCWs that may be relevant. - -|_| Ensure the decision on "hard close" vs. "soft close" has been made. - -|_| Make sure all communications have gone out from the -:ref:`planning procedure`. - -|_| Double check all bugs to be included, make sure you know how to -recover from potential issues. The CAB list is the "source of truth". - - -Day of TCW -========== - -|_| Check and screenshot various dashboards to see what is current "normal". - - - |_| Check `nagios service dashboard`__ - - |_| Screenshot `nagios tactical dashboard`__ - - |_| Screenshot `slavehealth`__ - -__ https://nagios.mozilla.org/releng-scl3/cgi-bin/status.cgi?servicegroup=all&style=summary -__ https://nagios.mozilla.org/releng-scl3/cgi-bin/tac.cgi -__ https://secure.pub.build.mozilla.org/builddata/reports/slave_health/index.html - -|_| (optional) post message in IRC channels in advance. Usually #mobile, -#developers, and #releng. Sample:: - - REMINDER - Trees close in about 1 hour for https://bugzil.la/1087431 - -|_| Pull up local copies of all bugs and the spreadsheet, in case of -network issues (planned, or unplanned) - -|_| Log in to the primary and backup IRC channels, see `IT IRC usage`__, -make sure you have latest passwords. - -__ https://mana.mozilla.org/wiki/display/SYSADMIN/IRC+use+within+IT - -|_| Touch base with the MOC "on duty" person about 15 minutes before -scheduled start of TCW. - -|_| Close the trees with the tracker bug URL mentioned. (For "soft tree -closing" TCW: - - - |_| Hard close autoland first. - - - |_| Select all the open branches and add the message "TCW in - process, devs need to handle their own restarts", and "open" them - saving state. - -When TCW Done, Before Opening Trees -=================================== - -|_| Check `nagios dashboard`__ that all is as expected. - -__ https://nagios.mozilla.org/releng-scl3/ - -|_| Check build API for `pending`__, `running`__, and `recent`__ to -ensure those system are up. - -__ https://secure.pub.build.mozilla.org/buildapi/pending -__ https://secure.pub.build.mozilla.org/buildapi/running -__ https://secure.pub.build.mozilla.org/buildapi/recent - -|_| Check `Treeherder`__ to ensure it is up. - -__ https://treeherder.mozilla.org/ - -|_| Reopen regular trees. - -|_| Reopen autoland (if closed for this TCW). - -|_| Update notes_ and file bugs_ as appropriate to capture any issues. -Invite all TCW participants to do the same. - -Next Business Day -================= - -|_| Review any notes_ or bugs_, and ensure they have enough context. - -|_| File Bugzilla tickets for any work that must be done. Put a link to -the Bugzilla ticket in the GitHub issue, but do not close the issue -until the bug is fixed. - -.. _notes: https://github.com/mozilla-releng/TCW-history/wiki -.. _bugs: https://github.com/mozilla-releng/TCW-history/issues - -.. |_| raw:: html - - - -.. |X| raw:: html - - diff --git a/procedures/index.rst b/procedures/index.rst deleted file mode 100644 index 36b3cf6..0000000 --- a/procedures/index.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _releng_procedures: - -========== -Procedures -========== - -Procedures that don't easily fit elsewhere. - -.. toctree:: - :maxdepth: 2 - :glob: - - doing_a_firefox_release.rst - release-duty/index.rst - Testing_Autograph.rst - TCW_Process.rst - TCW_RelEng.rst - Transitioning.rst - accounts_setup - mobile_automation_setup - adding_package_format - releng_bug_triage - misc-operations/* - -.. vim: nospell : diff --git a/procedures/misc-operations/accessing-bouncer.rst b/procedures/misc-operations/accessing-bouncer.rst deleted file mode 100644 index ab99457..0000000 --- a/procedures/misc-operations/accessing-bouncer.rst +++ /dev/null @@ -1,5 +0,0 @@ -Access Bouncer -~~~~~~~~~~~~~~ - -Release Engineering no longer has access to bouncer. Contact CloudOps or Security -for changes. diff --git a/procedures/misc-operations/media/bouncer_setup_firefox.png b/procedures/misc-operations/media/bouncer_setup_firefox.png deleted file mode 100644 index ec8bada..0000000 Binary files a/procedures/misc-operations/media/bouncer_setup_firefox.png and /dev/null differ diff --git a/procedures/misc-operations/upload-to-internal-pypi.rst b/procedures/misc-operations/upload-to-internal-pypi.rst deleted file mode 100644 index 53756eb..0000000 --- a/procedures/misc-operations/upload-to-internal-pypi.rst +++ /dev/null @@ -1,11 +0,0 @@ -Upload to internal Pypi -~~~~~~~~~~~~~~~~~~~~~~~ - -Occasionally RelEng is poked to upload python packages to our internal -PyPI mirror. Few examples: `bug 1286278`_ or more recent `bug 1665627`_. - -Instructions on how to perform this operation can be found `here`_. - -.. _bug 1286278: https://bugzilla.mozilla.org/show_bug.cgi?id=1286278 -.. _bug 1665627: https://bugzilla.mozilla.org/show_bug.cgi?id=1665627 -.. _here: https://wiki.mozilla.org/ReleaseEngineering/How_To/Upload_to_internal_Pypi diff --git a/procedures/release-duty/desktop/ubuntu-snap.rst b/procedures/release-duty/desktop/ubuntu-snap.rst deleted file mode 100644 index dd8ade5..0000000 --- a/procedures/release-duty/desktop/ubuntu-snap.rst +++ /dev/null @@ -1,151 +0,0 @@ -Desktop Snap Releases -===================== - -Snap is a package format supported by Canonical. It's targeted to -support every Linux distribution but it's mainly available on Ubuntu at -the moment. We've made Firefox publicly available on -https://snapcraft.io/firefox since Firefox 59.0. - -Channels used -------------- - -The snap store comes with the concept of tracks (à la Google Play -Store). For more explanation about them, see -https://docs.snapcraft.io/reference/channels. Release promotion -automatically uploads to these tracks: - -+----------------------------------------+--------------------+--------------+ -| Brand name | Track | Notes | -+========================================+====================+==============+ -| Firefox | ``candidate`` | A human | -| | | has to | -| | | manually | -| | | promote | -| | | the Snap | -| | | to the | -| | | ``stable`` | -| | | channel | -+----------------------------------------+--------------------+--------------+ -| Firefox Beta | ``beta`` | | -+----------------------------------------+--------------------+--------------+ -| Firefox Developer Edition | N/A | Not | -| | | supported | -| | | yet | -+----------------------------------------+--------------------+--------------+ -| Firefox Nightly | N/A | Not | -| | | supported | -| | | yet | -+----------------------------------------+--------------------+--------------+ -| Firefox ESR | ``esr`` aka | We plan | -| | ``esr/stable`` | to use | -| | | ``esr | -| | | /candidate`` | -| | | whenever | -| | | the next | -| | | major ESR | -| | | version | -| | | comes out | -+----------------------------------------+--------------------+--------------+ - -Promote a snap to the ``stable`` channel ----------------------------------------- - -Who? -~~~~ - -Like for Google Play, Release Management is in change of deciding when -they want to fully ship a Snap. Release Management has access to the web -interface (and the CLI because credentials are the same) and performs -the release action (like Google Play). If needed, Release Engineering -can help. - -When? -~~~~~ - -Because, there is no roll out mechanism, Snaps are shipped to the entire -population of a given channel. Unlike Google Play, we can roll back -users to previous version, if needed. However, downgrades aren't -supported internally in Firefox. Based on these facts, we should ship -when we have enough data of the stability on Linux. - -How? -~~~~ - -The easy way: via web interface -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -1. Connect to https://dashboard.snapcraft.io/snaps/firefox/. Your - credentials will be asked, your 2FA code too. If it doesn't, 'select - “Always” for “Require an authentication device”, and click “Update”' - like explained `on this - page `__. -2. On the left side, click on the release you want to ship. -3. On the “channel” section, click on the link “Release”. If brings you - to a new page. If the page remains blank, reload it. -4. Check the ``stable`` box (leave the ``candidate`` one checked) and - click on ``Release``. - -The more complete one: via command line -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -1. Install ``snapcraft``. The simplest way is via `docker `__: - ``docker pull snapcore/snapcraft:stable``, then - ``docker run -ti snapcore/snapcraft:stable bash`` - * alternatively: ``apt-get install snapcraft`` -2. ``snapcraft login``. Your credentials will be asked, your 2FA code - too. If it doesn't, 'select “Always” for “Require an authentication - device”, and click “Update”' like explained `on this - page `__. -3. ``snapcraft status firefox`` outputs something like: - -:: - - Track Arch Channel Version Revision - esr amd64 stable 60.0.2esr-2 98 - candidate ^ ^ - beta ^ ^ - edge ^ ^ - latest amd64 stable 60.0.1-2 89 - candidate 60.0.2-1 97 - beta 61.0b14-1 101 - edge ^ ^ - -1. Note the revision of the ``latest/candidate`` (aka ``candidate``) - snap. In this example: ``97`` -2. If you don't see the version you are expecting, list all available - revisions by running ``snapcraft list-revisions firefox | head`` -3. ``snapcraft release firefox $REVISION stable``, ``$REVISION`` being - the number found in the previous (e.g.: ``97``). - -How to manually push a snap to the store, in case automation failed? --------------------------------------------------------------------- - -1. Install ``snapcraft`` and login (see previous paragraph) -2. ``snapcraft push target.snap --release $CHANNEL``, ``$CHANNEL`` being - one of ``esr``, ``candidate``, ``beta``. -3. If you forgot ``--release`` in the previous command, you can still - use ``snap release [...]`` (see previous paragraph) to make the snap - available to a channel. - -Refresh macaroons credentials ------------------------------ - -Snaps operate via `macaroons`_ to authenticate requests against the -Store. These are used by k8s ``pushsnap`` scriptworkers to perform -operations with the snaps. - -When the macaroons token expiry, they need to be refreshed. Specific -instructions on how to do that lie within the ``ubuntu-store.txt`` in -the private repo. - -.. _macaroons: https://dashboard.snapcraft.io/docs/api/macaroon.html - - -Refreshing collaborators ------------------------- - -Every now and then we need to curate the list of contributors that can handle -the snaps. In order to for one to do so, please use the main RelEng account credentials -and hop on the `collaborators`_ page and make those adjustements. - -.. _collaborators: https://dashboard.snapcraft.io/snaps/firefox/collaboration/ diff --git a/procedures/release-duty/mobile/howto.rst b/procedures/release-duty/mobile/howto.rst deleted file mode 100644 index 53d9ff0..0000000 --- a/procedures/release-duty/mobile/howto.rst +++ /dev/null @@ -1,22 +0,0 @@ -Mobile Releases -=============== - -For an overview of how to do a release end-to-end, see :ref:`How To Do A Release ` - -Managing Different Types of Releases ------------------------------------- - -Fennec vs Fenix -^^^^^^^^^^^^^^^ - -TODO - -Betas -^^^^^ - -TODO - talk about how Fennec no longer is shipped on beta - -Releases -^^^^^^^^ - -TODO diff --git a/procedures/Transitioning.rst b/reference/access.rst similarity index 98% rename from procedures/Transitioning.rst rename to reference/access.rst index 7cf4555..ce289b3 100644 --- a/procedures/Transitioning.rst +++ b/reference/access.rst @@ -3,9 +3,9 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -=========================== -Transitioning RelEng Status -=========================== +============== +Access Control +============== Overview ======== diff --git a/reference/external.rst b/reference/external.rst new file mode 100644 index 0000000..2f3aa7f --- /dev/null +++ b/reference/external.rst @@ -0,0 +1,17 @@ +External Docs +============= + +.. toctree:: + :caption: Other Useful Documentation + + Accessing CloudOps' Jenkins + Balrog + CloudOps Contact Info + Firefox L10n + Partner Repacks + Releng Mana + Scriptworker + Scriptworker Scripts + Scriptworker-scripts Wiki (mac signing procedures) + Taskgraph + Treeherder diff --git a/reference/index.rst b/reference/index.rst index 34e9b1d..d3a5ee4 100644 --- a/reference/index.rst +++ b/reference/index.rst @@ -2,20 +2,10 @@ Reference ========= .. toctree:: - :maxdepth: 2 + :maxdepth: 1 - -.. toctree:: - :caption: Other Useful Documentation - - Accessing CloudOps' Jenkins - Balrog - CloudOps Contact Info - Firefox L10n - Partner Repacks - Releng Mana - Scriptworker - Scriptworker Scripts - Scriptworker-scripts Wiki (mac signing procedures) - Taskgraph - Treeherder + access + machine-users + logs + /releng_changelog + external diff --git a/logs/index.rst b/reference/logs.rst similarity index 100% rename from logs/index.rst rename to reference/logs.rst diff --git a/machine-users.rst b/reference/machine-users.rst similarity index 100% rename from machine-users.rst rename to reference/machine-users.rst diff --git a/signing/Manually-sign-Android-APKs.rst b/signing/Manually-sign-Android-APKs.rst deleted file mode 100644 index b2834a8..0000000 --- a/signing/Manually-sign-Android-APKs.rst +++ /dev/null @@ -1,141 +0,0 @@ -Manually Sign Android APKS -========================== - -Currently, two products may need manually signing: - -- Firefox Rocket -- Firefox Focus for Android. :warning: This product has two APKs: one - is Focus, the other for the German-speaking population: Klar. - -Requirements ------------- - -Google Play refuses non-optimized APKs. The signature changes the -structure of the APK archive, which breaks the Zip optimization. - -1. Install the latest Android SDK to get the build tools. - - - MacOSX: ``brew cask install android-sdk`` (requires - ``brew tap caskroom/cask``) - - - then run ``sdkmanager --list`` and install build-tools, - e.g. ``sdkmanager 'build-tools;27.0.3'``. It'll show up in - e.g. ``/usr/local/share/android-sdk/build-tools/27.0.3/zipalign`` - - - Ubuntu: ``apt install android-sdk`` - - Other: `Install Android - Studio `__ - -First Steps ------------ - -1. ``ssh signing4.srv.releng.scl3.mozilla.com`` - -2. Change to the ``cltsign`` user: - - .. code:: sh - - sudo su - cltsign - -To sign an APK --------------- - -You will need to repeat this for each APK, feel free to optimize by -downloading all at once, just be careful of filenames when copy/pasting -commands. - -1. Download unsigned APK(s). - - - Right-click the attachment in bugzilla and click ‘Copy Link - Location' - - ``wget -O unsigned.apk `` - -2. Set environment variables: - - - For Focus/Klar: - - .. code:: sh - - keystore='/builds/signing/rel-key-signing-server/secrets/focus-jar' - alias='focus' - - - For Rocket: - - .. code:: sh - - keystore='/builds/signing/rel-key-signing-server/secrets/rocket-jar' - alias='rocket' - -3. Look up the right keystore password in the releng private repo - - - Focus/Klar is under the name ``signing-server-focus`` - - Rocket is under the name ``signing-server-rocket`` - -4. ``jarsigner -keystore "$keystore" unsigned.apk "$alias"`` You'll be - asked for the password in the previous step. The Klar APK uses the - same certificate alias/password as ``focus``. You'll also get an - expected warning: - - :: - - Warning: - No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2044-10-25) or after any future revocation date. - -5. ``mv unsigned.apk signed.apk`` - -6. Verify signatures: - ``jarsigner -verify -verbose -keystore "$keystore" signed.apk "$alias"`` - -7. If your product has several APKs, repeat the previous steps. You may - want to give the files more useful names, such as - ``app-rocket-webkit-release-signed.apk`` - -After all the signing ---------------------- - -1. Fetch signed APK(s) on your local machine. You will need to copy the - files to your own user account in order to ``scp`` them, as you can't - directly reach the ``cltsign`` user. - -2. Optimize the APKs for Google Play, and verify. For each APK: - - .. code:: sh - - zipalign -v 4 signed.apk signed-aligned.apk - zipalign -c -v 4 signed-aligned.apk - -3. Attach the signed and aligned APKs to the bug using the 'attach file' - feature in bugzilla. - -Troubleshooting ---------------- - -Can't sign APKs -~~~~~~~~~~~~~~~ - -Sometimes, APKs aren't correctly formatted. For instance, CI may have -already signed an APK with a dev key. In this case, you may see: - -.. code:: sh - - $ jarsigner -verbose -keystore "$keystore" unsigned.apk "$alias" - Enter Passphrase for keystore: - jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 34549 but got 35093 bytes) - -The fix is just to strip the signature from the package: - -.. code:: sh - - $ zip -d unsigned.apk META-INF/\* - deleting: META-INF/CERT.RSA - deleting: META-INF/CERT.SF - deleting: META-INF/MANIFEST.MF - -Then you can resume signing. - -Future ------- - -We already have a github repo with taskcluster release builds. It's not -trivial, but it's possible we could add CoT and auto-sign these release -builds. diff --git a/signing/create_new_release_signing_key.rst b/signing/create_new_release_signing_key.rst deleted file mode 100644 index 69af929..0000000 --- a/signing/create_new_release_signing_key.rst +++ /dev/null @@ -1,39 +0,0 @@ -Create a new release key to sign a new apk product -================================================== - -The example product here is “rocket” -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Before the release day: 1. SSH to a Linux (android) signing server 2. -Manually Create a new keystore dedicated to host the new cert[1]. For -future automation, passwords for both keystore and certificate must be -the same I usually use ``pwgen 80`` for the passphrase, scp down to my -laptop, scp up to the target server, unzip. secure wipe (srm, rm -P, -etc) the files on laptop afterwards. I created a keystore called -“rocket-jar” in /builds/signing/rel-key-signing-server/secrets. The -certificate in there has the alias “rocket”. Just like the release -certificate, I filled these values: -``CN=Release Engineering, OU=Release Engineering, O=Mozilla Corporation, L=Mountain View, ST=California, C=US`` -I also needed to chmod 600 the keystore file and chown so it has the -same owner and group as other signing keystores. 3. Sign the APK[2] 4. -Give the APK back to the Rocket team. - -Right after the first APK is signed: I. Store the passwords on the -private repo. II. Copy the keystore to the other signing servers. -Replication is usually done by archiving the keystore in a zip-encrypted -archive. The passphrase is usually 80 chars long III. Create two offline -backups of the keys[3]. - -For next releases: A. On the signing server, create a new signing -format, called something like “rocket-jar” B. Create new instances of -the signing server dedicated to that new format. This can be done by -either a new process on the same machine (but a different port) or by -creating a new machine. C. See whether the Focus team is ready to port a -part of their automation to Taskcluster. This would ensure the security -of the signing process. - -[1] -https://mana.mozilla.org/wiki/display/RelEng/Signing#Signing-Jarsigning(APK) -[2] -https://developer.android.com/studio/publish/app-signing.html#sign-apk -[3] https://mana.mozilla.org/wiki/display/RelEng/Signing#Signing-Backups diff --git a/procedures/accounts_setup.md b/tutorials/accounts_setup.md similarity index 99% rename from procedures/accounts_setup.md rename to tutorials/accounts_setup.md index 0c77ee9..1d01a81 100644 --- a/procedures/accounts_setup.md +++ b/tutorials/accounts_setup.md @@ -147,12 +147,12 @@ You may eventually want to take a look at this information, but on day one hundr :warning: To mitigate the incoming barrage of automated emails download our imperfect, but useful, set of already existing filters. -1. Download [mailFilters.xml](https://raw.githubusercontent.com/mozilla/build-relengdocs/main/procedures/mailFilters.xml) +1. Download [mailFilters.xml](https://raw.githubusercontent.com/mozilla-releng/relengdocs/main/media/mailFilters.xml) 2. Open [Gmail](https://sso.mozilla.com/gmail) 3. At the top right, click *Settings* and then *See all settings* 4. Click *Filters and Blocked Addresses* 5. At the bottom of the page, click *Import filters* -6. Choose the [mailFilters.xml](https://raw.githubusercontent.com/mozilla/build-relengdocs/main/procedures/mailFilters.xml) file +6. Choose the [mailFilters.xml](https://raw.githubusercontent.com/mozilla-releng/relengdocs/main/media/mailFilters.xml) file 7. Click *Open file* 8. Click *Create filters* diff --git a/tutorials/index.rst b/tutorials/index.rst index e922bc7..ee19b91 100644 --- a/tutorials/index.rst +++ b/tutorials/index.rst @@ -2,5 +2,6 @@ Tutorials ========= .. toctree:: - :maxdepth: 2 + :maxdepth: 1 + accounts_setup