Hello Team,
I've been doing some work concerning the composite repositories,
since Kenn announced some cool utilities to doing such stuff (see http://wiki.eclipse.org/Modeling_Project_Builds/Utilities).
I've done some progresses, but I would require some feedback to
contrast some conclusions...
Firstly, I would like to obtain some agreement concerning our
retention policy. I created some lines before taking a break: http://wiki.eclipse.org/MDT/OCL#Retention_Policy
Secondly, starting from this retention policy, for indigo we
currently have the following P2 repositories.
- One Nightly P2 repo:
http://download.eclipse.org/modeling/mdt/ocl/updates/nightly/3.1.0/
- One Interim P2 repo:
http://download.eclipse.org/modeling/mdt/ocl/updates/interim/3.1.0/
- One Milestones composite p2 repo
http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/3.1.0/
which composes several P2 repositories
-
http://download.eclipse.org/modeling/mdt/ocl/updates/nightly/3.1.0/M2
-
http://download.eclipse.org/modeling/mdt/ocl/updates/nightly/3.1.0/M3
-
http://download.eclipse.org/modeling/mdt/ocl/updates/nightly/3.1.0/M4
...
- One Releases composite p2 repo
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.1.0/
which will probably compose several P2 repositories
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.1.0/SR0
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.1.0/SR1
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.1.0/SR2
- Apart from this, I've also created another composite repository
http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/
which composes the
http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/3.1.0
one, so that we provide a general p2 repo, which composes the the
current development milestones repository.
- Similarly our mdt/ocl/updates (our public P2 repo URL) should be a
composite P2 repo which composes mdt/ocl/update/releases, which
again is another composite repo which should compose:
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.1.0/
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.2.0/
...
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/4.0.0/
As you may realise there are several bits which should need to be
sort out. Let's have some thoughts about the following questions...
- Do we really need to create a version segment (3.1.0) for nightly
and interim repositories since we only provide a unique repository
?.
- Similarly we could also avoid using the version segment for
milestones repositories. If we comply with our retention policy, as
soon as we need to create our first milestone in a development,
those from the previous releases could be removed.
- If our public Indigo P2 repo, which should compose the 3 official
releases (SR0, SR1, SR2) repositories, is desired to be a composite
repo what about if we use 3.1 rather than 3.1.0. The last version
number seems unnecessary.
- Where should the RC P2 repositories reside ?. In the milestones
one ?, In the releases one ?.... Since I'm thinking that the
releases repos are our official public release P2 repos, I think
that the milestones p2 repo is the appropriate.
- What about maintenance p2 repos (those interim repos used during
the maintenance stream which are different to the official SR1 and
SR2 releases)?. We could have an specific "maintenance" folder for
them.
With all these considerations and taking into account the retention
policy above our different P2 repositories could be structured as
follows:
- http://download.eclipse.org/modeling/mdt/ocl/updates/nightly/
- http://download.eclipse.org/modeling/mdt/ocl/updates/interim/
- http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/
-
http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/3.1.0
(composed by /updates/milestones. The 3.1.0 segment could be removed
in Indigo+1, since removing now could be risky. it's widely used by
other releng's stuff, )
-
http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/3.1.0/MX
(composed by /updates/milestones/3.1.0)
-
http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/3.1.0/RCX
(composed by /updates/milestones/ 3.1.0)
- http://download.eclipse.org/modeling/mdt/ocl/updates/
- http://download.eclipse.org/modeling/mdt/ocl/updates/releases
(composed by /updates)
- http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.X
(composed by /updates/releases)
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.X/SR0
(composed by /updates/releases/3.X)
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.X/SR1
(composed by /updates/releases/3.X)
-
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.X/SR2
(composed by /updates/releases/3.X)
- http://download.eclipse.org/modeling/mdt/ocl/updates/maintenance/
-
http://download.eclipse.org/modeling/mdt/ocl/updates/maintenance/MXXXXXXXX
(composed by /updates/maintenance, note that M represents an
M-build, which is an integration build of the current maintenance
branch)
-
http://download.eclipse.org/modeling/mdt/ocl/updates/maintenance/RCX
(composed by /updates/maintenance)
BTW, the only reason to provide a composite repository for our
public official release, is to have a unique URL
(http://download.eclipse.org/modeling/mdt/ocl/updates/) from which
you may access the different releases of the MDT/OCL project. This
URL is that one specified in the different MDT/OCL features and it
should not vary as long as new P2 repositories with different
content of different releases arrive. I'm not sure if this makes
sense. An user could always use an specific URL (for instance
http://download.eclipse.org/modeling/mdt/ocl/updates/releases/3.1/SR2)
to obtain the features of a concrete release (for instance to
decrease the time of loading the content from the repository). I'm
not expertise enough in P2 to have an ideal solution.
Another discussions is if we should use "repository" rather than
"updates" ;P... This decision has already been taken for instance in
Orbit project
Please, let me know if this makes sense, of course I'll have to look
into the releng stuff to check that this may be done without any
pain (I mean, a lot of investment of my time). Likewise, any
improvement in the retention policy and/or how to organize our P2
repositories is very welcome.
Best Regards,
Adolfo.
El 23/12/2010 19:14, Adolfo Sánchez-Barbudo Herrera escribió:
Hello
Team,
After some days working on the releng, here you have a small
report concerning my progress:
1.
https://hudson.eclipse.org/hudson/job/buckminster-mdt-ocl-core-3.1-nightly/
As commented, the buckminster based build is quite stable.
However, the following are topics in which I've been working on:
- The following
https://bugs.eclipse.org/bugs/show_bug.cgi?id=332546 bugzilla
exposed a problem in our generated artifacts. I've partly fixed
the problem since every required .zip contains both
lpg.runtime.java and lpg.runtime.java.source bundles. However, the
zip which contains the P2 repository (The all in one Update zip)
only contains the lpg.runtima.java bundle and I haven't been able
to make it contain the source bundle one... Still pending.
- Due to the recent request about making I-builds ( to create an
interim p2 repository with bleeding edge stuff) which should be
feeded by the other dependant project (such EMF) Integration P2
repositores, I've configured hudson and the buckminster stuff so
that depending on the build-type (N,I,S) our build will be feeded
by other dependent project Interim/Integration or Milestones P2
repositories. So that
1) When doing an MDT/OCL N or I-build, EMF, UML, ...,
Integration P2 repositories will be used.
2) When doing an MDT/OCL S-build (milestone), EMF, UML, ...,
Milestones P2 repositories will be used instead.
- Due to EMF and UML doesn't produce nightly P2 repositories, I
've decided to revert to our night-build policy so that now our
builds are run when changes are detected in our CVS and they are
based on the EMF and UML Intergration P2 repsotories. I think that
it doesn't make sense doing a nightly build (which may detect
incompatibilities with our dependent projects), if we are not
basing our code in some kind of nightly P2 repository.
- I wanted to try to use some publishing scripts from EMF releng,
which deal with composite repositories and such. However, since
Kenn told me that Mickal is working on them and in its
documentation, I prefer to wait a little bit.
2.
https://hudson.eclipse.org/hudson/job/cbi-mdt-ocl-3.0-integration/
- The job has been fixed, which relies on the maintenance branch
and it should be only used to manually create M-builds (and the
final SR2 build)
- I wanted to create a true M-build with updated content (which
means update ocl.map files, etc). However, I want to clarify this
bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=327823 before
doing any kind of tag on our branch.
3. https://hudson.eclipse.org/hudson/job/cbi-mdt-ocl-3.0/
- This build is supposed to use our maintenance branch code to do
a build. Now, it only differs from the previous job that it uses
the "-forceContextQualifier -fetchTag R3_0_maintenance" extra
flags, so that instead of using the ocl.map file the build is
feeded by the last maintenance branch code. However, I've not been
able to fix this job so far (it complains about not finding an
org.eclipse.tests plugin).
- Tomorrow, I'll try to do a deep study of the logs to see what's
wrong. I don't know why this worked with HEAD, and despite being
identical to the integration job definition it doesn't work
neither.... If I don't find a solution tomorrow, I'll probably
give up trying to fix this, and we will only have availabe the
manual launched build using the ocl.map file.
P.D: I'll also add an entry to Alex's cheatsheet concerning the
M-build.
Best Regards,
Adolfo.
|