There is only one kind of build. Integration builds run daily from tagged repository versions. Map files are used to specify where a project is located in the repository and what version of that project to use in the build. The map files are located in the org.eclipse.orion.releng project. The builder itself performs the tagging so all the latest changes in "master" stream are picked up by every build. No manual tagging by committers is required.
Contributing changes to the build
Contributing to a build is easy, just commit your code to the master stream of the Orion repository and it will be included in the next integration build.
Setting up your workspace
- See Orion/Getting the source for instructions on how to set up your workspace to work with Orion source code.
- Import 'org.eclipse.orion.releng' into your workspace. It is located in the org.eclipse.orion.server.git repository under the releng folder.
Contributing your changes
Once you have made code changes, you can contribute them to the Integration build as follows:
- Commit your changes to the local repository and push them to the master
git commit -a -m "fix lots of bugs" #commits all changes git push #push local commits to the master
How the build works
The build is kicked off by a "bootstrap" script that is not under version control. The only purpose of this script is to fetch the real build script and invoke the build. The script is located at:
The build type is passed as an argument. -I means integration build (with tagging). -N is equivalent but does not perform any tagging (in both cases the contents of master are used to perform the build).
You can also pass an -email argument to cause the build notifications to only be sent to an individual. This is useful for test builds:
bootstrap.orion.sh -I -email email@example.com
The bootstrap script is typically invoked by a cron entry in the e4Build user account. For example here is a cron entry to start a build every Wednesday at 8:55am:
55 08 * * Wed /opt/buildhomes/e4Build/bootstrap.orion.sh -I
Invoke "crontab -e" to edit the cron entries (using vi), or "crontab -l" to simply list them.
The bootstrap fetches and invokes the main build script, called masterBuild.sh. This script is under version control, so you need to push any changes to this script into the master branch for them to take effect. If you scroll to the very bottom of this script you can see the steps it performs:
tagRepositories # perform auto-tagging of the Orion git repositories updateRelengProject # fetch latest from Orion releng project (our scripts and maps) updateBaseBuilder # fetch the PDE builder to use in the build setProperties # various initialization steps runBuild # invoke the PDE build runTests # invoke client and server tests publish # send results email
How often do I need to tag?
You don't need to tag every commit. Changes only need to be tagged when a build is scheduled. I-builds are scheduled to run Monday Night/early Tuesday morning, changes should be tagged and map files updated at the end of day Monday. For high-traffic projects that many people are working on, it is good to coordinate who will tag those projects. For low-traffic bundles that rarely get changed, sometimes it is good to tag right away when a change is made so that you don't forget later.