= Building and publishing the website

The source code of website https://james.apache.org[james.apache.org] is located in src/homepage.
Here are the instructions how to publish new changes to the website.

1. Install Apache Maven 3.0.2+ and make its binary 'mvn' available on your PATH.
See http://maven.apache.org/download.html#Installation.
2. run "mvn clean site"
3. Test the built site in your browser from the {path}/target/site folder
4. If everything looks OK, deploy the site using "mvn clean site-deploy".
5. Wait for the changes to replicate to the Apache web server or setup 140.211.11.10:80 as
a proxy to review the changes (described here: http://www.apache.org/dev/project-site.html)

To deploy the technical reports use the "-Psite-reports" profile.

For wagon-ssh-external configuration see
http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ssh-external.html

You can alternatively use a docker container to build the website :

You need to build the homepage by:

    $ docker build -t james/homepage src/homepage
    $ docker run -v $PWD:/origin -v $PWD/site:/destination james/homepage master

In order to test the homepage, you can use this command:

    $ docker run --rm -v $PWD/site:/srv/jekyll  -p 4000:4000 -it jekyll/minimal:3.8.3 jekyll serve

the site will be available at http://localhost:4000/

Then you build the other pages by:

    $ docker build -t james/site src/site
    $ docker run -v $PWD/.m2:/root/.m2 -v $PWD:/origin -v $PWD/site:/destination james/site master

If you need to update the current site, checkout the branch asf-site from Apache git:

    $ git clone https://git-wip-us.apache.org/repos/asf/james-site.git
    $ cd james-site
    $ git checkout origin/asf-site -b asf-site

And replace in the previous commands `$PWD/site` by `<james-site-clone-directory>/content`, for example:

    $ docker run -v $PWD:/origin -v $PWD/../james-site/content:/destination james/homepage master
    $ docker run -v $PWD/.m2:/root/.m2 -v $PWD/../james-site/content:/origin -v $PWD/site:/destination james/site master

Then just push the new site:

    $ cd ../james-site
    $ git push origin asf-site
