views:

568

answers:

1

I have a Java multi-module maven project that I want to build a 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:

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:

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 (does anyone have any good tutorials for checking in mvn site into SVN?)

+1  A: 

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
Dougnukem