diff options
Diffstat (limited to 'taskcluster/kinds/source-test')
23 files changed, 2845 insertions, 0 deletions
diff --git a/taskcluster/kinds/source-test/android-compare-locales.yml b/taskcluster/kinds/source-test/android-compare-locales.yml new file mode 100644 index 0000000000..6423ad708d --- /dev/null +++ b/taskcluster/kinds/source-test/android-compare-locales.yml @@ -0,0 +1,47 @@ +# 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/. +--- +job-defaults: + description: 'Validate android strings.xml with compare-locales' + run: + using: run-task + cwd: '{checkout}' + command: 'pip install --break-system-packages --user "compare-locales>=5.0.2,<6.0" && /builds/worker/.local/bin/compare-locales --validate l10n.toml .' + worker-type: t-linux-xlarge-source + platform: lint/opt + treeherder: + kind: other + tier: 2 + worker: + docker-image: {in-tree: lint} + max-run-time: 1800 + use-python: system + + +compare-locales-android-components: + optimization: + skip-unless-changed: + - "mobile/android/android-components/**" + run: + cwd: '{checkout}/mobile/android/android-components' + treeherder: + symbol: compare-locales(AC) + +compare-locales-focus: + optimization: + skip-unless-changed: + - "mobile/android/focus-android/**" + run: + cwd: '{checkout}/mobile/android/focus-android' + treeherder: + symbol: compare-locales(focus) + +compare-locales-fenix: + optimization: + skip-unless-changed: + - "mobile/android/fenix/**" + run: + cwd: '{checkout}/mobile/android/fenix' + treeherder: + symbol: compare-locales(fenix) diff --git a/taskcluster/kinds/source-test/android-detekt.yml b/taskcluster/kinds/source-test/android-detekt.yml new file mode 100644 index 0000000000..c39ebca218 --- /dev/null +++ b/taskcluster/kinds/source-test/android-detekt.yml @@ -0,0 +1,73 @@ +# 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/. +--- +job-defaults: + description: 'Run detekt over all modules' + run: + using: gradlew + gradlew: ['detekt'] + use-caches: false + worker: + docker-image: {in-tree: lint} + max-run-time: 1200 + attributes: + code-review: true + always-target: true + fetches: + toolchain: + - android-sdk-linux + - android-gradle-dependencies + - linux64-jdk-repack + platform: 'lint/opt' + treeherder: + kind: test + tier: 1 + worker-type: b-linux-gcp + when: + files-changed: + - "mobile/android/android-components/**" + + +detekt-android-components: + run: + pre-gradlew: + - ["cd", "mobile/android/android-components"] + treeherder: + symbol: detekt(AC) + worker: + artifacts: + - name: public/reports + path: /builds/worker/checkouts/gecko/mobile/android/android-components/build/reports + type: directory + +detekt-focus: + when: + files-changed: + - "mobile/android/focus-android/**" + run: + pre-gradlew: + - ["cd", "mobile/android/focus-android"] + treeherder: + symbol: detekt(focus) + worker: + artifacts: + - name: public/reports + path: /builds/worker/checkouts/gecko/mobile/android/focus-android/build/reports + type: directory + +detekt-fenix: + when: + files-changed: + - "mobile/android/fenix/**" + run: + pre-gradlew: + - ["cd", "mobile/android/fenix"] + gradlew: [detekt, 'mozilla-detekt-rules:test'] + treeherder: + symbol: detekt(fenix) + worker: + artifacts: + - name: public/reports + path: /builds/worker/checkouts/gecko/mobile/android/fenix/build/reports + type: directory diff --git a/taskcluster/kinds/source-test/android-lint.yml b/taskcluster/kinds/source-test/android-lint.yml new file mode 100644 index 0000000000..8cbbcc3385 --- /dev/null +++ b/taskcluster/kinds/source-test/android-lint.yml @@ -0,0 +1,64 @@ +# 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/. +--- +job-defaults: + description: 'Run lint over all modules' + run: + using: gradlew + gradlew: ['lint'] + use-caches: false + worker: + max-run-time: 2700 + docker-image: {in-tree: lint} + always-target: false + attributes: + build_platform: android + code-review: true + dependencies: + build-fat-aar: build-fat-aar-android-geckoview-fat-aar/opt + fetches: + toolchain: + - android-sdk-linux + - android-gradle-dependencies + - linux64-jdk-repack + build-fat-aar: + - target.maven.tar.xz + platform: 'lint/opt' + treeherder: + kind: test + tier: 1 + worker-type: b-linux-gcp + when: + files-changed: + - "mobile/android/android-components/**" + + +android-components: + run: + pre-gradlew: + - ["cd", "mobile/android/android-components"] + gradlew: ["--no-parallel"] + treeherder: + symbol: lint(AC) + +focus: + when: + files-changed: + - "mobile/android/focus-android/**" + run: + pre-gradlew: + - ["cd", "mobile/android/focus-android"] + treeherder: + symbol: lint(focus) + +fenix: + when: + files-changed: + - "mobile/android/fenix/**" + run: + pre-gradlew: + - ["cd", "mobile/android/fenix"] + gradlew: ['lintDebug', 'mozilla-lint-rules:test'] + treeherder: + symbol: lint(fenix) diff --git a/taskcluster/kinds/source-test/buildconfig.yml b/taskcluster/kinds/source-test/buildconfig.yml new file mode 100644 index 0000000000..a7dffefd09 --- /dev/null +++ b/taskcluster/kinds/source-test/buildconfig.yml @@ -0,0 +1,67 @@ +# 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/. +--- +job-defaults: + description: Make sure the content of .buildconfig.yml matches what gradle knows about its projects + always-target: true + run: + using: run-task + cwd: '{checkout}' + worker-type: t-linux-xlarge-source + worker: + artifacts: + - type: directory + name: public + path: '/builds/worker/artifacts' + docker-image: {in-tree: lint} + max-run-time: 1800 + env: + GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-online" + MOZCONFIG: "/builds/worker/checkouts/gecko/mobile/android/config/mozconfigs/android-arm/nightly-android-lints" + ANDROID_SDK_ROOT: "/builds/worker/fetches/android-sdk-linux" + platform: lint/opt + treeherder: + kind: other + tier: 2 + fetches: + toolchain: + - linux64-jdk-repack + - android-gradle-dependencies + - android-sdk-linux + use-python: system + + +buildconfig-android-components: + optimization: + skip-unless-changed: + - "mobile/android/android-components/**/build.gradle" + - "mobile/android/android-components/.buildconfig.yml" + run: + command: 'pip install --break-system-packages --user --require-hashes --requirement taskcluster/scripts/lint/requirements.txt && ./mach --log-no-times build pre-export export && taskcluster/scripts/lint/is_buildconfig_yml_up_to_date.py mobile/android/android-components' + treeherder: + symbol: buildconfig(AC) + +buildconfig-focus: + optimization: + skip-unless-changed: + - "mobile/android/android-components/**/build.gradle" # A change in A-C may be reflected in focus + - "mobile/android/android-components/.buildconfig.yml" + - "mobile/android/focus-android/**/build.gradle" + - "mobile/android/focus-android/.buildconfig.yml" + run: + command: 'pip install --break-system-packages --user --require-hashes --requirement taskcluster/scripts/lint/requirements.txt && ./mach --log-no-times build pre-export export && taskcluster/scripts/lint/is_buildconfig_yml_up_to_date.py mobile/android/focus-android' + treeherder: + symbol: buildconfig(focus) + +buildconfig-fenix: + optimization: + skip-unless-changed: + - "mobile/android/android-components/**/build.gradle" # A change in A-C may be reflected in fenix + - "mobile/android/android-components/.buildconfig.yml" + - "mobile/android/fenix/**/build.gradle" + - "mobile/android/fenix/.buildconfig.yml" + run: + command: 'pip install --break-system-packages --user --require-hashes --requirement taskcluster/scripts/lint/requirements.txt && ./mach --log-no-times build pre-export export && taskcluster/scripts/lint/is_buildconfig_yml_up_to_date.py mobile/android/fenix' + treeherder: + symbol: buildconfig(fenix) diff --git a/taskcluster/kinds/source-test/clang.yml b/taskcluster/kinds/source-test/clang.yml new file mode 100644 index 0000000000..d77066afe7 --- /dev/null +++ b/taskcluster/kinds/source-test/clang.yml @@ -0,0 +1,117 @@ +# 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/. +--- +job-defaults: + run-on-projects: ["trunk"] + platform: linux64/debug + worker-type: t-linux-xlarge-source + attributes: + code-review: true + worker: + docker-image: {in-tree: static-analysis-build} + max-run-time: 5400 + treeherder: + kind: other + tier: 2 + run: + using: run-task + tooltool-downloads: public + fetches: + toolchain: + - linux64-cbindgen + - linux64-nasm + - linux64-node + when: + files-changed: + - '**/*.c' + - '**/*.cpp' + - '**/*.cc' + - '**/*.cxx' + - '**/*.m' + - '**/*.mm' + +tidy: + description: Run static-analysis (clang-tidy) on C/C++ patches + treeherder: + symbol: cpp(clang-tidy) + run: + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-clang-setup.sh && + ./mach --log-no-times static-analysis check --outgoing --output $HOME/clang-tidy.json --format json + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + worker: + artifacts: + - type: file + name: public/code-review/clang-tidy.json + path: /builds/worker/clang-tidy.json + +format: + description: Run clang-format on C/C++ patches + treeherder: + symbol: cpp(clang-format) + # Run only on try and code-review tasks + # to avoid running clang format on the whole codebase + run-on-projects: [] + run: + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-clang-setup.sh && + ./mach --log-no-times clang-format --outgoing --output $HOME/clang-format.json --format json && + ./mach --log-no-times clang-format --outgoing --output $HOME/clang-format.diff --format diff + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + when: + files-changed: + - '**/*.c' + - '**/*.cpp' + - '**/*.cc' + - '**/*.cxx' + - '**/*.m' + - '**/*.mm' + - '**/*.h' + - '**/*.hh' + - '**/*.hpp' + - '**/*.hxx' + worker: + artifacts: + - type: file + name: public/code-review/clang-format.json + path: /builds/worker/clang-format.json + - type: file + name: public/code-review/clang-format.diff + path: /builds/worker/clang-format.diff + +external: + description: Run static-analysis (clang-tidy) on C/C++ patches with external checks + treeherder: + symbol: cpp(clang-tidy-external) + run: + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-clang-setup.sh && + ./mach --log-no-times static-analysis check --checks="-*,mozilla-civet-*" --outgoing --output $HOME/clang-tidy.json --format json + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy-external + - linux64-rust + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + worker: + artifacts: + - type: file + name: public/code-review/clang-tidy.json + path: /builds/worker/clang-tidy.json diff --git a/taskcluster/kinds/source-test/cram.yml b/taskcluster/kinds/source-test/cram.yml new file mode 100644 index 0000000000..6e29e7c6a6 --- /dev/null +++ b/taskcluster/kinds/source-test/cram.yml @@ -0,0 +1,21 @@ +--- +tryselect: + description: tools/tryselect integration tests + platform: linux1804-64/opt + treeherder: + symbol: cram(try) + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: mach + mach: cramtest tools/tryselect + always-target: true + when: + files-changed: + - testing/mach_commands.py + - third_party/python/cram/** + - tools/tryselect/** diff --git a/taskcluster/kinds/source-test/doc.yml b/taskcluster/kinds/source-test/doc.yml new file mode 100644 index 0000000000..b876d801ba --- /dev/null +++ b/taskcluster/kinds/source-test/doc.yml @@ -0,0 +1,77 @@ +# 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/. +--- +generate: + description: Generate the Sphinx documentation + use-python: "3.11" + platform: doc/opt + treeherder: + symbol: doc(generate) + kind: test + tier: 1 + run-on-projects: ['trunk'] + worker-type: b-linux-medium-gcp + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + env: + LC_ALL: C + artifacts: + - type: file + name: public/docs.tar.gz + path: /builds/worker/checkouts/gecko/docs-out/main.tar.gz + - type: file + name: public/trees.json + path: /builds/worker/artifacts/trees.json + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach doc --outdir docs-out --no-open --no-serve --archive --fatal-warnings --check-num-warnings --dump-trees=/builds/worker/artifacts/trees.json + sparse-profile: sphinx-docs + optimization: + skip-unless-schedules: [docs] + +upload: + description: Generate and upload the Sphinx documentation + use-python: "3.11" + platform: doc/opt + attributes: + code-review: true + treeherder: + symbol: doc(upload) + kind: test + tier: 2 + run-on-projects: [mozilla-central-only] + worker-type: b-linux-medium-gcp + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + env: + LC_ALL: C + MOZ_SOURCE_DOCS_USE_GOOGLE: "1" + taskcluster-proxy: true + artifacts: + - type: file + name: public/firefox-source-docs-url.txt + path: /builds/worker/firefox-source-docs-url.txt + - type: file + name: public/trees.json + path: /builds/worker/artifacts/trees.json + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach doc --upload --no-open --no-serve --fatal-warnings --write-url /builds/worker/firefox-source-docs-url.txt --dump-trees=/builds/worker/artifacts/trees.json + sparse-profile: sphinx-docs + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/gecko-docs-upload + optimization: + skip-unless-schedules: [docs] diff --git a/taskcluster/kinds/source-test/file-metadata.yml b/taskcluster/kinds/source-test/file-metadata.yml new file mode 100644 index 0000000000..b1fffaf64f --- /dev/null +++ b/taskcluster/kinds/source-test/file-metadata.yml @@ -0,0 +1,126 @@ +# 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/. +--- +job-defaults: + platform: lint/opt + treeherder: + kind: other + tier: 1 + worker-type: t-linux-xlarge-source + worker: + artifacts: + - type: directory + path: /builds/worker/artifacts + name: public + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: mach + +bugzilla-components: + description: Generate metadata about source files and Bugzilla + treeherder: + symbol: Bugzilla + tier: 1 + index: + product: source + job-name: source-bugzilla-info + run: + mach: file-info bugzilla-automation /builds/worker/artifacts + worker: + max-run-time: 1800 + run-on-projects: ['autoland', 'mozilla-central'] + +test-info-xorigin: + description: Generate test manifest metadata for tests disabled on cross-origin + treeherder: + symbol: test-info(xorigin) + tier: 2 + index: + product: source + job-name: test-info-xorigin + worker: + docker-image: {in-tree: debian12-amd64-build} + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + run: + using: run-task + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-common.sh && + ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)xorigin' --output-file /builds/worker/artifacts/test-info-xorigin.json + +test-info-disabled-by-os: + description: Generate test manifest metadata for tests disabled on each operating system + treeherder: + symbol: test-info(disabled-by-os) + tier: 2 + index: + product: source + job-name: test-info-disabled-by-os + worker: + docker-image: {in-tree: debian12-amd64-build} + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + run: + using: run-task + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-common.sh && + ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(android|android_version|Android|AndroidVersion|geckoview|emulator|device)' --output-file /builds/worker/artifacts/test-info-disabled-on-android.json && + ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(linux|Linux)' --output-file /builds/worker/artifacts/test-info-disabled-on-linux.json && + ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(osx|OSX|mac)' --output-file /builds/worker/artifacts/test-info-disabled-on-mac.json && + ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(win|Windows|WINNT)' --output-file /builds/worker/artifacts/test-info-disabled-on-windows.json + +test-info-all: + description: Generate global test manifest metadata + treeherder: + symbol: test-info(all) + tier: 2 + index: + product: source + job-name: test-info-all + worker: + docker-image: {in-tree: debian12-amd64-build} + max-run-time: 5400 + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + run: + using: run-task + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-common.sh && + ./mach test-info testrun-report --output-file /builds/worker/artifacts/test-run-info.json && + ./mach test-info report --show-tests --show-summary --show-testruns --verbose --output-file /builds/worker/artifacts/test-info-all-tests.json --runcounts-input-file /builds/worker/artifacts/test-run-info.json && + ./mach test-info report --show-annotations --output-file /builds/worker/artifacts/test-info-manifest-conditions.json diff --git a/taskcluster/kinds/source-test/jsshell.yml b/taskcluster/kinds/source-test/jsshell.yml new file mode 100644 index 0000000000..2ce0a846d4 --- /dev/null +++ b/taskcluster/kinds/source-test/jsshell.yml @@ -0,0 +1,87 @@ +# 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/. +--- +job-defaults: + platform: linux64-shippable/opt + require-build: + linux64.*: build-linux64-shippable/opt + worker-type: + by-platform: + linux64.*: t-linux-talos-1804 + worker: + by-platform: + linux64.*: + env: + by-shell: + sm: + SHELL: /bin/bash + JSSHELL: js + v8: + SHELL: /bin/bash + JSSHELL: d8/release/d8 + max-run-time: 3600 + treeherder: + kind: test + tier: 2 + run: + using: mach + mach: jsshell-bench --perfherder={shell} --binary=$MOZ_FETCHES_DIR/$JSSHELL {test} + run-on-projects: + by-shell: + sm: + by-test-platform: + (linux|windows|macos)(?!.*shippable).*: [] + default: ['mozilla-central', 'integration'] + default: + by-test-platform: + (linux|windows|macos)(?!.*shippable).*: [] + default: ['mozilla-central'] + fetches: + build: + - target.jsshell.zip + toolchain: + - linux64-custom-v8 + optimization: + skip-unless-expanded: null + +bench-ares6: + description: Ares6 JavaScript shell benchmark suite + shell: ['sm', 'v8'] + test: ares6 + treeherder: + symbol: ares6 + +bench-sixspeed: + description: Six-Speed JavaScript shell benchmark suite + shell: ['sm', 'v8'] + test: six-speed + treeherder: + symbol: 6speed + +bench-sunspider: + description: SunSpider JavaScript shell benchmark suite + shell: ['sm'] + test: sunspider + treeherder: + symbol: sunspider + +bench-web-tooling: + description: Web Tooling shell benchmark suite + shell: ['sm', 'v8'] + test: web-tooling-benchmark + treeherder: + symbol: webtool + fetches: + fetch: + - web-tooling-benchmark + +bench-octane: + description: Octane shell benchmark suite + shell: ['sm', 'v8'] + test: octane + treeherder: + symbol: octane + fetches: + fetch: + - octane diff --git a/taskcluster/kinds/source-test/kind.yml b/taskcluster/kinds/source-test/kind.yml new file mode 100644 index 0000000000..f28ee39f96 --- /dev/null +++ b/taskcluster/kinds/source-test/kind.yml @@ -0,0 +1,51 @@ +# 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: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.try_job:transforms + - gecko_taskgraph.transforms.source_test:transforms + - taskgraph.transforms.task_context + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - fetch + - toolchain + - build + - build-fat-aar + +jobs-from: + - android-compare-locales.yml + - android-detekt.yml + - android-lint.yml + - buildconfig.yml + - clang.yml + - cram.yml + - doc.yml + - file-metadata.yml + - jsshell.yml + - ktlint.yml + - mozlint.yml + - mozlint-android.yml + - node.yml + - puppeteer.yml + - python.yml + - shadow-scheduler.yml + - taskgraph.yml + - vendor.yml + - webidl.yml + - webcompat.yml + - wpt-manifest.yml + - wpt-metadata.yml + +job-defaults: + use-python: default + attributes: + retrigger: true + task-context: + from-object: {} + substitution-fields: [] diff --git a/taskcluster/kinds/source-test/ktlint.yml b/taskcluster/kinds/source-test/ktlint.yml new file mode 100644 index 0000000000..1828887dc0 --- /dev/null +++ b/taskcluster/kinds/source-test/ktlint.yml @@ -0,0 +1,56 @@ +# 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/. +--- +job-defaults: + description: 'Run ktlint over all modules' + run: + using: gradlew + gradlew: ['ktlint'] + use-caches: false + attributes: + code-review: true + always-target: true + fetches: + toolchain: + - android-sdk-linux + - android-gradle-dependencies + - linux64-jdk-repack + platform: 'lint/opt' + treeherder: + kind: test + tier: 1 + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: lint} + max-run-time: 1200 + when: + files-changed: + - "mobile/android/android-components/**" + +android-components: + run: + pre-gradlew: + - ["cd", "mobile/android/android-components"] + treeherder: + symbol: ktlint(AC) + +focus: + when: + files-changed: + - "mobile/android/focus-android/**" + run: + pre-gradlew: + - ["cd", "mobile/android/focus-android"] + treeherder: + symbol: ktlint(focus) + +fenix: + when: + files-changed: + - "mobile/android/fenix/**" + run: + pre-gradlew: + - ["cd", "mobile/android/fenix"] + treeherder: + symbol: ktlint(fenix) diff --git a/taskcluster/kinds/source-test/mozlint-android.yml b/taskcluster/kinds/source-test/mozlint-android.yml new file mode 100644 index 0000000000..6602d8c818 --- /dev/null +++ b/taskcluster/kinds/source-test/mozlint-android.yml @@ -0,0 +1,106 @@ +# 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/. +--- + +# Just one TC job that runs all the lints. There's no real advantage +# to running them separately, and this way we perform the expensive +# clone and somewhat expensive compilation of the Android +# intermediates just once. +lints: + always-target: true + attributes: + build_platform: android + build_type: opt + code-review: true + description: Android lints + platform: lint/opt + treeherder: + symbol: A(lints) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: android-build} + env: + GRADLE_USER_HOME: /builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline + MOZCONFIG: mobile/android/config/mozconfigs/android-arm/nightly-android-lints + MOZ_OBJDIR: obj-firefox + PERFHERDER_EXTRA_OPTIONS: android-lints + TINDERBOX_OUTPUT: '1' + max-run-time: 3600 + artifacts: + - type: file + name: public/code-review/mozlint.json + path: /builds/worker/mozlint.json + - name: public/android/geckoview/api.txt + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/api.txt + type: file + - name: public/android/geckoview/api.txt.map + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/api.txt.map + type: file + - name: public/android/geckoview/apilint-result.json + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/apilint-result.json + type: file + - name: public/android/geckoview/javadoc-results.json + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/javadoc-results-withGeckoBinariesDebug.json + type: file + - name: public/geckoview/unittest + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/tests + type: directory + - name: public/android/lint/lint-results-officialWithoutGeckoBinariesDebug.html + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/lint-results-withGeckoBinariesDebug.html + type: file + - name: public/android/lint/lint-results-withGeckoBinariesDebug.xml + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/lint-results-withGeckoBinariesDebug.xml + type: file + - name: public/android/checkstyle/checkstyle.html + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/checkstyle/withGeckoBinariesDebug.html + type: file + - name: public/android/checkstyle/checkstyle.xml + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/checkstyle/withGeckoBinariesDebug.xml + type: file + run: + using: run-task + command: > + ln -s $MOZ_FETCHES_DIR/android-gradle-dependencies $GECKO_PATH && + ln -s $MOZ_FETCHES_DIR/android-sdk-linux $GECKO_PATH && + ln -s $MOZ_FETCHES_DIR/node $GECKO_PATH && + cd $GECKO_PATH && + ./mach --log-no-times build pre-export export && + ./mach --log-no-times lint -f treeherder -f json:/builds/worker/mozlint.json + --linter android-api-lint + --linter android-format + --linter android-javadoc + --linter android-checkstyle + --linter android-lint + --linter android-test + * + tooltool-downloads: internal # For internal toolchains. + fetches: + toolchain: + # Aliases aren't allowed for toolchains installed by fetch. + - linux64-android-gradle-dependencies + - linux64-android-sdk-linux-repack + - linux64-jdk-repack + - linux64-node + when: + files-changed: + # Source files. + - 'mobile/android/**/*.java' + - 'mobile/android/**/*.kt' + # Resources. + - 'mobile/android/**/*.jpeg' + - 'mobile/android/**/*.jpg' + - 'mobile/android/**/*.png' + - 'mobile/android/**/*.svg' + - 'mobile/android/**/*.xml' + # Build stuff. + - 'mobile/android/**/Makefile.in' + - 'mobile/android/config/**' + - 'mobile/android/gradle.configure' + - 'mobile/android/**/moz.build' + - '**/*.gradle' + # Other misc lint related files. + - 'python/mozlint/**' + - 'tools/lint/**' diff --git a/taskcluster/kinds/source-test/mozlint.yml b/taskcluster/kinds/source-test/mozlint.yml new file mode 100644 index 0000000000..e101049103 --- /dev/null +++ b/taskcluster/kinds/source-test/mozlint.yml @@ -0,0 +1,621 @@ +# 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/. +--- +job-defaults: + always-target: true + attributes: + code-review: true + treeherder: + kind: test + tier: 1 + platform: lint/opt + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + artifacts: + - type: file + name: public/code-review/mozlint.json + path: /builds/worker/mozlint.json + run: + using: mach + when: + files-changed: + # Other misc lint related files. + - 'python/mozlint/**' + - 'tools/lint/**' + +codespell: + description: Checks for misspellings in text files + treeherder: + symbol: text(spell) + # We don't want patches to be backed out because of a typo, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l codespell -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.js' + - '**/*.jsm' + - '**/*.jxs' + - '**/*.mjs' + - '**/*.xml' + - '**/*.html' + - '**/*.xhtml' + - '**/*.cpp' + - '**/*.c' + - '**/*.h' + - '**/*.configure' + - '**/*.py' + - '**/*.properties' + - '**/*.rst' + - '**/*.ftl' + - 'tools/lint/codespell.yml' + + +rejected-words: + description: Reject some words we don't want to use in the code base + treeherder: + symbol: text(rejected-words) + # We don't want patches to be backed out because of this, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l rejected-words -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.js' + - '**/*.jsm' + - '**/*.jxs' + - '**/*.mjs' + - '**/*.xml' + - '**/*.html' + - '**/*.xhtml' + - '**/*.cpp' + - '**/*.c' + - '**/*.h' + - '**/*.idl' + - '**/*.webidl' + - '**/*.configure' + - '**/*.py' + - '**/*.properties' + - '**/*.rst' + - '**/*.ftl' + - '**/*.java' + - '**/*.kt' + - 'tools/lint/rejected-words.yml' + +eslint: + description: JS lint check + treeherder: + symbol: js(ES) + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach lint -v -l eslint -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + # Files that are likely audited. + - '**/*.js' + - '**/*.jsm' + - '**/*.json' + - '**/*.jsx' + - '**/*.mjs' + - '**/*.sjs' + - '**/*.html' + - '**/*.xhtml' + - '**/*.xml' + - 'tools/lint/eslint.yml' + # Run when eslint policies change. + - '**/.eslintignore' + - '**/*eslintrc*' + # The plugin implementing custom checks. + - 'tools/lint/eslint/eslint-plugin-mozilla/**' + - 'tools/lint/eslint/eslint-plugin-spidermonkey-js/**' + +eslint-build: + description: ESLint checks with build data + always-target: false + # Triggered by cron task, don't run on any projects and disable optimization. + run-on-projects: [] + when: null + attributes: + code-review: false + treeherder: + symbol: js(ES-B) + tier: 2 + run: + using: run-task + cwd: '{checkout}' + command: > + export MOZ_XPT_ARTIFACTS_DIR="$MOZ_FETCHES_DIR/$MOZ_XPT_ARTIFACTS_DIRNAME" && + find "$MOZ_XPT_ARTIFACTS_DIR" && + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach lint -v -l eslint -f treeherder --quiet -f json:/builds/worker/mozlint.json . --rule "mozilla/valid-services-property: error" --rule "mozilla/valid-ci-uses: error" + worker: + env: + MOZ_XPT_ARTIFACTS_DIRNAME: xpt_artifacts + require-build: + .*: build-linux64/opt + fetches: + build: + - artifact: target.xpt_artifacts.zip + dest: xpt_artifacts + +stylelint: + description: CSS lint check + treeherder: + symbol: stylelint + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + ./mach lint -v -l stylelint -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + # Files that are likely audited. + - '**/*.css' + - 'tools/lint/styleint.yml' + # Run when stylelint policies change. + - '**/.stylelintignore' + - '**/*stylelintrc*' + +license: + description: Check for license blocks in source files. + treeherder: + symbol: pedantic(license) + run: + mach: lint -v -l license -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.css' + - '**/*.dtd' + - '**/*.ftl' + - '**/*.h' + - '**/*.html' + - '**/*.idl' + - '**/*.js' + - '**/*.jsm' + - '**/*.jsx' + - '**/*.m' + - '**/*.mjs' + - '**/*.mm' + - '**/*.properties' + - '**/*.py' + - '**/*.rs' + - '**/*.svg' + - '**/*.webidl' + - '**/*.xhtml' + - '**/*.xml' + - 'tools/lint/license.yml' + +lintpref: + description: Check for duplicates between all.js and StaticPrefList.yaml. + treeherder: + symbol: misc(pref) + run: + mach: lint -v -l lintpref -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - 'modules/libpref/init/all.js' + - 'modules/libpref/init/StaticPrefList.yaml' + - 'browser/app/profile/firefox.js' + - 'devtools/client/preferences/debugger.js' + - 'mobile/android/app/geckoview-prefs.js' + - 'browser/branding/official/pref/firefox-branding.js' + - 'browser/branding/nightly/pref/firefox-branding.js' + - 'browser/branding/unofficial/pref/firefox-branding.js' + - 'browser/branding/aurora/pref/firefox-branding.js' + - 'browser/app/profile/channel-prefs.js' + - 'mobile/android/installer/mobile-l10n.js' + - 'mobile/android/locales/en-US/mobile-l10n.js' + - 'tools/lint/lintpref.yml' + +mingw-cap: + description: lint for MinGW Capitalization issues + treeherder: + symbol: misc(mingw) + run: + mach: lint -v -l mingw-capitalization -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.cpp' + - '**/*.cc' + - '**/*.c' + - '**/*.h' + - 'tools/lint/mingw-capitalization.yml' + +updatebot: + description: Ensure moz.yaml files are valid per schema + treeherder: + symbol: misc(mozyaml) + run: + mach: lint -v -l updatebot -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/moz.yaml' + +mscom-init: + description: Lint for Microsoft COM initialization + treeherder: + symbol: misc(mscom) + run: + mach: lint -v -l mscom-init -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.cpp' + - '**/*.cc' + - '**/*.c' + - '**/*.h' + - 'tools/lint/mscom-init.yml' + +py-black: + description: black run over the gecko codebase + treeherder: + symbol: py(black) + run: + mach: lint -v -l black -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + # The list of extensions should match tools/lint/black.yml + - '**/*.py' + - '**/moz.build' + - '**/*.configure' + - '**/*.mozbuild' + - 'pyproject.toml' + - 'tools/lint/black.yml' + +py-ruff: + description: Run ruff over the gecko codebase + treeherder: + symbol: py(ruff) + run: + mach: lint -v -l ruff -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.py' + - '**/*.configure' + - '**/.ruff.toml' + - 'pyproject.toml' + - 'tools/lint/ruff.yml' + - 'tools/lint/python/ruff.py' + - 'tools/lint/python/ruff_requirements.txt' + +test-manifest: + description: lint test manifests + treeherder: + symbol: misc(tm) + run: + mach: lint -v -l test-manifest-alpha -l test-manifest-disable -l test-manifest-skip-if -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.toml' + - 'python/mozlint/**' + - 'tools/lint/**' + - 'tools/lint/test-disable.yml' + +wptlint-gecko: + description: web-platform-tests linter + treeherder: + symbol: misc(W) + run: + mach: lint -v -l wpt -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - 'testing/web-platform/tests/**' + - 'testing/web-platform/mozilla/tests/**' + - 'tools/lint/wpt.yml' + +yaml: + description: yamllint run over the gecko codebase + treeherder: + symbol: pedantic(yaml) + run: + mach: lint -v -l yaml -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.yml' + - '**/*.yaml' + - '**/.ymllint' + +rst: + description: rst lint run over the gecko codebase + treeherder: + symbol: text(rst) + run: + mach: lint -v -l rst -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.rst' + - 'tools/lint/rst.yml' + +shellcheck: + description: shellcheck run over the gecko codebase + treeherder: + symbol: misc(shell) + run: + mach: lint -v -l shellcheck -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.sh' + - 'tools/lint/shellcheck.yml' + + +localization: + description: l10n tests for strings with errors + treeherder: + symbol: l10n(l1nt) + run: + mach: lint -v -l l10n -f treeherder * + attributes: + code-review: false + when: + files-changed: + - '**/locales/en-US/**' + - '**/l10n.toml' + - 'third_party/python/compare-locales/**' + - 'third_party/python/fluent/**' + - 'tools/lint/l10n.yml' + + +l10n-conflicts: + description: l10n tests for strings with errors and conflicts with cross-channel + treeherder: + symbol: l10n(l1nt-conflicts) + always-target: false + run-on-projects: [] + run: + mach: lint -W -l l10n -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/locales/en-US/**' + - '**/l10n.toml' + - 'third_party/python/compare-locales/**' + - 'third_party/python/fluent/**' + - 'tools/lint/l10n.yml' + + +clang-format: + description: clang-format on the C/C++ code + treeherder: + symbol: cpp(clang-format) + run: + mach: lint -v -l clang-format -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.cpp' + - '**/*.c' + - '**/*.cc' + - '**/*.h' + - '**/*.m' + - '**/*.mm' + - 'tools/lint/clang-format.yml' + dependencies: + linux64-clang-tidy: toolchain-linux64-clang-tidy + fetches: + linux64-clang-tidy: + - artifact: clang-tidy.tar.zst + dest: clang-tools + + +rustfmt: + description: rustfmt on the Rust code + treeherder: + symbol: rust(rustfmt) + run: + mach: lint -v -l rustfmt -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.rs' + - 'tools/lint/rustfmt.yml' + fetches: + toolchain: + - linux64-rust + + +clippy: + description: clippy on the Rust code + treeherder: + symbol: rust(clippy) + run: + mach: lint -v -l clippy -f treeherder -f json:/builds/worker/mozlint.json -j 1 . + when: + files-changed: + - '**/*.rs' + - '**/Cargo.toml' + - 'tools/lint/clippy.yml' + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + +file-whitespace: + description: Check for trailing whitespaces and Windows CR + platform: lint/opt + treeherder: + symbol: pedantic(file-whitespace) + # We don't want patches to be backed out because of this, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l file-whitespace -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.css' + - '**/*.dtd' + - '**/*.idl' + - '**/*.ftl' + - '**/*.h' + - '**/*.html' + - '**/*.json' + - '**/*.md' + - '**/*.mn' + - '**/*.properties' + - '**/*.py' + - '**/*.rs' + - '**/*.rst' + - '**/*.toml' + - '**/*.webidl' + - '**/*.yaml' + - '**/*.yml' + - '**/*.xhtml' + + +file-perm: + description: Check for incorrect permissions on source files + platform: lint/opt + treeherder: + symbol: pedantic(file-perm) + # We don't want patches to be backed out because of this, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l file-perm -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.build' + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.flac' + - '**/*.h' + - '**/*.html' + - '**/*.idl' + - '**/*.js' + - '**/*.jsm' + - '**/*.json' + - '**/*.jsx' + - '**/*.m' + - '**/*.m4s' + - '**/*.md' + - '**/*.mjs' + - '**/*.mm' + - '**/*.mn' + - '**/*.mozbuild' + - '**/*.mp4' + - '**/*.png' + - '**/*.rs' + - '**/*.rst' + - '**/*.svg' + - '**/*.toml' + - '**/*.ttf' + - '**/*.wasm' + - '**/*.webidl' + - '**/*.xhtml' + - '**/*.xml' + - '**/*.yaml' + - '**/*.yml' + + +perfdocs-verify: + description: Verifies Performance Testing documentation + treeherder: + symbol: text(perfdocs) + run: + mach: lint -v -l perfdocs -f treeherder -f json:/builds/worker/mozlint.json . + worker: + env: + WORKSPACE: /builds/worker/checkouts/gecko/ + DECISION_TASK_ID: {task-reference: <decision>} + artifacts: + - type: file + name: public/perfdocs.diff + path: /builds/worker/diff.txt + when: + files-changed: + - 'devtools/perfdocs/**' + - 'taskcluster/**' + - '**/perftest.toml' + - 'python/mozperftest/**' + - 'testing/awsy/**' + - 'testing/raptor/**' + - 'testing/talos/**' + - 'testing/performance/**' + - 'testing/perfdocs/**' + - 'tools/lint/perfdocs.yml' + +condprof-addons-verify: + description: | + Verifies all xpi files needed by condprof customization sideloading addons are + included in the firefox-addons fetch task. + treeherder: + symbol: misc(condprof-addons) + run: + mach: | + lint -v -l condprof-addons -f treeherder -f json:/builds/worker/mozlint.json . + fetches: + fetch: + - firefox-addons + when: + files-changed: + - 'testing/condprofile/condprof/customization/*.json' + - 'taskcluster/ci/fetch/browsertime.yml' + +fluent-lint: + description: Check for problems with Fluent files. + platform: lint/opt + treeherder: + symbol: l10n(fluent) + run: + mach: lint --linter fluent-lint -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.ftl' + - 'tools/lint/fluent-lint.yml' + - 'tools/lint/fluent-lint/exclusions.yml' + +trojan-source: + description: Trojan Source attack - CVE-2021-42572 + platform: lint/opt + treeherder: + symbol: misc(trojan-source) + run: + mach: lint -v -l trojan-source --include-third-party -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.h' + - '**/*.py' + - '**/*.rs' + - 'tools/lint/trojan-source.yml' + +ignorefile-test: + description: .gitignore vs .hgignore consistency check + platform: lint/opt + treeherder: + symbol: ignorefile + run: + mach: lint -v -l ignorefile .gitignore .hgignore + when: + files-changed: + - '.gitignore' + - '.hgignore' diff --git a/taskcluster/kinds/source-test/node.yml b/taskcluster/kinds/source-test/node.yml new file mode 100644 index 0000000000..1d8c8348fb --- /dev/null +++ b/taskcluster/kinds/source-test/node.yml @@ -0,0 +1,221 @@ +# 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/. +--- +newtab-unit-tests: + description: newtab unit tests + platform: linux1804-64/opt + treeherder: + symbol: node(newtab) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 1800 + require-build: + by-project: + autoland: + linux1804-64/opt: build-linux64/opt + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + command: > + cd /builds/worker/checkouts/gecko && + rm -rf node_modules && + npm ci && + cd /builds/worker/checkouts/gecko/browser/components/aboutwelcome && + rm -rf node_modules && + npm ci && + cd /builds/worker/checkouts/gecko/browser/components/asrouter && + rm -rf node_modules && + npm ci && + cd /builds/worker/checkouts/gecko/browser/components/newtab && + rm -rf node_modules && + npm ci && + node bin/try-runner.js + when: + files-changed: + - "browser/components/newtab/**" + - "browser/components/aboutwelcome/**" + - "browser/components/asrouter/**" + +newtab-unit-tests-ccov: + description: newtab unit tests code coverage + platform: linux1804-64/opt + treeherder: + symbol: node(newtab-ccov) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 1800 + artifacts: + - name: public/code-coverage-grcov.zip + path: /builds/worker/checkouts/gecko/browser/components/newtab/logs/coverage/code-coverage-grcov.zip + type: file + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + command: > + cd /builds/worker/checkouts/gecko && + rm -rf node_modules && + npm ci && + cd /builds/worker/checkouts/gecko/browser/components/aboutwelcome && + rm -rf node_modules && + npm ci && + cd /builds/worker/checkouts/gecko/browser/components/asrouter && + rm -rf node_modules && + npm ci && + cd /builds/worker/checkouts/gecko/browser/components/newtab && + rm -rf node_modules && + npm ci && + node bin/try-runner.js + # This should only run on mozilla-central, as the bot will only parse mozilla-central + # coverage anyways. + run-on-projects: ["mozilla-central"] + # Note the lack of a "when" rule here. This is to avoid seeing fluctuating + # coverage on coverage.moz.tools / searchfox depending on whether the latest + # push contained patches touching these files or not. + +devtools-tests: + description: devtools node-based tests (for instance jest) + platform: linux1804-64/opt + attributes: + code-review: true + treeherder: + symbol: node(devtools) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + artifacts: + - type: file + name: public/code-review/issues.json + path: /builds/worker/issues.json + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + # Re-use rather than re-installing to avoid hitting/requiring + # nodejs servers for downloads + command: > + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + cd devtools/client/bin/ && + node devtools-node-test-runner.js --suite=all --artifact=/builds/worker/issues.json + when: + files-changed: + - 'devtools/client/**' + - 'devtools/shared/**' + +devtools-verify-bundle: + description: devtools bundle checker + platform: linux1804-64/opt + attributes: + code-review: true + treeherder: + symbol: node(devtools-bundle) + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1200 + artifacts: + - type: file + name: public/code-review/issues.json + path: /builds/worker/issues.json + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + # Re-use rather than re-installing to avoid hitting/requiring + # nodejs servers for downloads + command: > + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + cd devtools/client/debugger && + yarn && + node bin/bundle.js && + cd ../../.. && + ./mach python taskcluster/scripts/misc/verify-devtools-bundle.py --output /builds/worker/issues.json + when: + files-changed: + - 'devtools/**' + +eslint-plugin-mozilla: + description: eslint-plugin-mozilla integration tests + platform: linux1804-64/opt + treeherder: + symbol: node(epm) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}/tools/lint/eslint/eslint-plugin-mozilla' + command: > + cp -r /build/node_modules_eslint-plugin-mozilla node_modules && + npm run test + when: + files-changed: + - 'tools/lint/eslint/eslint-plugin-mozilla/**' + +design-tokens-tests: + description: design tokens unit tests + platform: linux1804-64/opt + treeherder: + symbol: node(design-tokens) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 1800 + require-build: + by-project: + autoland: + linux1804-64/opt: build-linux64/opt + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + command: > + cd /builds/worker/checkouts/gecko && + rm -rf node_modules && + npm ci && + cd /builds/worker/checkouts/gecko/toolkit/themes/shared/design-system && + rm -rf node_modules && + npm ci && + node tests/try-runner.js + when: + files-changed: + - "toolkit/themes/shared/design-system/**" diff --git a/taskcluster/kinds/source-test/puppeteer.yml b/taskcluster/kinds/source-test/puppeteer.yml new file mode 100644 index 0000000000..3bfd1a9645 --- /dev/null +++ b/taskcluster/kinds/source-test/puppeteer.yml @@ -0,0 +1,52 @@ +# 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/. +--- +job-defaults: + platform: linux1804-64/opt + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + fetches: + build: + - target.tar.bz2 + toolchain: + - linux64-node + treeherder: + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: ubuntu1804-test} + max-run-time: 3600 + artifacts: + - type: file + name: public/remote/pup_errorsummary.json + path: /builds/worker/pup_errorsummary.json + optimization: + skip-unless-expanded: null + +puppeteer: + description: Puppeteer tests against Firefox CDP-based remote protocol + treeherder: + symbol: Pup(cdp) + run: # Bug 1651542: Use screenshot feature to warm-up the font cache before the actual test + using: run-task + command: > + cd $GECKO_PATH/ && + $MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org && + ./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --cdp --headless --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json + +puppeteer-with-bidi: + description: Puppeteer tests against Firefox Webdriver BiDi remote protocol + treeherder: + symbol: Pup(wd) + run: # Bug 1651542: Use screenshot feature to warm-up the font cache before the actual test + using: run-task + command: > + cd $GECKO_PATH/ && + $MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org && + ./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --headless --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json diff --git a/taskcluster/kinds/source-test/python.yml b/taskcluster/kinds/source-test/python.yml new file mode 100644 index 0000000000..c8214d17d5 --- /dev/null +++ b/taskcluster/kinds/source-test/python.yml @@ -0,0 +1,637 @@ +# 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/. +--- +job-defaults: + platform: linux1804-64/opt + always-target: + by-platform: + macosx.*: false + default: true + worker-type: + by-platform: + linux1804-64.*: t-linux-xlarge-source + macosx1015-64.*: t-osx-1015-r8 + windows11-64.*: win11-64-2009-source + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "lint"} + max-run-time: 3600 + macosx.*: + max-run-time: 3600 + env: + PATH: "/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin" + default: + max-run-time: 3600 + use-python: default + treeherder: + kind: test + tier: 1 + run: + using: mach + when: + files-changed: + - 'config/mozunit/**' + - 'python/mach_commands.py' + +firefox-ci: + description: taskcluster/gecko_taskgraph unit tests + always-target: false + python-version: [3] + treeherder: + symbol: ci + run: + using: python-test + subsuite: ci + when: + files-changed: + - '.taskcluster.yml' + - 'taskcluster/kinds/**' + - 'taskcluster/**/*.py' + - 'tools/tryselect/selectors/auto.py' + +fog: + description: Python unit tests for Firefox on Glean + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: fp + run: + using: python-test + subsuite: fog + when: + files-changed: + - 'toolkit/components/glean/**' + +mach: + description: python/mach unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mach + run: + using: python-test + subsuite: mach + when: + files-changed: + - 'python/mach/**' + - 'python/sites/**' + +marionette-harness: + description: testing/marionette/harness unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mnh + run: + using: python-test + subsuite: marionette-harness + when: + files-changed: + - 'testing/marionette/harness/**' + - 'testing/mozbase/mozlog/mozlog/**' + - 'testing/mozbase/mozlog/setup.py' + +mochitest-harness: + description: testing/mochitest unittests + platform: + - linux1804-64/opt + - linux1804-64/debug + - linux1804-64-asan/opt + always-target: false + require-build: + by-project: + try: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64/opt + default: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64-shippable/opt + treeherder: + symbol: py3(mch) + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + run: + using: run-task + cwd: '{checkout}' + command: > + source /builds/worker/scripts/xvfb.sh && + start_xvfb '1600x1200x24' 0 && + export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox && + export TEST_HARNESS_ROOT=$MOZ_FETCHES_DIR/tests && + ./mach python-test --subsuite mochitest + fetches: + build: + - target.tar.bz2 + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.mochitest.tests.tar.gz + dest: tests + toolchain: + - linux64-fix-stacks + when: + files-changed: + - 'testing/mochitest/**' + - 'testing/mozbase/mozrunner/mozrunner/**' + - 'testing/mozbase/moztest/moztest/selftest/**' + - 'testing/mozharness/mozharness/base/log.py' + - 'testing/mozharness/mozharness/mozilla/structuredlog.py' + - 'testing/mozharness/mozharness/mozilla/testing/errors.py' + - 'testing/profiles/**' + + +mozbase: + description: testing/mozbase unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mb + run: + using: python-test + subsuite: mozbase + when: + files-changed: + - 'testing/mozbase/**' + +mozharness: + description: mozharness integration tests + treeherder: + symbol: py3(mh) + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}/testing/mozharness' + command: > + /usr/local/bin/tox -e py311-hg6.4 + when: + files-changed: + - 'testing/mozharness/**' + +mozlint: + description: python/mozlint unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mozlint + tier: 2 + run: + using: python-test + subsuite: mozlint + dependencies: + clang-tidy: + by-platform: + linux1804-64/opt: toolchain-linux64-clang-tidy + macosx1015-64/opt: toolchain-macosx64-clang-tidy + windows11-64/opt: toolchain-win64-clang-tidy + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + - linux64-rust + macosx1015-64/opt: + - macosx64-node + - macosx64-rust + windows11-64/opt: + - win64-node + - win64-rust + clang-tidy: + - artifact: clang-tidy.tar.zst + dest: clang-tools + when: + files-changed: + - 'python/mozlint/**' + - 'tools/lint/**' + +mozrelease: + description: python/mozrelease unit tests + python-version: [3] + treeherder: + symbol: release + run: + using: python-test + subsuite: mozrelease + when: + files-changed: + - 'python/mozrelease/**' + +mozterm: + description: python/mozterm unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: term + run: + using: python-test + subsuite: mozterm + when: + files-changed: + - 'python/mozterm/**' + +mozversioncontrol: + description: python/mozversioncontrol unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: vcs + run: + using: python-test + subsuite: mozversioncontrol + when: + files-changed: + - 'python/mozversioncontrol/**' + +raptor: + description: testing/raptor unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: rap + run: + using: python-test + subsuite: raptor + when: + files-changed: + - 'testing/raptor/**' + +reftest-harness: + description: layout/tools/reftest unittests + platform: + - linux1804-64/opt + - linux1804-64/debug + - linux1804-64-asan/opt + require-build: + by-project: + try: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64/opt + default: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64-shippable/opt + always-target: false + treeherder: + symbol: py3(ref) + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + run: + using: run-task + cwd: '{checkout}' + command: > + source /builds/worker/scripts/xvfb.sh && + start_xvfb '1600x1200x24' 0 && + export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox && + export TEST_HARNESS_ROOT=$MOZ_FETCHES_DIR/tests && + ./mach python-test --subsuite reftest + fetches: + build: + - target.tar.bz2 + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.reftest.tests.tar.gz + dest: tests + toolchain: + - linux64-fix-stacks + when: + files-changed: + - 'layout/tools/reftest/**' + - 'testing/mozbase/mozrunner/mozrunner/**' + - 'testing/mozbase/moztest/moztest/selftest/**' + - 'testing/mozharness/mozharness/base/log.py' + - 'testing/mozharness/mozharness/mozilla/structuredlog.py' + - 'testing/mozharness/mozharness/mozilla/testing/errors.py' + +taskgraph-tests: + description: taskcluster/gecko_taskgraph unit tests + python-version: [3] + treeherder: + symbol: tg + run: + using: python-test + subsuite: taskgraph + when: + files-changed: + - 'taskcluster/**/*.py' + - 'python/mach/**/*.py' + +tryselect: + description: tools/tryselect unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: try + run: + using: python-test + subsuite: try + when: + files-changed: + - 'taskcluster/config.yml' + - 'taskcluster/kinds/test/**' + - 'taskcluster/gecko_taskgraph/transforms/**' + - 'tools/tryselect/**' + +mozbuild: + description: mozbuild unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mbu + run: + using: python-test + subsuite: mozbuild + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + macosx1015-64/opt: + - macosx64-node + windows11-64/opt: + - win64-node + - win64-mozmake + when: + files-changed: + - '**/moz.configure' + - 'build/moz.configure/**' + - 'config/tests/**' + - 'dom/bindings/mozwebidlcodegen/**' + - 'modules/libpref/init/**' + - 'modules/libpref/test/**' + - 'python/mach/**' + - 'python/mozboot/**' + - 'python/mozbuild/**' + - 'python/mozterm/**' + - 'python/mozversioncontrol/**' + - 'testing/mozbase/**' + - 'testing/xpcshell/xpcshellcommandline.py' + +mozperftest: + description: mozperftest unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + treeherder: + symbol: mpu + run: + mach: perftest-test + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + macosx1015-64/opt: + - macosx64-node + windows11-64/opt: + - win64-node + when: + files-changed: + - 'testing/performance/**' + - 'python/mozperftest/**' + +fxms-schemas: + description: > + Ensure messaging-system schemas are up-to-date and run Experimenter + integration tests. + platform: + - linux1804-64/opt + treeherder: + symbol: py3(fxms) + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64/opt + fetches: + build: + - artifact: target.tar.bz2 + - artifact: target.common.tests.tar.gz + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + run: + using: run-task + cwd: '{checkout}' + command: > + cd browser/components/asrouter/content-src/schemas && + env LD_LIBRARY_PATH=${MOZ_FETCHES_DIR}/firefox \ + ${MOZ_FETCHES_DIR}/bin/xpcshell \ + -g ${MOZ_FETCHES_DIR}/firefox \ + -a ${MOZ_FETCHES_DIR}/firefox/browser \ + extract-test-corpus.js + ../../../../../mach python -- make-schemas.py --check + when: + files-changed: + - 'browser/components/asrouter/content-src/schemas/extract-test-corpus.js' + - 'browser/components/asrouter/content-src/schemas/make-schemas.py' + - 'browser/components/asrouter/content-src/**/*.schema.json' + - 'browser/components/asrouter/modules/CFRMessageProvider.sys.mjs' + - 'browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs' + - 'browser/components/asrouter/modules/PanelTestProvider.sys.mjs' + +condprof: + description: testing/condprofile unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: condprof + run: + using: python-test + subsuite: condprof + when: + files-changed: + - 'testing/condprofile/condprof**' + - 'testing/condprofile/setup.py' + +featuregates: + description: featuregates Python unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: fg + run: + using: python-test + subsuite: featuregates + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + windows11-64/opt: + - win64-node + when: + files-changed: + - 'toolkit/components/featuregates/**' + +skip-fails: + description: testing/skip-fails unit tests + always-target: false + python-version: [3] + treeherder: + symbol: sf + run: + using: python-test + subsuite: skip-fails + when: + files-changed: + - 'testing/skipfails.py' + - 'testing/test/**' + +talos: + description: testing/talos unit tests + platform: windows11-64/opt + python-version: [3] + treeherder: + symbol: tal + run: + using: python-test + subsuite: talos + when: + files-changed: + - 'testing/talos/**' + +telemetry-integration-tests: + description: pytest-based integration tests for Telemetry + always-target: false + platform: + - linux1804-64/opt + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + treeherder: + symbol: tt(i) + tier: 3 + run-on-projects: [] + run: + using: run-task + cwd: '{checkout}' + command: > + source /builds/worker/scripts/xvfb.sh && + start_xvfb '1600x1200x24' 0 && + export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox && + ./mach python-test --subsuite telemetry-integration-tests + fetches: + build: + - target.tar.bz2 + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.reftest.tests.tar.gz + dest: tests + when: + files-changed: + - 'toolkit/components/telemetry/**' + +telemetry-python: + description: Python unit tests for Telemetry + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: tp + run: + using: python-test + subsuite: telemetry-python + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + macosx1015-64/opt: + - macosx64-node + windows11-64/opt: + - win64-node + when: + files-changed: + - 'toolkit/components/telemetry/**' + +webext: + description: WebExtensions python utilities unit tests + platform: + - linux1804-64/opt + python-version: [3] + treeherder: + symbol: webext-py + tier: 2 + run: + using: python-test + subsuite: webext-python + when: + files-changed: + - 'toolkit/components/extensions/webidl-api/**' + - 'toolkit/components/extensions/schemas/*.json' + - 'browser/components/extensions/schemas/*.json' + - 'mobile/android/components/extensions/schemas/*.json' + +xpcom: + description: xpcom unit tests + platform: + - linux1804-64/opt + python-version: [3] + treeherder: + symbol: xpcom + run: + using: python-test + subsuite: xpcom + when: + files-changed: + - 'third_party/python/ply/**' + - 'xpcom/components/*.py' + - 'xpcom/components/test/**' + - 'xpcom/ds/tools/**' + - 'xpcom/ds/test/**' + - 'xpcom/idl-parser/**' diff --git a/taskcluster/kinds/source-test/shadow-scheduler.yml b/taskcluster/kinds/source-test/shadow-scheduler.yml new file mode 100644 index 0000000000..97d1b1f30b --- /dev/null +++ b/taskcluster/kinds/source-test/shadow-scheduler.yml @@ -0,0 +1,178 @@ +# 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/. +--- +job-defaults: + platform: gecko-decision/opt + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 3600 + artifacts: + - type: file + name: public/shadow-scheduler/optimized-tasks.json + path: /builds/worker/optimized-tasks.json + env: + DECISION_TASK_ID: {task-reference: <decision>} + treeherder: + kind: other + tier: 3 + run-on-projects: ['autoland-only'] + run: + using: mach + mach: taskgraph optimized -v --json -p task-id=$DECISION_TASK_ID --output-file /builds/worker/optimized-tasks.json + sparse-profile: taskgraph + +relevant_tests: + description: Runs the relevant_tests optimization strategy instead of the default. + treeherder: + symbol: SS(relevant_tests) + index: + product: source + job-name: shadow-scheduler-relevant_tests + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.relevant_tests + +bugbug_tasks_medium: + description: Runs the bugbug_tasks_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_tasks_medium) + index: + product: source + job-name: shadow-scheduler-bugbug_tasks_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_tasks_medium + +bugbug_tasks_high: + description: Runs the bugbug_tasks_high optimization strategy (with a high confidence threshold) instead of the default. + treeherder: + symbol: SS(bugbug_tasks_high) + index: + product: source + job-name: shadow-scheduler-bugbug_tasks_high + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_tasks_high + +bugbug_debug_disperse: + description: Runs the bugbug_debug_disperse optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_debug_disperse) + index: + product: source + job-name: shadow-scheduler-bugbug_debug_disperse + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_debug_disperse + +bugbug_disperse_low: + description: Runs the bugbug_disperse_low optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disperse_low) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_low + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_low + +bugbug_disperse_medium: + description: Runs the bugbug_disperse_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disperse_med) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium + +bugbug_disperse_reduced_medium: + description: Runs the bugbug_disperse_reduced_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_di_r_med_noun) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_reduced_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_reduced_medium + +bugbug_reduced_manifests_config_selection_low: + description: Runs the bugbug_reduced_manifests_config_selection_low optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_r_c_s_low) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced_manifests_config_selection_low + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_manifests_config_selection_low + +bugbug_reduced_manifests_config_selection_medium: + description: Runs the bugbug_reduced_manifests_config_selection_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_r_c_s_med) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced_manifests_config_selection_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_manifests_config_selection_medium + +bugbug_disperse_medium_no_unseen: + description: Runs the bugbug_disperse_medium_no_unseen optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disp_med_noun) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_medium_no_unseen + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium_no_unseen + +bugbug_disperse_medium_only_one: + description: Runs the bugbug_disperse_medium_only_one optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disp_med_one) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_medium_only_one + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium_only_one + +bugbug_disperse_high: + description: Runs the bugbug_disperse_high optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disperse_high) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_high + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_high + +bugbug_reduced: + description: Runs the bugbug_reduced optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_reduced) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced + +bugbug_reduced_high: + description: Runs the bugbug_reduced optimization strategy (with a low confidence threshold) instead of the default. + treeherder: + symbol: SS(bugbug_reduced_high) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced_high + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_high diff --git a/taskcluster/kinds/source-test/taskgraph.yml b/taskcluster/kinds/source-test/taskgraph.yml new file mode 100644 index 0000000000..da3b27d33b --- /dev/null +++ b/taskcluster/kinds/source-test/taskgraph.yml @@ -0,0 +1,42 @@ +# 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/. +--- +diff: + description: Generates diffs of CI changes + platform: linux1804-64/opt + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + # Uncomment to upload logs of the generations as artifacts. + # env: + # XDG_CACHE_HOME: "/builds/worker/artifacts/cache" + artifacts: + - type: directory + name: public/taskgraph + path: /builds/worker/artifacts + attributes: + code-review: true + always-target: true + treeherder: + kind: test + platform: gecko-decision/opt + symbol: tgdiff + tier: 2 + task-context: + from-parameters: + base_rev: base_rev + substitution-fields: + - run.command + run: + using: run-task + cwd: '{checkout}' + command: >- + mkdir -p /builds/worker/artifacts/diffs && + ./mach taskgraph target --fast -p "taskcluster/test/params" --force-local-files-changed -o "/builds/worker/artifacts/diffs/diff.txt" --diff {base_rev} && + python taskcluster/scripts/misc/summarize-tgdiff.py /builds/worker/artifacts/diffs/ 20 + when: + files-changed: + - 'taskcluster/kinds/**' + - 'taskcluster/**/*.py' diff --git a/taskcluster/kinds/source-test/vendor.yml b/taskcluster/kinds/source-test/vendor.yml new file mode 100644 index 0000000000..c6594c6f68 --- /dev/null +++ b/taskcluster/kinds/source-test/vendor.yml @@ -0,0 +1,44 @@ +# 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/. +--- +job-defaults: + worker-type: t-linux-xlarge-source + attributes: + code-review: true + worker: + docker-image: {in-tree: static-analysis-build} + max-run-time: 1200 + artifacts: + - type: file + name: public/code-review/issues.json + path: /builds/worker/issues.json + treeherder: + kind: test + tier: 1 + platform: lint/opt + run: + using: run-task + +rust: + description: Rust vendoring validation + treeherder: + symbol: rust(vendor) + worker: + env: + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + run: + cwd: '{checkout}' + command: >- + ./mach vendor rust --issues-json /builds/worker/issues.json + fetches: + toolchain: + - linux64-cargo-vet + - linux64-rust + when: + files-changed: + - 'Cargo.lock' + - '**/Cargo.toml' + - 'python/mozbuild/mozbuild/vendor/vendor_rust.py' + - 'supply-chain/**' + - 'third_party/rust/**' diff --git a/taskcluster/kinds/source-test/webcompat.yml b/taskcluster/kinds/source-test/webcompat.yml new file mode 100644 index 0000000000..66ff7910a6 --- /dev/null +++ b/taskcluster/kinds/source-test/webcompat.yml @@ -0,0 +1,37 @@ +# 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/. +--- +job-defaults: + platform: linux1804-64/opt + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + fetches: + build: + - target.tar.bz2 + toolchain: + - linux64-geckodriver + run-on-projects: [] + treeherder: + kind: test + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: ubuntu1804-test} + max-run-time: 1800 + optimization: + skip-unless-expanded: null + +interventions: + description: webcompat intervention tests + treeherder: + symbol: wc(I) + tier: 3 + python-version: [3] + run: + using: mach + # Need to start Xvfb if we remove --headless + mach: test-interventions --headless --binary $MOZ_FETCHES_DIR/firefox/firefox --webdriver-binary $MOZ_FETCHES_DIR/geckodriver --log-tbpl - diff --git a/taskcluster/kinds/source-test/webidl.yml b/taskcluster/kinds/source-test/webidl.yml new file mode 100644 index 0000000000..eec7a75e38 --- /dev/null +++ b/taskcluster/kinds/source-test/webidl.yml @@ -0,0 +1,24 @@ +# 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/. +--- +test: + description: WebIDL parser tests + platform: lint/opt + treeherder: + symbol: Wp + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: mach + mach: webidl-parser-test --verbose + when: + files-changed: + - 'dom/bindings/parser/runtests.py' + - 'dom/bindings/parser/WebIDL.py' + - 'dom/bindings/parser/tests/**' + - 'other-licenses/ply/**' diff --git a/taskcluster/kinds/source-test/wpt-manifest.yml b/taskcluster/kinds/source-test/wpt-manifest.yml new file mode 100644 index 0000000000..06b29b60f5 --- /dev/null +++ b/taskcluster/kinds/source-test/wpt-manifest.yml @@ -0,0 +1,39 @@ +# 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/. +--- +job-defaults: + platform: linux64/opt + treeherder: + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + +upload: + description: Generate and store the web-platform-tests manifest + treeherder: + symbol: Wm + index: + product: source + job-name: manifest-upload + rank: build_date + run: + using: run-task + cwd: '{checkout}' + command: > + ./mach wpt-manifest-update --config testing/web-platform/wptrunner.ini --no-download + && tar -cvzf manifests.tar.gz -C testing/web-platform/ meta/MANIFEST.json mozilla/meta/MANIFEST.json + worker: + artifacts: + - type: file + path: /builds/worker/checkouts/gecko/manifests.tar.gz + name: public/manifests.tar.gz + + max-run-time: 3600 + when: + files-changed: + - 'testing/web-platform/tests/**' + - 'testing/web-platform/mozilla/tests/**' diff --git a/taskcluster/kinds/source-test/wpt-metadata.yml b/taskcluster/kinds/source-test/wpt-metadata.yml new file mode 100644 index 0000000000..b2c54d62b9 --- /dev/null +++ b/taskcluster/kinds/source-test/wpt-metadata.yml @@ -0,0 +1,58 @@ +# 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/. +--- +job-defaults: + platform: lint/opt + treeherder: + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + +summary: + description: Summarize wpt metadata + treeherder: + symbol: wpt-meta + index: + product: source + job-name: source-wpt-metadata-summary + run: + using: mach + mach: wpt-metadata-summary --out-dir=/builds/worker/artifacts + worker: + artifacts: + - type: directory + path: /builds/worker/artifacts + name: public + max-run-time: 2700 + when: + files-changed: + - 'testing/web-platform/meta/**' + - 'testing/web-platform/mozilla/meta/**' + - 'testing/web-platform/metasummary.py' + + +fission-regression: + description: Summarize fission regressions in wpt + treeherder: + symbol: wpt-fis + index: + product: source + job-name: source-wpt-fission-regressions + run: + using: mach + mach: wpt-fission-regressions --all-json /builds/worker/artifacts/regressions.json --untriaged /builds/worker/artifacts/untriaged.txt + worker: + artifacts: + - type: directory + path: /builds/worker/artifacts + name: public + max-run-time: 2700 + when: + files-changed: + - 'testing/web-platform/meta/**' + - 'testing/web-platform/mozilla/meta/**' + - 'testing/web-platform/fissionregressions.py' |