After a brief chat with Josh last week, here's what we came up with:
We have a single nexus installation, capable of running multiple repositories - so any process can be based around that
There's currently a single installation of Hudson, this will be used to co-ordinate everything and will take care of the dependency tree between projects
We'll hopefully be adding further Hudson nodes in the future, likely via EC2
so... using local Maven/ivy repositories is undesirable, it forces everything to run on a single machine and makes it hard to scale
There will be one attempted build per day
There are two ways we can proceed here:
a) use "stable" scala version IDs, such as 2.8.fresh, and snapshots
This would then lead to projects deployed as SNAPSHOTs, with the sbt cross-build naming convention
i.e. scalaj-collection 1.0 would be released under the id scalaj-collection_2.8.fresh:1.0-SNAPSHOT
projects targeting scala fresh would then be kept up to date automatically
b) use timestamped scala version IDs, and make full releases
i.e. scalaj-collection 1.0 would be released under the id scalaj-collection_2010-08-08:1.0
Snapshots wouldn't be needed, but projects targetting fresh builds would need to be updated every time a newer build came out.
I'm *very* interested in getting input on how people plan to use the fresh builds to guide this decision :)
Whatever happens, it also looks as though staged nexus repositories won't help us out much.
So my current thinking is:
- create a dedicated repo for in-progress fresh builds
- empty this repo before each daily build
- projects in the fresh initiative get deployed into this repo
- if *all* projects build ant test, they get promoted en-masse to the appropriate public facing repo
opinions/viewpoints welcome!
--
Kevin Wright
mail/google talk:
kev.lee...@gmail.comwave:
kev.lee...@googlewave.com
skype: kev.lee.wright
twitter: @thecoda