Guide to Cayenne CMS
Cayenne Site source code (content + styling + scripts) can be obtained from Apache Git repo:
Or from GitHub mirror (in read only mode): https://github.com/apache/cayenne-website.git
Just clone and run maven, nothing else required.
git clone https://git-wip-us.apache.org/repos/asf/cayenne-website.git cd cayenne-website mvn
Open http://localhost:3000 in your browser. In dev mode site supports live-reloading.
You can change host and port by setting
mvn -Ddev.host="my.local" -Ddev.port="8080"
To publish new version just run Maven with
publish profile. This will build production version of the site (with
cayenne.apache.org base URL)
and push commit into
asf-site branch that will be synced with actual site content location:
mvn -Ppublish -Dmsg="commit message describing site changes"
That’s all, so be carefull and review your changes before publishing (also don’t forget to check them after).
Don’t forget to push you source’s changes so others won’t rewrite them.
NOTE: This process can be automated by Jenkins. It can run publish on every commit to
But for now it is better to use manual publishing.
To publish news simply add new file at
You can use following template:
--- title: Good news everyone! date: 2017-01-01T00:00:00+03:00 --- Content goes here
Releasing new cayenne version
To update site content with information about new Cayenne version you need to perform these steps:
- Update data in
src/main/site/data/cayenne.yamlfile. This automatically update download page and
- Write news (see information above).
- Update documentation, this can be done with
build-docs.shscript. You can run it like this:
- Publish your changes (see publish section)
Node.js, Yarn, Gulp and Hugo used to build this site, Maven used just to boostrap Node.js and Yarn tools and launch Gulp tasks. Hugo binaries managed by hugo-bin NPM module.
There is two main parts of site src:
src/main/assetsassets processed by Gulp tasks
/gulp/- list of Gulp tasks:
hugo.js- contains tasks that launch Hugo to process all content
images.js- compress and copy images
reference.js- replace references to generated resources inside content
revision.js- generate manifest file with resources versions
serve.js- launch dev-version of site with live-reloading
styles.js- generate CSS bundle (concat, minify, etc..)
/images/- images that will be compressed and published into site
/imgdirectory, you can put any stuff used by site here (see
main.jsis an entry point for the final bundle, will be processed by Webpack (see
/styles/- Sass sources,
main.scssis an entry point for the final bundle (see
gulpfile.js- main file for Gulp tasks, define some global path constants
package.json- all project dependencies are defined here
src/main/siteassets processed Hugo site generator
/content/- main content part of the site, markdown and HTML files
/data/- data files in yaml format
/layouts/- site templates, using GO templates
/static/- files that will be copied as is to the final site content, note that
cssdirectories are processed via Gulp tasks, and shouldn’t be used directly, instead use coresponding directories in
config.yaml- Hugo configuration