javamaven-2documentationcontinuous-integrationcruisecontrol

How to publish CruiseControl LATEST build artifacts to a static URL


I have a Java multi-module Maven project that I want to build an MVN site and javadocs and have CruiseControl publish the latest daily builds to a configured static location.

The trouble is the CruiseControl artifactPublisher allows you to specify a dest directory but it is timestamped with the latest time of the last build. I want to be able to publish to a location that gets overridden on each build, such as:

http://cc-buildserver/cruisecontrol/artifacts/gameplatform-documentation/  

artifactPublisher documentation:

dir - will copy all files from this directory

dest - parent directory of actual destination directory; actual destination directory name will be the build timestamp.

subdirectory - subdirectory under the unique (timestamp) directory to contain artifacts

For example if I have a CruiseControl project called gameplatform-documentation and I configure my artifactPublisher as such:

<project name="gameplatform-documentation" forceOnly="true" requireModification="false" forceBuildNewProject="false" buildafterfailed="false">
...
    <schedule>
        <composite time="2300">
            <maven2 
                 mvnhome="${mvn.home}" 
         pomfile="${dev.root}/gameplatform-parent/pom.xml"
                goal="site" />

        </composite>
    </schedule>

    <publishers>
        <artifactspublisher
            dir="${dev.root}/gameplatform-parent/target/site" 
    dest="artifacts/gameplatform-documentation" />
    </publishers>
</project>

I end up with my Maven generated site and javadocs in a different directory each build:

http://cc-buildserver/cruisecontrol/cruisecontrol/artifacts/gameplatform-documentation/20091110130202/

Maybe I need to use a custom AntPublisher or FTPPublisher and create another webserver to host the published docs. I could also use CC source control tools and checkin the documentation into our SVN server and use that to serve the documentation.

How can this be accomplished?


Solution

  • We ended up using Maven's site deploy plugin to publish the documentation artifacts through SCP (using cygwin SSHD server setup on Windows server) to our CruiseControl server's "artifact" folder:

    <distributionManagement>
        <site>
            <id>dev.website</id>
            <url>scp://user@buildserver/cygdrive/c/Users/user/servers/cruisecontrol-project-2.8.3/artifacts/documentation/project/gameplatform</url> 
        </site>
    </distributionManagement> 
    

    Then we're able to access the nightly built documentation them by visiting:

    http://buildserver:8081/cruisecontrol/artifacts/documentation/project/gameplatform