Jump to: navigation, search

Difference between revisions of "Ganymede/Build"

(Running Ganymatic On Your Machine)
(/* Running Ganymatic On Your Machine -- added info on how/when to update ganimatic)
Line 106: Line 106:
 
You may want to clean out all the existing files from the release directory before doing the copy (or you may not). If so, use copyToRelease-0-clean.sh
 
You may want to clean out all the existing files from the release directory before doing the copy (or you may not). If so, use copyToRelease-0-clean.sh
  
==Running Ganymatic On Your Machine==
+
==Creating Ganymatic==
 +
 
 +
===For Your Own Local Build Machine===
  
 
:1. [[#Creating Ganymatic for Build.Eclipse.Org|Build a copy of Ganymatic]] and transfer it to your build server (if not building locally).  
 
:1. [[#Creating Ganymatic for Build.Eclipse.Org|Build a copy of Ganymatic]] and transfer it to your build server (if not building locally).  
Line 125: Line 127:
 
:5. The results (update site and website) are placed in the directories you specified in the ganymatic.properties file. Email notification (if any) is also configured in the properties file.
 
:5. The results (update site and website) are placed in the directories you specified in the ganymatic.properties file. Email notification (if any) is also configured in the properties file.
  
===Creating Ganymatic for Build.Eclipse.Org===
+
===For Build.Eclipse.Org===
  
To create the binaries for Ganymatic:
+
To create the binaries (headless assembly scripts and runtime) for Ganymatic:
  
 
:1. Start with an Eclipse 3.3 or 3.4 SDK with the [http://download.eclipse.org/tools/buckminster/updates latest version] of [http://www.eclipse.org/projects/project_summary.php?projectid=tools.buckminster Buckminster] 1.0 installed.
 
:1. Start with an Eclipse 3.3 or 3.4 SDK with the [http://download.eclipse.org/tools/buckminster/updates latest version] of [http://www.eclipse.org/projects/project_summary.php?projectid=tools.buckminster Buckminster] 1.0 installed.
Line 147: Line 149:
  
 
:6. Zip & transfer the '''bin/buckminster''' directory to build.eclipse.org. Unpack it as ''you''@build.eclipse.org:/shared/ganymede/buckminster/'''bin/buckminster'''.
 
:6. Zip & transfer the '''bin/buckminster''' directory to build.eclipse.org. Unpack it as ''you''@build.eclipse.org:/shared/ganymede/buckminster/'''bin/buckminster'''.
:: Sidenote: if interested in how it works, the 'headless.zip' is the main part of the buckminster code that does headless builds (composition) but it lacks the project specific information that is compiled into org.eclipse.dash.siteassembler jar, which is in the bin/buckminster directory, along with the rest of headless.zip.
 
  
 
<table><tr><td>
 
<table><tr><td>
Line 158: Line 159:
 
  rm -f /tmp/buckminster.zip
 
  rm -f /tmp/buckminster.zip
 
</td></tr></table>
 
</td></tr></table>
 +
 +
:Additional information
 +
 +
:: If interested in how it works, the 'headless.zip' is the main part of the buckminster code that does headless builds (composition) but it lacks the project specific information that is compiled into org.eclipse.dash.siteassembler jar, which is in the bin/buckminster directory, along with the rest of headless.zip.
 +
 +
:: Ever wonder why or when the bin/buckminster code should be regenerated? See [https://bugs.eclipse.org/bugs/show_bug.cgi?id=227693 Bug 227693] but the short answer is whenever there are bug fixes to Buckminster, or the org.eclipse.dash.siteassembler changes.
  
 
==Additional Requirements and Information==
 
==Additional Requirements and Information==

Revision as of 10:13, 18 April 2008

This page is related to the Ganymede Simultaneous Release.

Explanation

The Ganymatic is live and running every day. The status & logs are here: http://build.eclipse.org/ganymede/

In addition to sending emails to project release engineers who are responsible for broken builds, there are three 'Eclipse Build' format RSS feeds available for project teams to monitor. More info on feeds: Getting Started Guide, Feed Schema.

Of course, there really is no "build" of Ganymede, but only a copying of what is already available on each project's update site, to a central site.

This central update site, naturally, is http://download.eclipse.org/releases/ganymede/. To get a sneak peek, point your Update Manager at http://download.eclipse.org/releases/ganymede/staging/.

The Projects' Roles

Pre-Project Configuration Files

The pre-project configuration files are stored in the Callisto CVS:

:extssh:<your-committer-id-goes-here>@dev.eclipse.org:/cvsroot/callisto

Or, general "read" access via

:pserver:anonymous@dev.eclipse.org:/cvsroot/callisto

There is one project:

org.eclipse.ganymede.sitecontributions

Syntax and Semantics

<?xml version='1.0'?>
<sc:siteContribution
  xmlns="http://www.eclipse.org/buckminster/CSpec-1.0"
  xmlns:sc="http://www.eclipse.org/buckminster/SiteContribution-1.0"
  rmapProviderURL="${downloads}/webtools/milestones/site.xml">
    <sc:member name="Bjorn Freeman-Benson" email="bjorn.freeman-benson@eclipse.org" />
    <sc:member name="Karl Matthias" email="webmaster@eclipse.org" />
    <sc:cspec name="org.eclipse.wtp-sc">
      <dependencies>
        <dependency name="org.eclipse.jpt.feature" 
                    versionDesignator="[1.0.0.v200706250000-77--CYQCCz-CoRPCCCH]" />
        <dependency name="org.eclipse.jst" 
                    versionDesignator="[2.0.0.v200706110805-7B-18dDQISlz0z0cc-oasolrW8jP]" />
        <dependency name="org.eclipse.wst.common_ui.feature" 
                    versionDesignator="[2.0.0.v200706041905-7C5EGzE9RvTVniSrwnf4TgOPe3e9]" />
      </dependencies>
      <groups>
        <public name="Web and JEE Development">
          <attribute component="org.eclipse.jst" />
          <attribute component="org.eclipse.wst.common_ui.feature" />
        </public>
        <public name="Other Development">
          <attribute component="org.eclipse.jpt.feature" />
        </public>
      </groups>
    </sc:cspec>
</sc:siteContribution>
  1. ${downloads}/webtools/milestones/site.xml: The location of the project's update site. It's more efficient to access the site via a file path than a url, but a url will work. ${downloads} refers to the root of the http://download.eclipse.org/ server.
  2. Bjorn Freeman-Benson and bjorn.freeman-benson@eclipse.org: person to notify if this project is responsible for breaking the build. Feel free to have multiple people listed.
  3. org.eclipse.wtp-sc: the unique identifier for this site contribution
  4. org.eclipse.jpt.feature: The feature identifier. One per feature (of course). Features are listed one per <dependency .../> node.
  5. 2.0.0.v200706041905-7C5EGzE9RvTVniSrwnf4TgOPe3e9: The feature version. One per feature (of course). Buckminster (the technology Ganymatic is built on) has a number of ways to specify the version. Most projects will use a single fixed version here, although you can also have an empty string to mean "the latest version found on my update site".
  6. Web and JEE Development: Categories for the Ganymede site.xml file; used to group the features.

Schemas for these files are available at: http://www.eclipse.org/buckminster/schemas/siteContribution-1.0.xsd , http://www.eclipse.org/buckminster/schemas/cspec-1.0.xsd , http://www.eclipse.org/buckminster/schemas/common-1.0.xsd , http://www.eclipse.org/buckminster/schemas/rmap-1.0.xsd

Project Responsibilities

Each Ganymede project's PMC and/or Project Leader is responsible to keep its own *.sc (site contribution) file up to date as the project generates new milestones and release candidates. The project's project leader will probably delegate to the project's release engineer(s).

Obviously, each project's own update site must already exist (and be working) at the file location or url specified in the site contribution file.

Typically, as projects move from milestone to milestone (or release candidate to release candidate) only the version identifiers (e.g. 1.0.0.v200706250000-77--CYQCCz-CoRPCCCH]) in the site contribution file will need to be changed. At other times, features might be added, removed, or renamed:

  • Adding a feature: add new <dependency> and <attribute> nodes
  • Removing a feature: remove the corresponding <dependency> and <attribute> nodes
  • Renaming a feature: change the feature identifier (in two places) (e.g., org.eclipse.jpt.feature).

Each project should post updates on the Ganymede/Signoffs page after each of their Milestone and Release Candidates is released.

TBD: how to trigger a new build and how to sign off that the project M-bits are ready to use.

The Central Ganymatic

As of 2007/10/14, the Ganymede builds are being run once a day at 11pm Eastern, 8pm Pacific, 5am Europe, 11am China. As of March, 2008, the Ganymede builds are triggered automatically when ever someone commits their site contributions to head. In some few cases, for example, if someone subsequently updates or fixes their own update site, but the sc files don't change, then you may have to "touch" your sc file and commit it, just to trigger a build, or, you can "manually" force a new build from the Orbit Cruise Control page. TBD: how to sign off that the project M-bits are ready to use.

Pack200 and Digests

Currently the pack200 and digest creation is not part of Ganymatic because there of bug 215664. In the meantime, here is the manual process I use to pack the files:

  1. temp_do_pack200.sh
    1. If that is successful, the bug is fixed
    2. Otherwise...
  2. edit the site.xml to remove the stp features
  3. temp_do_pack200.sh
  4. temp_do_createDigest.sh
  5. edit the site.xml to include the digestURL and mirrorsURL attributes

Releasing the Central Staging Bits

On build.eclipse.org as ~bfreeman, first run copyToRelease-1-plugins.sh. If that is successful, run copyToRelease-2-sitefiles.sh.

You may want to clean out all the existing files from the release directory before doing the copy (or you may not). If so, use copyToRelease-0-clean.sh

Creating Ganymatic

For Your Own Local Build Machine

1. Build a copy of Ganymatic and transfer it to your build server (if not building locally).
2. Check out the org.eclipse.ganymede.sitecontributions and org.eclipse.ganymede.tools projects.
cvs -d :pserver:anonymous@dev.eclipse.org:/cvsroot/callisto -q co org.eclipse.ganymede.sitecontributions; \
cvs -d :pserver:anonymous@dev.eclipse.org:/cvsroot/callisto -q co org.eclipse.ganymede.tools
3. Place a customized ganymatic.shsource and ganymatic.properties file in your ~/ganymedeConfig/ folder. See other examples in org.eclipse.ganymede.tools/examples.
4. Use ant to run the build.xml from org.eclipse.ganymede.tools. Or, use this script:
cd org.eclipse.ganymede.tools; \
/shared/ganymede/apps/apache-ant-1.7.0/bin/ant \
  -Dganymatic.properties.file=/path/to/ganymatic.properties
5. The results (update site and website) are placed in the directories you specified in the ganymatic.properties file. Email notification (if any) is also configured in the properties file.

For Build.Eclipse.Org

To create the binaries (headless assembly scripts and runtime) for Ganymatic:

1. Start with an Eclipse 3.3 or 3.4 SDK with the latest version of Buckminster 1.0 installed.
2. Check out the org.eclipse.dash.siteassembler project.
cvs -d :pserver:anonymous@dev.eclipse.org:/cvsroot/technology -q co \
  -d org.eclipse.dash.siteassembler org.eclipse.dash/org.eclipse.dash.siteassembler
3. [This should already be the case, but just in case ... ] Make sure the siteassember project targets a 5.0 JVM. Right-click the checked-out project and select
Properties > Java Compiler > Compiler compliance level: 1.5
4. Right click on the org.eclipse.dash.siteassembler project and choose
Buckminster > Invoke Action... > buckminster.clean
5. Right click on the org.eclipse.dash.siteassembler project and choose
Buckminster > Invoke Action... > headless.assembler
  • This generates the org.eclipse.dash.siteassembler/bin/buckminster directory
  • If there are strange errors, delete the org.eclipse.dash.siteassembler/bin/headless.zip and try again from the buckminster.clean
6. Zip & transfer the bin/buckminster directory to build.eclipse.org. Unpack it as you@build.eclipse.org:/shared/ganymede/buckminster/bin/buckminster.
export you=yourUserName; \
cd /path/to/workspace/org.eclipse.dash.siteassembler/bin; \
zip -r /tmp/buckminster.zip buckminster; \
ssh $you@build.eclipse.org "mkdir -p ~/ganymede/buckminster/bin/"; \
scp /tmp/buckminster.zip $you@build.eclipse.org:~/ganymede/buckminster/bin/; \
ssh $you@build.eclipse.org "cd ~/ganymede/buckminster/bin/; unzip buckminster.zip"; \
rm -f /tmp/buckminster.zip
Additional information
If interested in how it works, the 'headless.zip' is the main part of the buckminster code that does headless builds (composition) but it lacks the project specific information that is compiled into org.eclipse.dash.siteassembler jar, which is in the bin/buckminster directory, along with the rest of headless.zip.
Ever wonder why or when the bin/buckminster code should be regenerated? See Bug 227693 but the short answer is whenever there are bug fixes to Buckminster, or the org.eclipse.dash.siteassembler changes.

Additional Requirements and Information

See Europa Build for how last year's build worked.

Bugs & Feature Requests

See Also