User:Rhelmer/AUS channel changing: Difference between revisions
Jump to navigation
Jump to search
(formatting) |
(rhelmer) |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
21:00 <@rhelmer> catlee: hello, just working on this channel changing aus feature and wanted to confirm some | |||
things | |||
21:01 <@rhelmer> catlee: do we want it to basically behave like nightlies, where no matter what version you are | |||
on you'll get the latest complete for your OS/locale/etc ? | |||
21:01 <@rhelmer> I have been assuming you don't want to have to generate any snippet files for this... | |||
21:03 < catlee> rhelmer: yeah, we don't want ot generate extra snippets | |||
21:04 <@rhelmer> catlee: hmm so for users on release channel going to nightly that'd be easy, for nightlies going | |||
to beta/release it'll be trickier I think... | |||
21:04 < catlee> rhelmer: yeah | |||
21:04 <@rhelmer> since we don't have any logic in place to discover the latest release/beta/etc. | |||
21:04 <@rhelmer> latest non-nightly, I guess I should say | |||
21:05 < catlee> rhelmer: for release to nightly, you can swap out the channel name with the target name, and | |||
continue on | |||
21:05 <@rhelmer> catlee: right, that's what I started to do, until I considered the nightly->release case :) | |||
21:06 <@rhelmer> I think we just need to introduce logic to discover the latest release | |||
21:06 <@rhelmer> sorting our version number scheme is non-trivial unfortunately | |||
21:06 <@rhelmer> although maybe with channels it is not as hard, need to refresh my memory on how that is all set | |||
up right now | |||
21:07 < catlee> rhelmer: nthomas and I had it figured out | |||
21:08 < catlee> you need another version of getLatestCompleteBuild | |||
21:08 < catlee> that has another foreach loop that loops through the versions | |||
21:11 < catlee> rhelmer: and then modify findPatch to take $newChannel or something | |||
21:13 <@rhelmer> catlee: hmm ok that all makes sense; but how do we decide which version is the newest? it seems | |||
like we either need to sort the version numbers, or just pick the highest buildid (which is how | |||
getLatestCompleteBuild does it for nightlies if I am reading this correctly) | |||
21:13 <@rhelmer> this would be a lot easier with a database :) | |||
21:14 < catlee> yeah | |||
21:14 < catlee> aus3! | |||
21:24 <@rhelmer> catlee: hrm so what about the case where a user is on say 4.x nightly channel, and want to jump | |||
to release, but 5.x is out? do they get latest 4.x release or latest 5.x release? | |||
21:25 <@rhelmer> we don't do any kind of "major update" for nightlies now, right? | |||
21:27 < catlee> rhelmer: leave 4.x out of it | |||
21:29 <@rhelmer> catlee: yeah so I think we're down to sorting the version numbers, which needs a specialized | |||
sort (AMO and socorro have their own implementations afaik) | |||
21:29 <@rhelmer> hm | |||
21:30 < catlee> hm | |||
21:30 < catlee> maybe largest buildid works? | |||
21:31 < catlee> although you'd want to avoid scanning ALL the release directories | |||
21:31 <@rhelmer> yeah | |||
21:31 <@rhelmer> catlee: well if you did that in Firefox right now, you'd get 3.5.18 as the latest-by-buildid :) | |||
21:31 <@rhelmer> it's actually not too bad I don't think | |||
21:31 <@rhelmer> something like | |||
21:31 <@rhelmer> ls -latr /opt/aus2/incoming/3/Firefox/*/WINNT_x86-msvc/*/en-US/release/complete.txt | sort -t\/ | |||
-k 9 | |||
21:32 <@rhelmer> I think restricting to branch might make sense | |||
21:32 <@rhelmer> well hmm | |||
21:32 < catlee> branch will be the same | |||
21:32 <@rhelmer> not sure if that makes it any easier actually | |||
21:32 <@rhelmer> yeah | |||
21:33 <@rhelmer> the layout for the nightly snippets makes a lot more sense for this... | |||
21:33 < catlee> yeah | |||
21:34 < catlee> I wonder if telling AUS which release version was "latest" would be too painful | |||
21:34 <@rhelmer> i don't think so, could be done via config or via snippets | |||
21:34 <@rhelmer> might as well be config tbh | |||
21:34 < catlee> just means more churn | |||
21:35 <@rhelmer> right just another little thing | |||
21:35 < catlee> $LATEST_RELEASE = "5.0"; | |||
21:35 < catlee> or somesuch | |||
21:35 <@rhelmer> ok so the way nightlies are treated is interesting... so according to AUS the channel is always | |||
nightly, right? but what we colloquially call channels such as mozilla-aurora, mozilla-central, | |||
tracemonkey, are actually branches; is that right? | |||
21:36 < catlee> and then restrict your searching to /opt/aus2/incoming/3/Firefox/$LATEST_RELEASE | |||
21:36 < catlee> doesn't sound right | |||
21:36 <@rhelmer> hmm | |||
21:36 <@rhelmer> then I am confused at the variables being used in the code | |||
21:36 <@rhelmer> are there example AUS strings somewhere? | |||
21:36 <@rhelmer> AUS request URLs I mean | |||
21:37 < catlee> an aurora build will identify itself on the aurora channel | |||
21:38 <@rhelmer> ok in getLatestCompleteBuild it says $dir = | |||
SOURCE_DIR.'/2/'.$product.'/'.$branchVersion.'/'.$platform; | |||
21:38 <@rhelmer> the path looks like | |||
21:38 <@rhelmer> /opt/aus2/incoming/2/Firefox/mozilla-aurora/WINNT_x86-msvc/20110413090644/en-US/complete.txt | |||
21:39 < catlee> right | |||
21:39 < catlee> that's what the mapping in config-dist.php is for | |||
21:39 < catlee> changes aurora channel name to mozilla-aurora on disk | |||
21:40 <@rhelmer> ah $productBranchVersions | |||
21:40 <@rhelmer> ok that's interesting | |||
21:47 <@rhelmer> catlee: ok thanks, this is clearer now... I think if we can stand $LATEST_RELEASE it would make | |||
our lives easier... | |||
21:47 <@rhelmer> we can traverse and then sort-by-buildid to get the latest | |||
21:47 <@rhelmer> it'll increase IO but memcache should help hopefully | |||
21:48 < catlee> I think it'll be a relatively uncommon request | |||
21:49 <@rhelmer> true | |||
21:49 <@rhelmer> yeah it must be user-initiated, we won't get automatic checks or anything | |||
21:50 * rhelmer is going to dump this info into a bug comment for reference | |||
Latest revision as of 22:36, 19 April 2011
21:00 <@rhelmer> catlee: hello, just working on this channel changing aus feature and wanted to confirm some
things
21:01 <@rhelmer> catlee: do we want it to basically behave like nightlies, where no matter what version you are
on you'll get the latest complete for your OS/locale/etc ?
21:01 <@rhelmer> I have been assuming you don't want to have to generate any snippet files for this...
21:03 < catlee> rhelmer: yeah, we don't want ot generate extra snippets
21:04 <@rhelmer> catlee: hmm so for users on release channel going to nightly that'd be easy, for nightlies going
to beta/release it'll be trickier I think...
21:04 < catlee> rhelmer: yeah
21:04 <@rhelmer> since we don't have any logic in place to discover the latest release/beta/etc.
21:04 <@rhelmer> latest non-nightly, I guess I should say
21:05 < catlee> rhelmer: for release to nightly, you can swap out the channel name with the target name, and
continue on
21:05 <@rhelmer> catlee: right, that's what I started to do, until I considered the nightly->release case :)
21:06 <@rhelmer> I think we just need to introduce logic to discover the latest release
21:06 <@rhelmer> sorting our version number scheme is non-trivial unfortunately
21:06 <@rhelmer> although maybe with channels it is not as hard, need to refresh my memory on how that is all set
up right now
21:07 < catlee> rhelmer: nthomas and I had it figured out
21:08 < catlee> you need another version of getLatestCompleteBuild
21:08 < catlee> that has another foreach loop that loops through the versions
21:11 < catlee> rhelmer: and then modify findPatch to take $newChannel or something
21:13 <@rhelmer> catlee: hmm ok that all makes sense; but how do we decide which version is the newest? it seems
like we either need to sort the version numbers, or just pick the highest buildid (which is how
getLatestCompleteBuild does it for nightlies if I am reading this correctly)
21:13 <@rhelmer> this would be a lot easier with a database :)
21:14 < catlee> yeah
21:14 < catlee> aus3!
21:24 <@rhelmer> catlee: hrm so what about the case where a user is on say 4.x nightly channel, and want to jump
to release, but 5.x is out? do they get latest 4.x release or latest 5.x release?
21:25 <@rhelmer> we don't do any kind of "major update" for nightlies now, right?
21:27 < catlee> rhelmer: leave 4.x out of it
21:29 <@rhelmer> catlee: yeah so I think we're down to sorting the version numbers, which needs a specialized
sort (AMO and socorro have their own implementations afaik)
21:29 <@rhelmer> hm
21:30 < catlee> hm
21:30 < catlee> maybe largest buildid works?
21:31 < catlee> although you'd want to avoid scanning ALL the release directories
21:31 <@rhelmer> yeah
21:31 <@rhelmer> catlee: well if you did that in Firefox right now, you'd get 3.5.18 as the latest-by-buildid :)
21:31 <@rhelmer> it's actually not too bad I don't think
21:31 <@rhelmer> something like
21:31 <@rhelmer> ls -latr /opt/aus2/incoming/3/Firefox/*/WINNT_x86-msvc/*/en-US/release/complete.txt | sort -t\/
-k 9
21:32 <@rhelmer> I think restricting to branch might make sense
21:32 <@rhelmer> well hmm
21:32 < catlee> branch will be the same
21:32 <@rhelmer> not sure if that makes it any easier actually
21:32 <@rhelmer> yeah
21:33 <@rhelmer> the layout for the nightly snippets makes a lot more sense for this...
21:33 < catlee> yeah
21:34 < catlee> I wonder if telling AUS which release version was "latest" would be too painful
21:34 <@rhelmer> i don't think so, could be done via config or via snippets
21:34 <@rhelmer> might as well be config tbh
21:34 < catlee> just means more churn
21:35 <@rhelmer> right just another little thing
21:35 < catlee> $LATEST_RELEASE = "5.0";
21:35 < catlee> or somesuch
21:35 <@rhelmer> ok so the way nightlies are treated is interesting... so according to AUS the channel is always
nightly, right? but what we colloquially call channels such as mozilla-aurora, mozilla-central,
tracemonkey, are actually branches; is that right?
21:36 < catlee> and then restrict your searching to /opt/aus2/incoming/3/Firefox/$LATEST_RELEASE
21:36 < catlee> doesn't sound right
21:36 <@rhelmer> hmm
21:36 <@rhelmer> then I am confused at the variables being used in the code
21:36 <@rhelmer> are there example AUS strings somewhere?
21:36 <@rhelmer> AUS request URLs I mean
21:37 < catlee> an aurora build will identify itself on the aurora channel
21:38 <@rhelmer> ok in getLatestCompleteBuild it says $dir =
SOURCE_DIR.'/2/'.$product.'/'.$branchVersion.'/'.$platform;
21:38 <@rhelmer> the path looks like
21:38 <@rhelmer> /opt/aus2/incoming/2/Firefox/mozilla-aurora/WINNT_x86-msvc/20110413090644/en-US/complete.txt
21:39 < catlee> right
21:39 < catlee> that's what the mapping in config-dist.php is for
21:39 < catlee> changes aurora channel name to mozilla-aurora on disk
21:40 <@rhelmer> ah $productBranchVersions
21:40 <@rhelmer> ok that's interesting
21:47 <@rhelmer> catlee: ok thanks, this is clearer now... I think if we can stand $LATEST_RELEASE it would make
our lives easier...
21:47 <@rhelmer> we can traverse and then sort-by-buildid to get the latest
21:47 <@rhelmer> it'll increase IO but memcache should help hopefully
21:48 < catlee> I think it'll be a relatively uncommon request
21:49 <@rhelmer> true
21:49 <@rhelmer> yeah it must be user-initiated, we won't get automatic checks or anything
21:50 * rhelmer is going to dump this info into a bug comment for reference