Make sure you get the '''releng_test''' branch, not '''HEAD''', if you want the latest implementation.

+

For details on extracting the code using Eclipse, see '''''[[Eclipse Build Available RSS Feeds Getting Started]]'''''.

+

+

+

Make sure you get the '''releng_test''' branch, not '''HEAD''', if you want the latest implementation.

Line 26:

Line 29:

The feed schema is in the '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/schema/?only_with_tag=releng_test schema/]''' folder. The Ecore model and genmodel created from the schema and used for the feed validator are in '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/model/?only_with_tag=releng_test model/]''', and the feed validator code is best accessed from the '''[http://dev.eclipse.org/viewcvs/index.cgi/*checkout*/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/scripts_rss/feedValidator.xml?only_with_tag=releng_test feedValidator.xml]''' script in '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/scripts_rss/?only_with_tag=releng_test scripts_rss/]''' and the '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/?only_with_tag=releng_test feedValidator.jar]''' in the root.

The feed schema is in the '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/schema/?only_with_tag=releng_test schema/]''' folder. The Ecore model and genmodel created from the schema and used for the feed validator are in '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/model/?only_with_tag=releng_test model/]''', and the feed validator code is best accessed from the '''[http://dev.eclipse.org/viewcvs/index.cgi/*checkout*/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/scripts_rss/feedValidator.xml?only_with_tag=releng_test feedValidator.xml]''' script in '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/scripts_rss/?only_with_tag=releng_test scripts_rss/]''' and the '''[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/?only_with_tag=releng_test feedValidator.jar]''' in the root.

+

+

'''Note:''' The code cited above is the ''example/reference implementation''. For an '''''live working implementation''''', see the [[#Working_Examples | examples below]].

== Sample Feeds ==

== Sample Feeds ==

Line 135:

Line 140:

= Where To Publish =

= Where To Publish =

−

In order to ensure that your feed data is as current as your promoted bits, it's recommended that you publish your feed to the same place you publish your zips/jars. For the EMF example, this is http://download.eclipse.org/tools/emf/feeds/builds.xml, and the CVS archived version of the file is /cvsroot/org.eclipse/www/emf/feeds/builds.xml.

+

In order to ensure that your feed data is as current as your promoted bits, it's recommended that you publish your feed to the same place you publish your zips/jars. For the MDT example, this is [http://download.eclipse.org/modeling/mdt/feeds/builds-uml2.xml http://download.eclipse.org/modeling/mdt/feeds/builds-*.xml], and the CVS archived versions of the files are in [http://dev.eclipse.org/viewcvs/index.cgi/www/modeling/mdt/feeds/?root=Eclipse_Website /cvsroot/org.eclipse/www/modeling/mdt/feeds/].

+

+

It is recommended that you publish one feed per component that people might want to watch uniquely. For MDT, this means [http://www.eclipse.org/modeling/mdt/feeds/ 5 feeds] (at time of writing).

−

If you plan to publish more than one feed or your project contains subprojects which are built or published separately, it's recommended that you name your feeds with the subproject, branch, and type, eg:

−

http://download.eclipse.org/tools/emf/feeds/builds-emf-2.2-N.xml.

== Actual Feeds ==

== Actual Feeds ==

−

These are actual feeds, currently being published.

+

These are actual feeds, currently being published. If you publish a feed that's not listed here, [http://wiki.eclipse.org/index.php?title=Eclipse_Build_Available_RSS_Feeds&action=edit please add it].

* http://www.eclipse.org/emft/feeds/ (List of EMFT feeds; components will be removed as they move to MDT, M2T or EMF)

= Working Examples =

= Working Examples =

Line 155:

Line 166:

This is only one use case. For more responsive feed watching, cron-based checks could be done 24h a day, multiple times an hour, and more than once a week.

This is only one use case. For more responsive feed watching, cron-based checks could be done 24h a day, multiple times an hour, and more than once a week.

+

+

The most recent version of the scripts documented here is in [http://dev.eclipse.org/viewcvs/index.cgi/releng-common/tools/scripts/?root=Modeling_Project /cvsroot/modeling/releng-common/tools/scripts/].

+

+

== MDT & EMFT Components ==

+

+

Currently, MDT & EMFT components only publish RSS, they do not listen to upstream RSS feed(s). Setup is fairly straightforward.

2. The promote script calls out to <code>[http://dev.eclipse.org/viewcvs/index.cgi/releng-common/tools/scripts/feedPublish.xml?root=Modeling_Project&view=markup feedPublish.xml]</code> using <code>[http://dev.eclipse.org/viewcvs/index.cgi/releng-common/tools/scripts/feedPublish.mdt.properties?root=Modeling_Project&view=markup feedPublish.mdt.properties]</code>.

== EMF ==

== EMF ==

−

As noted in the above scenario, publishing an EMF build automatically is done in two steps, both fired by crontab:

+

Publishing an EMF build automatically is done in two steps, both fired by crontab:

** [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Platform&component=Releng&assigned_to=codeslave@ca.ibm.com&qa_contact=platform-releng-inbox@eclipse.org&bug_severity=enhancement new bug] (open a new bug in Platform > Releng and assign it to [[User:Nickb | Nick Boldt]])

= Additional Information =

= Additional Information =

Line 231:

Line 255:

* For more on the Atom 1.0 spec, see [http://www.ietf.org/rfc/rfc4287.txt http://www.ietf.org/rfc/rfc4287.txt].

* For more on the Atom 1.0 spec, see [http://www.ietf.org/rfc/rfc4287.txt http://www.ietf.org/rfc/rfc4287.txt].

These all use feedTools.jar, with sources in src_rss/. The properties files used by these scripts are in properties/. You'll see three for feedPublish.*.properties (publishing 3 different feeds) and two for feedWatch.*.properties (two projects watching upstream feeds). You'll also find a README in there which provides more details.

You can also look at the sample data in the data/ folder, which provides three feeds (Eclipse, EMF, UML2).

In addition, there are attributes available for branch, cvsbranch and datetime. Branch is a 3-number branch id, like 3.0.0 or 2.2.1. CVS branch is a string like "HEAD" or "R3_2_maintenance", and is optional. Datetime is a 12-digit number defining YYYYMMDDhhmm, the date and time associated with the build.

Support For Coordinated Releases

So that we can identify which projects' have been posted to Callisto/Europa/Whatnot, there's an element in the <build/> node, thus:

Working Examples

In this scenario, EMF publishes a scheduled build every Thursday at 00:00, promotes the build to eclipse.org at 01:00, and then UML2, knowing there's an EMF build every week, starts watching the EMF feed, checking hourly at 02:00, 03:00 and 04:00, in order to pick up the latest driver to do its weekly build. As our build server is at IBM, this delay is necessary to ensure that code committed to eclipse.org has time to propagate across the nodes and to the IBM mirrors. Usually the mirrors replicate between 02:00 and 03:00, causing the UML2 build to start at 03:00.

This is only one use case. For more responsive feed watching, cron-based checks could be done 24h a day, multiple times an hour, and more than once a week.

One of the steps in promoting a build is to check out the latest copy of the feed from CVS, update it, commit it back to CVS, and scp it to eclipse.org. This is done by having promoteToEclipse.sh fire feedPublish.xml: