Bug 1410512 - Build partial update MARs for Thunderbird. r=darktrojan
authorRob Lemley <rob@thunderbird.net>
Mon, 03 Feb 2020 22:14:52 -0500
changeset 38087 fbdc28c1011c17b2ac6791e1b536cf24ceb984b8
parent 38086 c25b9b3f598a3a87fbe5605ee1687196b30f657d
child 38088 010e3872fa134f50cde10c951741e8a5e6fed842
push id398
push userclokep@gmail.com
push dateMon, 09 Mar 2020 19:10:28 +0000
reviewersdarktrojan
bugs1410512
Bug 1410512 - Build partial update MARs for Thunderbird. r=darktrojan First part of getting partial updates working for Thunderbird. If the decision task is provided with a release history, partial mars are successfully generated for nightly builds.
taskcluster/ci/beetmover-repackage/kind.yml
taskcluster/ci/config.yml
taskcluster/ci/docker-image/kind.yml
taskcluster/ci/partials-signing/kind.yml
taskcluster/ci/partials/kind.yml
taskcluster/comm_taskgraph/manifests/thunderbird_candidates.yml
taskcluster/comm_taskgraph/manifests/thunderbird_nightly.yml
--- a/taskcluster/ci/beetmover-repackage/kind.yml
+++ b/taskcluster/ci/beetmover-repackage/kind.yml
@@ -17,16 +17,18 @@ kind-dependencies:
     - build
     - build-signing
     - repackage
     - repackage-signing
     - nightly-l10n
     - nightly-l10n-signing
     - repackage-l10n
     - repackage-signing-l10n
+    - partials
+    - partials-signing
     - repackage-signing-msi
     - mar-signing
     - mar-signing-l10n
 
 primary-dependency:
     - repackage
     - repackage-l10n
 
--- a/taskcluster/ci/config.yml
+++ b/taskcluster/ci/config.yml
@@ -18,16 +18,18 @@ treeherder:
         'Deb7': 'Packages for Debian 7'
         'Deb7-32': 'Packages for Debian 7 32-bits'
         'Deb9': 'Packages for Debian 9'
         'Deb10': 'Packages for Debian 10'
         'Fetch': 'Fetch and store content'
         'L10n': 'Localised Repacks'
         'L10n-Rpk': 'Localized Repackaged Repacks'
         'M': 'Mochitests'
+        'p': 'Partial generation'
+        'ps': 'Partials signing'
         'ms': 'Complete MAR signing'
         'MSI': 'Repack installers into MSIs'
         'MSIs': 'Signing of Repacked installers of MSIs'
         'rs': 'Repackage signing'
         'BM': 'Beetmover'
         'BMR': 'Beetmover repackages'
         'c-Up': 'Balrog submission of complete updates'
         'cs': 'Checksum signing'
@@ -46,23 +48,26 @@ try:
 
 release-promotion:
     products:
         - 'thunderbird'
     flavors:
         promote_thunderbird:
             product: thunderbird
             target-tasks-method: promote_desktop
+            partial-updates: true
         push_thunderbird:
             product: thunderbird
             target-tasks-method: push_desktop
+            partial-updates: true
         ship_thunderbird:
             product: thunderbird
             target-tasks-method: ship_desktop
             version-bump: true
+            partial-updates: true
 
 scriptworker:
     scope-prefix: 'project:comm:thunderbird:releng'
 
 partner-urls:
     release-partner-repack: {}
     release-eme-free-repack: {}
 
--- a/taskcluster/ci/docker-image/kind.yml
+++ b/taskcluster/ci/docker-image/kind.yml
@@ -19,15 +19,16 @@ jobs:
     - debian9-base
     - debian9-packages
     - debian9-raw
     - debian10-base
     - debian10-packages
     - debian10-raw
     - desktop1604-test
     - fetch
+    - funsize-update-generator
     - index-task
     - image_builder
     - lint
     - mingw32-build
     - periodic-updates
     - toolchain-build
     - update-verify
new file mode 100644
--- /dev/null
+++ b/taskcluster/ci/partials-signing/kind.yml
@@ -0,0 +1,20 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: taskgraph.loader.single_dep:loader
+
+transforms:
+    - taskgraph.transforms.name_sanity:transforms
+    - taskgraph.transforms.mar_signing:transforms
+    - taskgraph.transforms.task:transforms
+
+kind-dependencies:
+    - partials
+
+job-template:
+    shipping-phase: promote
+    treeherder-group: ps
+    description-suffix: 'partial signing'
+    required_signoffs:
+        - mar-signing
new file mode 100644
--- /dev/null
+++ b/taskcluster/ci/partials/kind.yml
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: taskgraph.loader.single_dep:loader
+
+transforms:
+    - taskgraph.transforms.name_sanity:transforms
+    - taskgraph.transforms.partials:transforms
+    - taskgraph.transforms.task:transforms
+
+kind-dependencies:
+    - repackage
+    - repackage-l10n
+
+only-for-attributes:
+    - nightly
+    - shippable
+
+only-for-build-platforms:
+    - linux-shippable/opt
+    - linux-nightly/opt
+    - linux64-shippable/opt
+    - linux64-nightly/opt
+    - macosx64-shippable/opt
+    - macosx64-nightly/opt
+    - win32-shippable/opt
+    - win32-nightly/opt
+    - win64-shippable/opt
+    - win64-nightly/opt
+
+job-template:
+    shipping-phase: promote
--- a/taskcluster/comm_taskgraph/manifests/thunderbird_candidates.yml
+++ b/taskcluster/comm_taskgraph/manifests/thunderbird_candidates.yml
@@ -320,16 +320,29 @@ mapping:
         all_locales: true
         from:
             - mar-signing
         pretty_name: thunderbird-${version}.complete.mar
         checksums_path: update/${path_platform}/${locale}/thunderbird-${version}.complete.mar
         update_balrog_manifest: true
         destinations:
             - ${version}-candidates/build${build_number}/update/${path_platform}
+    ${partial}:
+        <<: *default
+        description: "Partials MAR files to serve as updates"
+        all_locales: true
+        from:
+            - partials-signing
+        partials_only: true
+        pretty_name: thunderbird-${previous_version}-${version}.partial.mar
+        checksums_path: update/${path_platform}/${locale}/thunderbird-${previous_version}-${version}.partial.mar
+        update_balrog_manifest: true
+        from_buildid: ${from_buildid}
+        destinations:
+            - ${version}-candidates/build${build_number}/update/${path_platform}
     lightning.xpi:
         <<: *default
         description: "Lightning XPI (en-US only)"
         all_locales: false  # Uses default_locale only
         from:
             - build
         only_for_platforms:
             - linux64-shippable
--- a/taskcluster/comm_taskgraph/manifests/thunderbird_nightly.yml
+++ b/taskcluster/comm_taskgraph/manifests/thunderbird_nightly.yml
@@ -386,16 +386,33 @@ mapping:
             by-locale:
                 en-US:
                     - ${year}/${month}/${upload_date}-${branch}
                     - latest-${branch}
                     - latest-${branch}-l10n
                 default:
                     - ${year}/${month}/${upload_date}-${branch}-l10n
                     - latest-${branch}-l10n
+    ${partial}:
+        <<: *default
+        description: "Partials MAR files to serve as updates"
+        all_locales: true
+        from:
+            - partials-signing
+        partials_only: true
+        pretty_name: thunderbird-${branch}-${version}-${filename_platform}-${locale}-${from_buildid}-${buildid}.partial.mar
+        checksums_path: thunderbird-${branch}-${version}-${filename_platform}-${locale}-${from_buildid}-${buildid}.partial.mar
+        update_balrog_manifest: true
+        from_buildid: ${from_buildid}
+        destinations:
+            by-locale:
+                en-US:
+                    - partials/${year}/${month}/${upload_date}-${branch}
+                default:
+                    - partials/${year}/${month}/${upload_date}-${branch}-l10n
     lightning.xpi:
         <<: *default
         description: "Lightning XPI (en-US only)"
         all_locales: false  # Uses default_locale only
         from:
             - build
         only_for_platforms:
             - linux64-shippable