Closed
Bug 1083230
Opened 11 years ago
Closed 11 years ago
Scope repacking CI builds instead of building from scratch
Categories
(Release Engineering :: Release Automation, defect)
Release Engineering
Release Automation
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: lmandel, Unassigned)
Details
(Whiteboard: 2014q4)
When building betas and releases, relman typically waits for a ci build to complete so that we know that the changes that we are picking up have resulted in a good, green build. After the ci build completes we submit a build in ship-it, which then builds again. Rebuilding in this way seems to duplicate effort and increase the overall build time from check-in until QE can test. When I first started using ship-it I had expected that a build submitted to ship-it would pick up the results of the ci build and then do the rest of the required processing such as the additional of branding, signing, and partial generation.
This request is to see if we can reduce the build time by having ship-it repackage the output of the ci build rather than building from scratch.
Comment 1•11 years ago
|
||
This is a big project, so I'm going to morph this bug to be a scoping study, which we would like to do this quarter.
Some issues to consider:
* mozconfig differences between current dep+nightly vs release (eg branding, PGO, BUILDING_RELEASE=1)
* other build time configuration using #ifdef in code (eg MOZ_UPDATE_CHANNEL)
* re-signing binaries (not possible on windows ?)
* rearranging current work
* still need release configs/bumping/reconfigs ?
* after-the-fact tagging of en-US
* partial generation for en-US, balrog resubmission
* l10n repacks
* file locations for update verify etc
The first three points push me towards making the philosophical leap that all builds on beta/release/esr31 should use the appropriate release branding, signing certs, and update channel. In the past we've avoided that so that the download.com and neowin.net's of this world don't keep promoting 'unreleased' bits, but we should revisit that.
Summary: Repack ci builds instead of building from scratch in ship-it → Scope repacking CI builds instead of building from scratch
Whiteboard: 2014q4
Comment 2•11 years ago
|
||
We completed some discussion of this at the end of 2014, including in person in Portland and then afterwards. The result was:
No-one wants to repack, lets build what we want to ship the first time. We
should seek signoff from opsec on the signing changes (and fall back to
re-signing if necessary, osslsigncode may be able to strip sigs on windows);
ask if anyone needs to signoff on branding etc
Changes to en-US builds: release mozconfig, update channel/pretty packaging
and other environment variables, generate complete mar every time, possibly
other steps from release job too, add xulrunner sdk. Maybe do source in one
en-US build (linux/mac?), need to see how long it takes. See how the tests
go against beta signing and file naming, comparing to current dep builds
may be helpful.
Everything else is 'downstream', initially triggered by a sendchange, later
a human hitting a button on treeherder (or similar)
* new release-sanity, which grabs l10n revisions and checks 'em, all en-US
builds available, important tests pass ?
* tagging - very limited value in tagging m-b repo for each beta, but still
important for release; lazy relbranches
* source - needs to key off revision rather than tag
* generate en-US partials with funsize
* l10n repacks - keep chunking, use mozharness by preference, pass in url
to en-US builds rather than soup of info from release config, use funsize
for partials ?
* partner repacks - port over, seems wasteful to do this every day, talk to
mconnor about reduced frequency
* updates: much as now, bumping might need reworking
* update verify: will have to test less, cull off older builds
* new update test: new --> newer for rstrong, startup and post-update
action checks in marionnette
* antivirus, checksums, check_permissions: pass a dir instead of infer from
release config
* push to mirrors (auto only for beta)
* final verify
* marionette update tests
* QE signoff
* push to beta
* marionette update tests
* postrelease
Ideas discussed
* should every beta build be an RC ? Not at first, stick with
m-b and m-r repos to keep scope manageable, and we're not sure what extra
work we need for RC yet
* nightlies could make similar transition, eg dep builds are nightly style,
then promote by generating partials + test updates + test updates from new
builds + put on nightly channel)
* catlee would like to build from scratch where possible, to complete the
transition to a modern style
Rough roadmap for Q1, developing new system in parallel to old one still
running:
1, disposable branch based on beta
2, change CI builds to be 'release' style, see how the tests go
3, build automation to generate (trigger with some sort of sendchange for
now)
* l10n repacks
* partner repacks
* updates for en-US + locales (partial generation and balrog submission)
There are plenty more builders to add after that, and the job of gluing
things together, eg ship-it v2, with buttons/API for mirror push/beta push
etc, acting as source of truth for release history
We're planning to start working on this now, with tracking in bug 1118794.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•