Escidoc Building and Developing Environment

From MPDLMediaWiki
Jump to: navigation, search

Build infrastructure

Maven build1.png


The build infrastructure consists of several servers and tools to support all developers and testers of the escidoc project in the development process.

The build process is supported by several servers:

  • Nexus, which holds all the binary artifacts (including external and internal binary dependencies), works as artifacts proxy
  • Continuum, a testing server for nightly builds, unit- and integration testing, releases
  • Maven, a software project management and comprehension tool, used for building, testing and release management
  • Subversion, a source control management tool, with the following repositories:
    • common used by project common_services
    • pubman used by project PubManPublication Management
    • virr used by project ViRRVirtueller Raum Reichsrecht
    • faces used by project Faces

Release management

The release management takes care of building new releases which are automatically transferred to archiva to make it available to the public. The eSciDoc Release Lifecycle is responsible that any tasks involved are correctly implemented. After the release is done, the next step is to deploy the release binary to a target system.

Deployment process

The necessary steps for a deployment is highly affected on the domain of the target system.

Testing

Media:Pubman_and_Selenium_tests.ppt

Setting up the workstation

In oder to work on a specific project, you need to setup your workstation to contribute your effort. These Howtos shall help you to install maven and include your favourite IDEIntegrated Development Environment in the developing process.

Deploy own libraries to archiva

To deploy own external(!!!) libraries to archiva, use the following instructions in a shell:

mvn deploy:deploy-file -DgroupId=<groupid> -DartifactId=<artifact-id> -Dversion=<version-number> -Dpackaging=jar -Dfile=/path/to/file 
   -Durl=http://archiva.mpdl.mpg.de/archiva/repository/internal -DrepositoryId=deployment.webdav

But remember:

  • Before uploading any libraries, check if the artifact you wish to upload is already in the repository. Use the Find artifact functionality of archiva to ensure this.
  • If the upload fails, check if you have the permissions to upload artifacts to the internal archiva repository

Project webpage

The project webpage is a useful information resource for developers or any other interested people. The project webpage contains useful information on the build environment, source code access, javadocs, code analysis etc.

All the information of a project is visible on an apache server by project. The current RELEASED project descriptions are:

Information about the current development can be found in the SNAPSHOT project descriptions:


Most of the data on the project webpage is created automatically by maven itself. If you want to add your own content to the project webpage or modify an exsiting one, take a look at the Maven project site guide.

Interesting links

Maven: The Definitive Guide  : A deeper look onto Maven.

Current problems and workarounds

  • A release with the continuum build server doesn't work. When preparing the release, continuum complains that it cannot handle snapshot dependencies when you do a single module release.
[INFO] Updating local copy against the scm...
[INFO] Verifying that there are no local modifications...
[ERROR] org.apache.maven.shared.release.ReleaseFailureException: Can't release project due to non released dependencies :
    de.mpg.escidoc.services:common_services:pom:1.0.2-SNAPSHOT
    org.apache.maven.plugins:maven-changes-plugin:maven-plugin:2.0-SNAPSHOT:runtime
in project 'endnotemanager' (de.mpg.escidoc.services:endnotemanager:ejb:1.0.2-SNAPSHOT)
	at org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase.checkProject(CheckDependencySnapshotsPhase.java:240)
	at org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase.execute(CheckDependencySnapshotsPhase.java:106)
	at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:194)
	at org.apache.maven.shared.release.DefaultReleaseManager.prepareWithResult(DefaultReleaseManager.java:107)
	at org.apache.maven.continuum.release.executors.PrepareReleaseTaskExecutor.execute(PrepareReleaseTaskExecutor.java:43)
	at org.apache.maven.continuum.release.executors.AbstractReleaseTaskExecutor.executeTask(AbstractReleaseTaskExecutor.java:67)
	at org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable$1.run(ThreadedTaskQueueExecutor.java:116)
	at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
	at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176)
	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:987)
	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:528)
	at java.lang.Thread.run(Thread.java:595)
The strange behavior is, it works if you do a command line release.
  • Maven has currently problems with tagging a release, if the svn client is > 1.5 It aborts with a 'Item already tagged error'
Use these commands for a workaround:
svn up -r head
mvn release:prepare -Dresume