# 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/.
---
trust-domain: gecko
project-repo-param-prefix: ''
product-dir: 'browser'
# Mapping of project to the branches that should be considered "production"
# releases. A value of `true` means all branches of the project are release
# branches, while a list restricts releases to the named branches. Consumed by
# mozilla_taskgraph.util.attributes:release_level.
release-branches:
    # https://github.com/mozilla-firefox/firefox
    firefox:
        - main
        - beta
        - release
        - esr140
        - esr153
    mozilla-central: true
    mozilla-beta: true
    mozilla-release: true
    mozilla-esr115: true
    mozilla-esr140: true
    mozilla-esr153: true
    # bug 1845368: pine is a permanent project branch used for testing
    # nightly updates
    pine: true
    # bug 1877483: larch has similar needs for nightlies
    larch: true
    # maple is also an L3 branch: https://phabricator.services.mozilla.com/D184833
    maple: true
    # bug 1988213: cypress project branch
    cypress: true
treeherder:
    group-names:
        'js-bench-sm': 'JavaScript shell benchmarks with Spidermonkey'
        'js-bench-v8': 'JavaScript shell benchmarks with Google V8'
        'node': 'Node tests'
        'py3': 'Python 3 unit tests'
        'Bpgo': 'Profile-guided optimization builds'
        'Btime': 'Browsertime performance tests on Firefox'
        'Btime-cache': 'Browsertime performance tests on Firefox with populated bytecode cache.'
        'Btime-1proc': 'Browsertime performance tests on Firefox without e10s'
        'Btime-nofis': 'Browsertime tests on Firefox without fission enabled'
        'Btime-P-nofis': 'Browsertime power tests on Firefox without fission enabled'
        'Btime-Prof-nofis': 'Browsertime tests on Firefox with profiling and without fission enabled'
        'Btime-P-nofis-refbrow': 'Browsertime Power Usage Tests on reference browser without fission enabled'
        'Btime-P-nofis-fenix': 'Browsertime Power Usage Tests on Fenix without fission enabled'
        'Btime-live-nofis-fenix': 'Browsertime tests on Fenix without fission enabled using live sites'
        'Btime-nofis-fenix': 'Browsertime tests on Fenix without fission enabled'
        'Btime-webext-nofis-fenix': 'Browsertime performance tests on Fenix with extensions and without fission enabled'
        'Btime-webext-fenix': 'Browsertime performance tests on Fenix with extensions'
        'Btime-webext': 'Browsertime performance tests on Firefox with extensions'
        'Btime-live-nofis': 'Browsertime tests on Firefox without fission enabled using live sites'
        'Btime-nofis-refbrow': 'Browsertime tests on reference browser without fission enabled'
        'Btime-live-nofis-ChR': 'Browsertime tests on Chrome without fission enabled using live sites'
        'Btime-Prof': 'Browsertime performance tests on Firefox with Gecko Profiling'
        'Btime-Prof-1proc': 'Browsertime performance tests on Firefox with Gecko Profiling and without e10s'
        'Btime-live': 'Browsertime performance tests on Firefox'
        'Btime-live-fenix': 'Browsertime performance tests on Firefox'
        'Btime-live-ChR': 'Browsertime performance tests on Google Chrome Release'
        'Btime-live-Saf': 'Browsertime performance tests on Safari'
        'Btime-ChR': 'Browsertime performance tests on Google Chrome Release'
        'Btime-nofis-ChR': 'Browsertime performance tests on Google Chrome Release without fission enabled'
        'Btime-P': 'Browsertime power tests on Firefox/Geckoview'
        'Btime-P-fenix': 'Browsertime power tests on Fenix'
        'Btime-P-refbrow': 'Browsertime power tests on reference browser'
        'Btime-fenix': 'Browsertime performance tests on Fenix'
        'Btime-refbrow': 'Browsertime performance tests on the reference browser'
        'Btime-Saf': 'Browsertime performance tests on Safari'
        'Btime-STP': 'Browsertime performance tests on Safari Technology Preview'
        'Btime-CaR': 'Browsertime performance tests on Chromium-as-Release'
        'Btime-nofis-CaR': 'Browsertime performance tests on Chromium-as-Release without fission enabled'
        'Btime-1M_400ms': 'Browsertime network benchmark tests with 1M_400ms condition'
        'Btime-ChR-1M_400ms': 'Browsertime network benchmark tests with 1M_400ms condition'
        'Btime-CaR-1M_400ms': 'Browsertime network benchmark tests with 1M_400ms condition'
        'Btime-300M_40ms': 'Browsertime network benchmark tests with 300M_40ms condition'
        'Btime-ChR-300M_40ms': 'Browsertime network benchmark tests with 300M_40ms condition'
        'Btime-CaR-300M_40ms': 'Browsertime network benchmark tests with 300M_40ms condition'
        'Btime-300M_80ms': 'Browsertime network benchmark tests with 300M_80ms condition'
        'Btime-ChR-300M_80ms': 'Browsertime network benchmark tests with 300M_80ms condition'
        'Btime-CaR-300M_80ms': 'Browsertime network benchmark tests with 300M_80ms condition'
        'Btime-10M_40ms': 'Browsertime network benchmark tests with 10M_40ms condition'
        'Btime-ChR-10M_40ms': 'Browsertime network benchmark tests with 10M_40ms condition'
        'Btime-CaR-10M_40ms': 'Browsertime network benchmark tests with 10M_40ms condition'
        'Btime-100M_40ms': 'Browsertime network benchmark tests with 100M_40ms condition'
        'Btime-ChR-100M_40ms': 'Browsertime network benchmark tests with 100M_40ms condition'
        'Btime-CaR-100M_40ms': 'Browsertime network benchmark tests with 100M_40ms condition'
        'Fetch': 'Fetch and store content'
        'Fxfn': 'Firefox functional tests'
        'l10n-bump': 'L10n Bumper'
        'M': 'Mochitests'
        'M-f': 'Mochitest failures'
        'M-ioi': 'Mochitests tagged with inc-origin-init'
        'M-sa': 'Mochitest with a browser restart between every test'
        'M-sa-cf': 'Mochitest with a browser restart between every test for confirm failure'
        'M-ioi-cf': 'Mochitests tagged with inc-origin-init for confirm failure'
        'Mn': 'Marionette tests'
        'Mn-ioi': 'Marionette tests tagged with inc-origin-init'
        'MSI': 'Repack installers into MSIs'
        'MSIs': 'Signing of Repacked installers of MSIs'
        'MSIX': 'Repack into MSIX package'
        'MSIXs': 'Signing of Repack into MSIX package'
        'nt-trainhop': 'Desktop newtab trainhop tests'
        'nt-trainhop-cf': 'Desktop newtab trainhop tests for confirm failure'
        'OpenH264': 'OpenH264 plugin'
        'Pup': "Puppeteer tests"
        'R': 'Reftests'
        'R-ioi': 'Reftests with incremental origin initialization enabled'
        'R-ioi-cf': 'Reftests with incremental origin initialization enabled for confirm failure'
        'Rap': 'Raptor performance tests on Firefox'
        'Rap-live': 'Raptor performance tests on Firefox with live sites'
        'Rap-Prof': 'Raptor performance tests on Firefox with Gecko Profiling'
        'Rap-ChR': 'Raptor performance tests on Google Chrome Release'
        'Rap-refbrow': 'Raptor performance tests on the reference browser'
        'T': 'Talos performance tests'
        'T-Prof': 'Talos performance tests on Firefox with Gecko Profiling'
        'tt': 'Telemetry tests'
        'SY': 'Are we slim yet tests by TaskCluster'
        'W': 'Web platform tests'
        'W-b': 'Web platform tests (backlog)'
        'W-pb': 'Web platform tests with private browsing enabled'
        'W-ioi': 'Web platform tests tagged with inc-origin-init'
        'W-ioi-cf': 'Web platform tests tagged with inc-origin-init for confirm failure'
        'W-pb-ioi': 'Web platform tests with private browsing enabled and tagged with inc-origin-init'
        'X': 'Xpcshell tests'
        'X-f': 'Xpcshell tests that fail on a given config'
        'X-ioi': 'Xpcshell tests tagged with inc-origin-init'
        'X-ioi-cf': 'Xpcshell tests tagged with inc-origin-init for confirm failure'
        'L10n': 'Localised Repacks'
        'L10n-Rpk': 'Localized Repackaged Repacks'
        'deb-L10n': 'Localized Debian Repacks'
        'pkg-Rpk': 'MacOS pkg repackage'
        'BM': 'Beetmover'
        'BMR': 'Beetmover repackages'
        'BM-apt': 'Beetmover .deb packages'
        'BM-rpm': 'Beetmover .rpm packages'
        'c-Up': 'Balrog submission of complete updates'
        'css': 'Checksum signing for source'
        'rs': 'Repackage signing'
        'BMcs': 'Beetmover checksums'
        'BMcslang': 'Beetmover checksums for language packs'
        'BMcss': 'Beetmover checksums for source'
        'Deb8': 'Packages for Debian 8'
        'Deb8-32': 'Packages for Debian 8 32-bits'
        'Deb10a64': 'AArch64 packages for Debian 10'
        'Deb12': 'Packages for Debian 12'
        'Deb13': 'Packages for Debian 13'
        'Ub18': 'Packages for Ubuntu 18.04'
        'Ub20': 'Packages for Ubuntu 20.04'
        'Ub22': 'Packages for Ubuntu 22.04'
        'Ub22a64': 'AArch64 packages for Ubuntu 22.04'
        'Ub24': 'Packages for Ubuntu 24.04'
        'Ub24a64': 'AArch64 packages for Ubuntu 24.04'
        'I': 'Docker Image Builds'
        'TA': 'Toolchain builds for Android'
        'TL': 'Toolchain builds for Linux 64-bits'
        'TL32': 'Toolchain builds for Linux 32-bits'
        'TLA64': 'Toolchain builds for Linux AArch64'
        'TM': 'Toolchain builds for OSX'
        'TMA64': 'Toolchain builds for OSX Aarch64'
        'TMW': 'Toolchain builds for Windows MinGW'
        'TW32': 'Toolchain builds for Windows 32-bits'
        'TW64': 'Toolchain builds for Windows 64-bits'
        'TWA64': 'Toolchain builds for Windows AArch64'
        'WMC32': 'MinGW-Clang builds for Windows 32-bits'
        'WMC64': 'MinGW-Clang builds for Windows 64-bits'
        'Searchfox': 'Searchfox builds'
        'SM': 'Spidermonkey builds'
        'p': 'Partial generation'
        'pz': 'Partial-zucchini generation'
        'ps': 'Partials signing'
        'ms': 'Complete MAR signing'
        'ms-stage': 'Autograph-stage MAR signing test'
        'Rel': 'Release promotion'
        'Snap': 'Snap image generation'
        'B-local': 'Snap builds local gecko checkout'
        'B-nightly': 'Snap builds Nightly'
        'B-beta': 'Snap builds Beta'
        'B-beta24': 'Snap builds Beta Core24'
        'B-stable': 'Snap builds Stable'
        'B-stable24': 'Snap builds Stable Core24'
        'B-esr': 'Snap builds ESR'
        'Sel-nightly': 'Snap selenium Nightly'
        'Sel-local': 'Snap selenium local gecko checkout'
        'Sel-beta': 'Snap selenium Beta'
        'Sel-beta24': 'Snap selenium Beta Core24'
        'Sel-stable': 'Snap selenium Stable'
        'Sel-stable24': 'Snap selenium Stable Core24'
        'Sel-esr': 'Snap selenium ESR'
        'Flatpak': 'Flatpak image generation'
        'langpack': 'Langpack sigatures and uploads'
        'TPS': 'Sync tests'
        'UpInt': 'MAR integrity tests'
        'UV': 'Update verify'
        'UVnext': 'Update verify for esr-next'
        'pydep': 'python dependency update'
        'WR': 'WebRender standalone'
        'Wgpu': 'WebGPU standalone'
        'cpp': 'C/C++ checks'
        'pedantic': 'pedantic checks'
        'text': 'Check on texts'
        'misc': 'Misc checks'
        'js': 'JavaScript checks'
        'py': 'Python checks'
        'java': 'Java checks'
        'rust': 'Rust checks'
        'tests': 'Test verification'
        'android': 'Android checks'
        'Static-Analysis': 'Full tree static-analysis'
        'SS': 'Shadow scheduler'
        'Sentry': 'Sentry synchronization'
        'test-info': 'Test manifest skip/fail information'
        'condprof': 'Conditioned Profile Builder'
        'doc': 'Documentation'
        'perftest': 'Performance tests'
        'perftest-detect': 'Performance regression detection tooling'
        'perftest-chrome': 'Performance tests using Chrome Release'
        'perftest-http3': 'Performance tests with HTTP/3'
        'perftest-fenix': 'Performance tests using Fenix'
        'perftest-geckoview': 'Performance tests using Geckoview Example'
        'perftest-focus': 'Performance tests using Focus'
        'l10n': 'Localization checks'
        'wc': 'webcompat'
        'Boot': 'Bootstrap'
        'inst': 'Linux installer tests'
        'inst-apt': 'Linux installer tests: apt'
        'inst-rpm': 'Linux installer tests: rpm'
        'inst-flatpak': 'Linux installer tests: flatpak'
        'inst-tarball': 'Linux installer tests: tarball'
        'inst-snap': 'Linux installer tests: snap'
        'Attr-L10n': 'Build Attribution'
        'android-l10n': 'Import strings from android-l10n repo'
        'updt-tst': 'Test updates to release from older firefox versions'

        # The below symbols are from firefox-android (fenix/focus/android-components)
        'buildconfig': 'Make sure the content of .buildconfig.yml matches what gradle knows about its projects'
        'compare-locales': 'Validate strings.xml with compare-locales'
        'detekt': 'detekt linter'
        'ktlint': 'ktlint linter'
        'lint': 'gradle lint linter'

        'focus': 'Focus general tasks no matter the variant'
        'focus-beta': 'Focus beta-related tasks'
        'focus-debug': 'Focus builds made for testing'
        'focus-nightly': 'Focus nightly-related tasks'
        'focus-release': 'Focus production-related tasks'

        'fenix': 'Fenix general tasks no matter the variant'
        'fenix-beta': 'Fenix beta-related tasks'
        'fenix-debug': 'Fenix builds made for testing'
        'fenix-nightly': 'Fenix nightly-related tasks'
        'fenix-nightlySim': 'Nightly-related tasks that run on each github push'
        'fenix-release': 'Fenix production-related tasks'

        # This list is based on mobile/android/android-components/.buildconfig.yml except the exceptions down below
        'browser-domains': 'browser-domains'
        'browser-engine-gecko': 'browser-engine-gecko'
        'browser-engine-system': 'browser-engine-system'
        'browser-errorpages': 'browser-errorpages'
        'browser-icons': 'browser-icons'
        'browser-menu': 'browser-menu'
        'browser-menu2': 'browser-menu2'
        'browser-session-storage': 'browser-session-storage'
        'browser-state': 'browser-state'
        'browser-storage-sync': 'browser-storage-sync'
        'browser-tabstray': 'browser-tabstray'
        'browser-thumbnails': 'browser-thumbnails'
        'browser-toolbar': 'browser-toolbar'
        'compose-awesomebar': 'compose-engine'
        'compose-browser-toolbar': 'awesomebar-browser-toolbar'
        'compose-engine': 'compose-engine'
        'compose-tabstray': 'compose-tabstray'
        'concept-accelerometer': 'concept-accelerometer'
        'concept-ai-controls': 'concept-ai-controls'
        'concept-integrity': 'concept-integrity'
        'concept-awesomebar': 'concept-awesomebar'
        'concept-base': 'concept-base'
        'concept-bookmarks-file': 'concept-bookmarks-file'
        'compose-base': 'compose-base'
        'concept-bookmarks-parser': 'concept-bookmarks-parser'
        'compose-cfr': 'compose-cfr'
        'concept-engine': 'concept-engine'
        'concept-fetch': 'concept-fetch'
        'concept-llm': 'concept-llm'
        'concept-menu': 'concept-menu'
        'concept-passwords-file': 'concept-passwords-file'
        'concept-passwords-parser': 'concept-passwords-parser'
        'concept-push': 'concept-push'
        'concept-storage': 'concept-storage'
        'concept-storage-bookmarks': 'concept-storage-bookmarks'
        'concept-sync': 'concept-sync'
        'concept-tabstray': 'concept-tabstray'
        'concept-toolbar': 'concept-toolbar'
        'feature-accounts-push': 'feature-accounts-push'
        'feature-accounts': 'feature-accounts'
        'feature-addons': 'feature-addons'
        'feature-app-links': 'feature-app-links'
        'feature-autofill': 'feature-autofill'
        'feature-awesomebar': 'feature-awesomebar'
        'feature-containers': 'feature-containers'
        'feature-contextmenu': 'feature-contextmenu'
        'feature-customtabs': 'feature-customtabs'
        'feature-downloads': 'feature-downloads'
        'feature-example': 'feature-example'
        'feature-findinpage': 'feature-findinpage'
        'feature-fxsuggest': 'feature-fxsuggest'
        'feature-importer': 'feature-importer'
        'feature-password-importer': 'feature-password-importer'
        'feature-intent': 'feature-intent'
        'feature-ipprotection': 'feature-ipprotection'
        'feature-logins': 'feature-logins'
        'feature-media': 'feature-media'
        'feature-privatemode': 'feature-privatemode'
        'feature-prompts': 'feature-prompts'
        'feature-push': 'feature-push'
        'feature-pwa': 'feature-pwa'
        'feature-qr': 'feature-qr'
        'feature-readerview': 'feature-readerview'
        'feature-recentlyclosed': 'feature-recentlyclosed'
        'feature-search': 'feature-search'
        'feature-serviceworker': 'feature-serviceworker'
        'feature-session': 'feature-session'
        'feature-screendetection': 'feature-screendetection'
        'feature-share': 'feature-share'
        'feature-sitepermissions': 'feature-sitepermissions'
        'feature-summarize': 'feature-summarize'
        'feature-syncedtabs': 'feature-syncedtabs'
        'feature-tab-collections': 'feature-tab-collections'
        'feature-tabs': 'feature-tabs'
        'feature-toolbar': 'feature-toolbar'
        'feature-top-sites': 'feature-top-sites'
        'feature-webauthn': 'feature-webauthn'
        'feature-webcompat': 'feature-webcompat'
        'feature-webnotifications': 'feature-webnotifications'
        'lib-ai-controls': 'lib-ai-controls'
        'lib-crash': 'lib-crash'
        'lib-auth': 'lib-auth'
        'lib-bookmarks-file': 'lib-bookmarks-file'
        'lib-bookmark-parser-jsoup': 'lib-bookmark-parser-jsoup'
        'lib-crash-sentry': 'lib-crash-sentry'
        'lib-crash-sentry-legacy': 'lib-crash-sentry-legacy'
        'lib-dataprotect': 'lib-dataprotect'
        'lib-fetch-okhttp': 'lib-fetch-okhttp'
        'lib-jexl': 'lib-jexl'
        'lib-llm-gemininano': 'lib-llm-gemininano'
        'lib-llm-mlpa': 'lib-llm-mlpa'
        'lib-integrity-googleplay': 'lib-integrity-googleplay'
        'lib-passwords-file': 'lib-passwords-file'
        'lib-password-parser-csv': 'lib-password-parser-csv'
        'lib-shake': 'lib-shake'
        'lib-publicsuffixlist': 'lib-publicsuffixlist'
        'lib-push-firebase': 'lib-push-firebase'
        'lib-state': 'lib-state'
        'samples-acorn-components': 'samples-acorn-components'
        'samples-compose-browser': 'samples-compose-browser'
        'samples-crash': 'samples-crash'
        'samples-dataprotect': 'samples-dataprotect'
        'samples-firefox-accounts': 'samples-firefox-accounts'
        'samples-firefox-relay': 'samples-firefox-relay'
        'samples-glean-library': 'samples-glean-library'
        'samples-glean': 'samples-glean'
        'samples-sync-logins': 'samples-sync-logins'
        'samples-sync': 'samples-sync'
        'samples-toolbar': 'samples-toolbar'
        'service-digitalassetlinks': 'service-digitalassetlinks'
        'service-experiments': 'service-experiments'
        'service-firefox-accounts': 'service-firefox-accounts'
        'service-firefox-relay': 'service-firefox-relay'
        'service-fretboard': 'service-fretboard'
        'service-glean': 'service-glean'
        'service-location': 'service-location'
        'service-mars': 'service-mars'
        'service-merino-manifest': 'service-merino-manifest'
        'service-nimbus': 'service-nimbus'
        'service-pocket': 'service-pocket'
        'service-sync': 'service-sync'
        'service-sync-autofill': 'service-sync-autofill'
        'service-sync-logins': 'service-sync-logins'
        'support-android-test': 'support-android-test'
        'support-appservices': 'support-appservices'
        'support-base': 'support-base'
        'support-images': 'support-images'
        'support-ktx': 'support-ktx'
        'support-license': 'support-license'
        'support-locale': 'support-locale'
        'support-migration': 'support-migration'
        'support-remotesettings': 'support-remotesettings'
        'support-rusthttp': 'support-rusthttp'
        'support-rusterrors': 'support-rusterrors'
        'support-rustlog': 'support-rustlog'
        'support-sync-telemetry': 'support-sync-telemetry'
        'support-test-appservices': 'support-test-appservices'
        'support-test-fakes': 'support-test-fakes'
        'support-test-libstate': 'support-test-libstate'
        'support-test': 'support-test'
        'support-utils': 'support-utils'
        'support-webextensions': 'support-webextensions'
        'tooling-detekt': 'tooling-detekt'
        'tooling-fetch-tests': 'tooling-fetch-tests'
        'tooling-lint': 'tooling-lint'
        'ui-animation': 'ui-animation'
        'ui-autocomplete': 'ui-autocomplete'
        'ui-colors': 'ui-colors'
        'ui-fonts': 'ui-fonts'
        'ui-icons': 'ui-icons'
        'ui-richtext': 'ui-richtext'
        'ui-tabcounter': 'ui-tabcounter'
        'ui-widgets': 'ui-widgets'

        # These ones are too long to fit in 25 chars
        'lib-accelerometer-sensorm': 'lib-accelerometer-sensormanager'
        'lib-fetch-httpurlconnecti': 'lib-fetch-httpurlconnection'
        'feature-webcompat-reporte': 'feature-webcompat-reporter'
        'feature-protection-dashbo': 'feature-protection-dashboard'

        # Groups aren't generated off buildconfig.yml:
        'samples-browser': 'samples-browser'
        'samples-browser-gecko': 'samples-browser-gecko'
        'samples-browser-system': 'samples-browser-system'

        # forPerformanceTest: Builds made for Raptor and other performance tests
        'Rap-P': 'Raptor power tests'

index:
    products:
        - 'firefox'
        - 'fennec'
        - 'mobile'
        - 'static-analysis'
        - 'devedition'
        - 'source'
        - 'test'
        - 'system-symbols'
        - 'geckodriver'

try:
    # We have a few platforms for which we want to do some "extra" builds, or at
    # least build-ish things.  Sort of.  Anyway, these other things are implemented
    # as different "platforms".  These do *not* automatically ride along with "-p
    # all"
    ridealong-builds:
        'linux':
            - 'sm-plain-linux32'
            - 'sm-arm-sim-linux32'
        'linux64':
            - 'sm-plain-linux64'
            - 'sm-nojit-linux64'
            - 'sm-nonunified-linux64'
            - 'sm-arm-sim-linux32'
            - 'sm-arm64-sim-linux64'
            - 'sm-compacting-linux64'
            - 'sm-concurrent-linux64'
            - 'sm-rootanalysis-linux64'
            - 'sm-package-linux64'
            - 'sm-tsan-linux64'
            - 'sm-asan-linux64'
            - 'sm-msan-linux64'
            - 'sm-fuzzing-linux64'
        'win32':
            - 'sm-plain-win32'
            - 'sm-compacting-win32'

release-promotion:
    products:
        - 'devedition'
        - 'fennec'
        - 'firefox'
        - 'firefox-android'
    rebuild-kinds:
        - docker-image
        - fetch
        - packages
        - toolchain
    flavors:
        promote_devedition:
            product: devedition
            target-tasks-method: promote_desktop
            partial-updates: true
        promote_firefox:
            product: firefox
            target-tasks-method: promote_desktop
            partial-updates: true
        promote_firefox_partner_repack:
            product: firefox
            rebuild-kinds:
                - release-partner-repack
                - release-partner-repack-chunking-dummy
                - release-partner-repack-signing
                - release-partner-repack-mac-signing
                - release-partner-repack-mac-notarization
                - release-partner-repack-repackage
                - release-partner-repack-repackage-signing
                - release-partner-repack-beetmover
            target-tasks-method: promote_desktop
        promote_firefox_partner_attribution:
            product: firefox
            rebuild-kinds:
                - release-partner-attribution
                - release-partner-attribution-beetmover
            target-tasks-method: promote_desktop
        push_devedition:
            product: devedition
            target-tasks-method: push_desktop
            partial-updates: true
        push_firefox:
            product: firefox
            target-tasks-method: push_desktop
            partial-updates: true
        ship_devedition:
            product: devedition
            target-tasks-method: ship_desktop
            version-bump: true
            partial-updates: true
        ship_firefox:
            product: firefox
            target-tasks-method: ship_desktop
            version-bump: true
            partial-updates: true
        promote_android:
            product: firefox-android
            target-tasks-method: promote_android
        push_android:
            product: firefox-android
            target-tasks-method: push_android
        ship_android:
            product: firefox-android
            target-tasks-method: ship_android


scriptworker:
    # See additional configuration in taskcluster/gecko_taskgraph/util/scriptworker.py
    scope-prefix: 'project:releng'

partner-urls:
    release-partner-repack:
        by-release-product:
            default: null
            firefox:
                by-release-type:
                    default: null
                    beta|release:
                        by-release-level:
                            production: 'git@github.com:mozilla-partners/repack-manifests.git'
                            staging: 'git@github.com:mozilla-partners/staging-repack-manifests.git'
                    esr.*:
                        by-release-level:
                            production: 'git@github.com:mozilla-partners/esr-repack-manifests.git'
                            staging: 'git@github.com:mozilla-partners/staging-esr-repack-manifests.git'
    release-partner-attribution:
        by-release-product:
            default: null
            firefox:
                by-release-type:
                    default: null
                    beta|release:
                        by-release-level:
                            production: 'git@github.com:mozilla-partners/repack-manifests.git'
                            staging: 'git@github.com:mozilla-partners/staging-repack-manifests.git'
                    esr.*:
                        by-release-level:
                            production: 'git@github.com:mozilla-partners/esr-repack-manifests.git'
                            staging: 'git@github.com:mozilla-partners/staging-esr-repack-manifests.git'
    release-eme-free-repack:
        by-release-product:
            default: null
            firefox:
                by-release-type:
                    default: null
                    beta|release:
                        by-release-level:
                            production: 'git@github.com:mozilla-partners/mozilla-EME-free-manifest.git'
                            staging: 'git@github.com:mozilla-partners/staging-mozilla-EME-free-manifest.git'


task-priority:
    by-project:
        'mozilla-release': 'highest'
        'mozilla-esr.*': 'very-high'
        'mozilla-beta': 'high'
        'mozilla-central': 'medium'
        'autoland': 'low'
        'mozilla-inbound': 'low'
        'default': 'very-low'

taskgraph:
    register: gecko_taskgraph:register
    repositories:
        gecko:
            name: 'Mozilla Firefox'
    decision-parameters: 'gecko_taskgraph.parameters:get_decision_parameters'

workers:
    aliases:
        b-linux(|-docker(|-x?large)-amd|-medium|-aarch64|-xlarge|-kvm):
            provisioner: '{trust-domain}-{level}'
            implementation: docker-worker
            os: linux
            worker-type: '{alias}'
        b-win2012:
            provisioner: '{trust-domain}-{level}'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}-azure'
        b-win2022:
            provisioner: '{trust-domain}-{level}'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        b-win2022-xxlarge:
            provisioner: '{trust-domain}-{level}'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        b-win-aarch64:
            provisioner: '{trust-domain}-{level}'
            implementation: generic-worker
            os: windows
            worker-type: 'win11-a64-24h2-builder'
        b-win-aarch64-25h2:
            provisioner: '{trust-domain}-{level}'
            implementation: generic-worker
            os: windows
            worker-type: 'win11-a64-25h2-builder'
        images.*:
            provisioner: '{trust-domain}-{level}'
            implementation: docker-worker
            os: linux
            worker-type: '{alias}'
        addon:
            provisioner: scriptworker-k8s
            implementation: push-addons
            os: linux
            worker-type:
                by-release-level:
                    production: '{trust-domain}-3-addon'
                    staging: '{trust-domain}-1-addon'
        balrog:
            provisioner: scriptworker-k8s
            implementation: balrog
            os: linux
            worker-type:
                by-release-level:
                    production: '{trust-domain}-3-balrog'
                    staging: '{trust-domain}-1-balrog'
        bouncer:
            provisioner: scriptworker-k8s
            # Note that this implementation doesn't correspond with an
            # payload_builder, there are several `bouncer-*` implemenations.
            implementation: bouncer
            os: linux
            worker-type:
                by-release-level:
                    production: '{trust-domain}-3-bouncer'
                    staging: '{trust-domain}-1-bouncer'
        beetmover:
            provisioner: scriptworker-k8s
            implementation: beetmover
            os: linux
            worker-type:
                by-project:
                    # Autoland needs level 3 for integration beetmover tasks
                    autoland: '{trust-domain}-3-beetmover'
                    default:
                        by-release-level:
                            production: '{trust-domain}-3-beetmover'
                            staging: '{trust-domain}-1-beetmover'
        beetmover-android:
            provisioner: scriptworker-k8s
            implementation: scriptworker-beetmover
            os: linux
            worker-type:
                by-release-level:
                    production: '{trust-domain}-3-beetmover'
                    staging: '{trust-domain}-1-beetmover'
        shipit:
            provisioner: scriptworker-k8s
            implementation: shipit
            os: linux
            worker-type:
                by-release-level:
                    production: '{trust-domain}-3-shipit'
                    staging: '{trust-domain}-1-shipit'
        linux-depsigning:
            provisioner: scriptworker-k8s
            implementation: scriptworker-signing
            os: linux
            worker-type: '{trust-domain}-t-signing'
        linux-signing:
            provisioner: scriptworker-k8s
            implementation: scriptworker-signing
            os: linux
            worker-type:
                by-release-level:
                    production: '{trust-domain}-3-signing'
                    staging: '{trust-domain}-t-signing'
        mac-depsigning:
            provisioner: scriptworker-prov-v1
            implementation: iscript
            os: macosx
            worker-type: dep-gecko-signing-mac14m2
        mac-signing:
            provisioner: scriptworker-prov-v1
            implementation: iscript
            os: macosx
            worker-type:
                by-release-level:
                    production: gecko-signing-mac14m2
                    staging: dep-gecko-signing-mac14m2
        push-apk:
            provisioner: scriptworker-k8s
            implementation: scriptworker-pushapk
            os: linux
            worker-type: '{trust-domain}-{level}-pushapk'
        pushflatpak:
            provisioner: scriptworker-k8s
            implementation: push-flatpak
            os: linux
            worker-type:
                by-release-level:
                    staging: '{trust-domain}-1-pushflatpak'
                    production: '{trust-domain}-3-pushflatpak'
        pushmsix:
            provisioner: scriptworker-k8s
            implementation: push-msix
            os: linux
            worker-type:
                by-release-level:
                    staging: '{trust-domain}-1-pushmsix'
                    production: '{trust-domain}-3-pushmsix'
        tree:
            provisioner: scriptworker-k8s
            implementation: treescript
            os: linux
            worker-type:
                by-project:
                    # Autoland is treated specially here because any treescript
                    # tasks that run on it must be done on level 3 workers
                    # (so they can actually push changes). On other projects
                    # `release-level` would handle this just fine, but
                    # `autoland` is considered a "staging" release level for
                    # historical reasons.
                    # https://bugzilla.mozilla.org/show_bug.cgi?id=1960918
                    # seeks to improve this situation.
                    autoland: '{trust-domain}-3-tree'
                    default:
                        by-release-level:
                            production: '{trust-domain}-3-tree'
                            staging: '{trust-domain}-1-tree'
        tree-dev:
            provisioner: scriptworker-k8s
            implementation: treescript
            os: linux
            worker-type: '{trust-domain}-1-tree-dev'
        lando:
            provisioner: scriptworker-k8s
            implementation: landoscript
            os: linux
            worker-type:
                by-project:
                    # Autoland is treated specially here because any landoscript
                    # tasks that run on it must be done on level 3 workers
                    # (so they can actually push changes). On other projects
                    # `release-level` would handle this just fine, but
                    # `autoland` is considered a "staging" release level for
                    # historical reasons.
                    # https://bugzilla.mozilla.org/show_bug.cgi?id=1960918
                    # seeks to improve this situation.
                    autoland: '{trust-domain}-3-lando'
                    default:
                        by-release-level:
                            production: '{trust-domain}-3-lando'
                            staging: '{trust-domain}-1-lando'
        t-bitbar-gw.*:
            provisioner: proj-autophone
            implementation: generic-worker
            os: linux-bitbar
            worker-type: 'gecko-{alias}'
        t-lambda-.*:
            provisioner: proj-autophone
            implementation: generic-worker
            os: linux-lambda
            worker-type: 'gecko-{alias}'
        t-linux-docker(|-noscratch|-noscratch-amd|-16c32gb-amd|-amd):
            provisioner: '{trust-domain}-t'
            implementation: docker-worker
            os: linux
            worker-type: '{alias}'
        t-linux-kvm:
            provisioner: '{trust-domain}-t'
            implementation: docker-worker
            os: linux
            worker-type: 't-linux-docker-kvm'
        t-linux-(talos|netperf)(-1804|-2404)?:
            provisioner: releng-hardware
            implementation: generic-worker
            os: linux
            worker-type: 'gecko-{alias}'
        t-linux-wayland:
            provisioner: '{trust-domain}-t'
            implementation: generic-worker
            os: linux
            worker-type: 't-linux-2204-wayland'
        t-linux-xlarge-wayland:
            provisioner: '{trust-domain}-t'
            implementation: generic-worker
            os: linux
            worker-type: 't-linux-xlarge-2204-wayland'
        t-linux-2204-wayland-snap:
            provisioner: '{trust-domain}-t'
            implementation: generic-worker
            os: linux
            worker-type: 't-linux-2204-wayland-snap'
        t-linux-2404-wayland-snap:
            provisioner: '{trust-domain}-t'
            implementation: generic-worker
            os: linux
            worker-type: 't-linux-2404-wayland-snap'
        t-linux-arm64-docker:
            provisioner: '{trust-domain}-t'
            implementation: docker-worker
            os: linux
            worker-type: '{alias}'
        t-osx-1015-r8:
            provisioner: releng-hardware
            implementation: generic-worker
            os: macosx
            worker-type: 'gecko-{alias}'
        t-osx-1400-r8:
            provisioner: releng-hardware
            implementation: generic-worker
            os: macosx
            worker-type: 'gecko-{alias}'
        t-osx-1500-m4:
            provisioner: releng-hardware
            implementation: generic-worker
            os: macosx
            worker-type: 'gecko-{alias}'
        t-osx-1500-m-vms:
            provisioner: releng-hardware
            implementation: generic-worker
            os: macosx
            worker-type: 'gecko-{alias}'
        t-osx-1015-power:
            provisioner: releng-hardware
            implementation: generic-worker
            os: macosx
            worker-type: 'gecko-{alias}'
        b-osx-1015:
            provisioner: releng-hardware
            implementation: generic-worker
            os: macosx
            worker-type:
                by-level:
                    '3': 'gecko-3-b-osx-1015'
                    default: 'gecko-1-b-osx-1015'
        b-osx-arm64:
            provisioner: releng-hardware
            implementation: generic-worker
            os: macosx
            worker-type:
                by-level:
                    '3': 'gecko-3-b-osx-arm64'
                    default: 'gecko-1-b-osx-arm64'
        win10-64-2009-hw:
            provisioner: releng-hardware
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        win10-64-2009:
            provisioner: 'gecko-t'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        win10-64-2009(-gpu|-source):
            provisioner: 'gecko-t'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        win11-64-24h2(-hw|-hw-ref):
            provisioner: 'releng-hardware'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        win11-64-24h2(|-gpu|-source|-large|-webgpu|-privileged):
            provisioner: 'gecko-t'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        win11-64-25h2(|-gpu|-source|-large|-webgpu|-privileged):
            provisioner: 'gecko-t'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        win11-a64-24h2:
            provisioner: 'gecko-t'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        win11-a64-25h2:
            provisioner: 'gecko-t'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        t-win7-32-gpu:
            provisioner: '{trust-domain}-t'
            implementation: generic-worker
            os: windows
            worker-type: '{alias}'
        t-win7-32:
            provisioner: releng-hardware
            implementation: generic-worker
            os: windows
            worker-type: 'gecko-{alias}-hw'
        succeed:
            provisioner: built-in
            implementation: succeed
            os: none
            worker-type: succeed
        misc:
            provisioner: '{trust-domain}-t'
            implementation: docker-worker
            os: linux
            worker-type: misc


mac-signing:
    mac-requirements:
        by-platform:
            macosx64.*: build/package/mac_osx/requirements.plist
            default: ''
    hardened-sign-config:
        by-hardened-signing-type:
            production:
                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/plugin-container.xml
                  globs:
                      - "/Contents/MacOS/plugin-container.app"

                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/media-plugin-helper.xml
                  globs:
                      - "/Contents/MacOS/media-plugin-helper.app"

                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/security-module-helper.xml
                  globs:
                      - "/Contents/MacOS/security-module-helper.app"
                  only-if-milestone-is-nightly: true

                - deep: false
                  runtime: true
                  force: true
                  # In production builds, these files are signed without
                  # entitlements files, but with hardened runtime enabled. As a
                  # result, they have the default (more restrictive)
                  # entitlement settings.
                  globs:
                      - "/Contents/MacOS/crashhelper"
                      - "/Contents/MacOS/crashreporter.app"
                      - "/Contents/MacOS/updater.app/Contents/Frameworks/UpdateSettings.framework"
                      - "/Contents/MacOS/updater.app"
                      - "/Contents/MacOS/gpu-helper.app"
                      - "/Contents/Library/LaunchServices/org.mozilla.updater"
                      - "/Contents/MacOS/XUL"
                      - "/Contents/MacOS/pingsender"
                      - "/Contents/MacOS/nmhproxy"
                      - "/Contents/MacOS/*.dylib"
                      - "/Contents/Resources/gmp-clearkey/*/*.dylib"
                      - "/Contents/Frameworks/ChannelPrefs.framework"

                - deep: false
                  runtime: true
                  force: true
                  entitlements:
                      by-build-platform:
                          .*devedition.*: public/build/security/firefoxdeveloperedition.browser.xml
                          default:
                              by-project:
                                  mozilla-central: public/build/security/nightly.browser.xml
                                  default: public/build/security/firefox.browser.xml
                  globs:
                      - "/"  # The .app

            default:
                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/plugin-container.xml
                  globs:
                      - "/Contents/MacOS/plugin-container.app"

                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/media-plugin-helper.xml
                  globs:
                      - "/Contents/MacOS/media-plugin-helper.app"

                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/security-module-helper.xml
                  globs:
                      - "/Contents/MacOS/security-module-helper.app"
                  only-if-milestone-is-nightly: true

                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/utility.xml
                  globs:
                      - "/Contents/MacOS/crashhelper"
                      - "/Contents/MacOS/crashreporter.app"
                      - "/Contents/MacOS/updater.app/Contents/Frameworks/UpdateSettings.framework"
                      - "/Contents/MacOS/updater.app"
                      - "/Contents/MacOS/gpu-helper.app"
                      - "/Contents/Library/LaunchServices/org.mozilla.updater"
                      - "/Contents/MacOS/pingsender"
                      - "/Contents/MacOS/nmhproxy"
                      - "/Contents/Frameworks/ChannelPrefs.framework"

                - deep: false
                  runtime: true
                  force: true
                  # These files are signed without entitlements
                  globs:
                      - "/Contents/MacOS/XUL"
                      - "/Contents/MacOS/*.dylib"
                      - "/Contents/Resources/gmp-clearkey/*/*.dylib"

                - deep: false
                  runtime: true
                  force: true
                  entitlements: public/build/security/browser.xml
                  globs:
                      - "/"  # The .app

expiration-policy:
    by-level:
        '1':
            default: 28 days
            shortest: 7 days
            short: 14 days
            medium: 28 days
            long: 28 days
        '3':
            default: 1 year
            shortest: 14 days
            short: 3 months
            medium: 1 year
            # To avoid keeping shippable builds for over a year
            long: 1 year
        default:
            default: 3 months
            shortest: 7 days
            short: 1 month
            medium: 1 year
            long: 1 year
