Taskcluster

Taskcluster is used to automate the data generation for elmo.

Tasks that elmo is supposed to pick up and analyze need to publish to a well-known route on Pulse.

Note

The actual route is TBD. project.l10n.elmo.v1 ?

The artifact that the worker picks up needs to be called elmo.json.

Note

Do we need the public/ directory in artifacts?

From this file, the worker will find:

  • The version of the file, currently "1.0".

  • The version of compare-locales that generated the data, as string.

  • The repository (optional).

  • The list of generated comparisons.

Each artifact will contain data for all locales for a Tree, and may contain data for more than one Tree.

{
  "version": "1.0",
  "compare-locales": "8.0.0",
  "repository": "https://hg.mozilla.org/l10n/gecko-strings/",
  "comparisons": []
}

If the repository with the configurations is also the repository that controls the Taskcluster automation, the information for that repository is deduced from the task_definition["metadata"]["source"] metadata from the task.

Each entry in comparisons is an object like

{
  "locale": "ab-CD",
  "config": "_configs/browser.toml",
  "artifact": "compares/browser.ab-CD.json",
  "revisions": {
     "/l10n/gecko-strings/": "40chars",
     "/l10n-central/ab-CD/": "40chars"
  },

  "summary": {
     "errors": 0,
     "warnings": 0,
     "missing": 2914,
     "missing_w": 18651,
     "report": 0,
     "obsolete": 0,
     "changed": 8493,
     "changed_w": 46266,
     "unchanged": 1093,
     "unchanged_w": 1419,
     "keys": 877
  }
}

The locale value is a BCP47 locale code, config is a local path inside the repository. artifact is the name of an artifact on the task containing the detail compare-locales data as JSON. revisions holds the full hash of the revision of each repository that went into this comparison. The keys are resolved against the repository url to get the full repository location. summary is the full summary data from compare-locales.

Note

In the case of a monorepo, should we deduce the revision from the source metadata?

Discovering compare-locales

One downside of distributed automation for elmo is that each individual automation needs to be updated when we want a new version of compare-locales. How can we make this discoverable?