Problem Solved: Customer wanted an easy way to produce RPMs from various files to install and test services on instances. This Docker container helps solve this problem by including Gradle, Nebula and Goss on the same Docker instance for quick builds and testing.
How to use: Spin up this Docker container with
docker pull nkitmitto/gradle. On boot, this container is configured to spin up a test RPM package for collectd-client. The build can be found in /opt/gradle/builds/collectd-client. To run Gradle on this test RPM, cd to "/opt/gradle/builds/collectd-client/" and run "gradle rpmBuild setGraphiteHost". If you would like to create your own package, create a directory in /opt/gradle/builds/ for your package. The following files are required:
How it works: When running gradle, it will automatically test installing the new RPM and verify the Graphite IP was set accordingly in the collectd.conf file. During the gradle run, it uses the graphiteHost in gradle.properties and runs consul-template (via setupGraphite.sh) to set the value of graphiteHost in collectd.tpl and goss.tpl. Consul-Template then takes collectd.tpl and goss.tpl and moves the to a collectd.conf and goss.yaml.
Goss is configured to test the installation of the collectd rpm that is produced with Gradle with yum install <package_name> and verify the command exits with a code 0, indicating success. Goss configuration can be found in /opt/gradle/builds/collectd-client/test/goss.yaml. To run goss, cd to the /opt/gradle/builds/collectd-client/test/ directory and run "goss validate".