合作伙伴归因¶
与 合作伙伴重新打包 相比,归因构建与正常的 Firefox 构建的唯一区别是在虚拟 Windows 签名证书中添加了一个字符串。我们支持对完整安装程序执行此操作,但不支持存根。字符串的参数被传递到遥测系统,将安装标记到用户组中。这是一个更轻量级的过程,因为我们不会重新打包或重新签名构建。
参数 & 调度¶
合作伙伴归因使用多个参数来控制其工作方式
release_enable_partner_attribution
release_partner_config
release_partner_build_number
release_partners
启用参数是一个布尔值,一个简单的开关。我们在 shipit 的 is_partner_enabled() 中设置它,以启动发布。对于 Firefox 测试版 >= b8 和正式版本,它为真,否则为假,与合作伙伴重新打包相同。
release_partner_config
是一个配置数据字典,它驱动任务生成逻辑。它通常在发布升级操作任务期间查找,使用 get_partner_config_by_url() 函数中的 Github GraphQL API,网址定义在 taskcluster/config.yml 中。
release_partner_build_number
是一个整数,用于在 firefox candidates 目录中创建唯一的上传路径,而 release_partners
是一个应归因的合作伙伴列表(即整个配置的一个子集)。两者都旨在在常规 Firefox 发布后重新旋转合作伙伴时使用。更多信息可以在 RelEng 文档 中找到。
release_partners
与合作伙伴重新打包共享,但我们不支持同时执行两者。
配置¶
这是使用 attribution_config.yml
文件完成的,该文件接下来位于用于合作伙伴重新打包的 default.xml
旁边。每个合作伙伴都没有存储库,整个配置都存在于一个文件中,因为要跟踪的信息量要小得多。
一个示例配置如下所示
defaults:
medium: distribution
source: mozilla
configs:
- campaign: sample
content: sample-001
locales:
- en-US
- de
- ru
platforms:
- win64-shippable
- win32-shippable
四个主要参数是 medium, source, campaign, content
,其中前两个对所有归因都是通用的。 campaign
和 content
的组合应是唯一的,以避免遥测数据中的混淆。它们对应于合作伙伴重新打包中的存储库名称和子目录,因此避免合作伙伴重新打包和归因中的值之间出现任何重叠。还可以指定 variation
和 experiment
的可选参数。
非空语言环境和平台列表是必需的参数(注意,应在平台上使用 -shippable 后缀)。
Firefox 安装程序被上传到 candidates 目录。
重新打包过程¶
归因只有两种
归因 - 将归因代码添加到常规构建中
beetmover - 将文件移动到特定于合作伙伴的目标位置
归因¶
种类:
release-partner-attribution
平台:任何 Windows,在 Linux 上运行
上游:
repackage-signing
repackage-signing-l10n
有一个任务,调用 python/mozrelease/mozrelease/attribute_builds.py。
它将 repackage-signing 和 repackage-signing-l10n 工件作为输入,这些工件都是 target.exe 完整安装程序。 ATTRIBUTION_CONFIG
环境变量控制脚本。它生成更多 target.exe 安装程序。
如果配置数量增加, ATTRIBUTION_CONFIG
变量的大小可能会变得很大,并且可能需要将 attribution_config.yml
的内容传递给脚本,或者通过升级任务的工件传递。
Beetmover¶
种类:
release-partner-attribution-beetmover
平台:N/A,scriptworker
上游:
release-partner-attribution
将工件移动并重命名到 candidates 目录 中的公共位置。
每个任务都将具有 project:releng:beetmover:action:push-to-partner
和 project:releng:beetmover:bucket:release
范围。 beetmoverscript 中有一个特定于合作伙伴的代码路径。