Translations/GenerateTemplatesOnTestServers

Not logged in - Log In / Register

Revision 10 as of 2010-04-20 10:03:32

Clear message

Trying out template generation on dogfood/staging

Right now we have no good test platform for this: staging has no build farm, and dogfood has no codehosting. Expect this page to change a lot as we work and learn. We already have pages about doing this on a development system that may also help.

Approach

For now, we'll have to live with a split test setup:

Checklist

Firewall

The slaves in the dogfood build farm must be allowed to make http connections to whatever codehosting server you will be using.

TODO: Ensure this—bug 499407.

Config

Make sure that generating templates is enabled in the Launchpad lazr config.

The configuration item in question is generate_templates in the [rosetta] section.

Suitable branches

Make sure you have a branch that is pottery-compatible. (We call the code that generates templates from code "pottery"). For testing, it should normally not contain any .pot files. Otherwise we'd just end up importing those instead of ones we generated.

We don't yet know for sure what real-world branches will work right out of the box. We must fix that!

According to wgrant, editing configure.ac to set GETTEXT_PACKAGE ("or something like that") does the trick.

TODO: Easy litmus test to see if a branch will work with pottery.

TODO: Find a good real-world sample branch for testing—preferably small but with multiple templates.

Once you have a suitable branch, you can copy it to staging's codehosting using "bzr push -d lp:<branch> lp://staging/<branch> --use-existing-dir"

Procedure

Set up a product series on both staging and dogfood.

Set up a pottery-compatible branch on staging; set it as the product series' development branch.

Register a branch on dogfood, but do not push it (as dogfood has no codehosting). Set it as the product series' development branch.

Configure translation template imports for both product series.

Push a change to your branch on staging. Wait for it to be scanned.

Once the job is scanned, a triplet of matching records should appear in the staging database: a BranchJob, a Job, and a BuildQueue. They are matched on BranchJob.job, Job.id, and BuildQueue.job. In SQL it should be at the top of...

SELECT *
FROM BranchJob
JOIN Job ON Job.id = BranchJob.job
JOIN BuildQueue ON BuildQueue.job = Job.id
WHERE
    BranchJob.job_type = 6 AND
    BuildQueue.job_type = 4 AND
    Job.status = 0
ORDER BY Job.id DESC

Copy what you find directly into the dogfood database. Start with the Job:

INSERT INTO Job (status) values (0) RETURNING id

Note the id that this returns. Now, create a BranchJob using that job id, the id of your branch on dogfood, and a copy of the json_data as created on staging:

INSERT INTO BranchJob (job, branch, job_type, json_data)
VALUES (<jobid>, <branchid>, 6, <json>)

Finally, the BuildQueue entry:

INSERT INTO BuildQueue (job, job_type)
VALUES (<jobid>, 4)

This should be enough to get this job onto the build farm. Keep an eye on https://dogfood.launchpad.net/builders where it should appear shortly (and then, after processing, disappear again).

Once the job is successfully completed, any generated templates should appear on the productseries' translations import queue on dogfood.