noun
An opinionated one-click self-assembling deployment of the Piwik platform for web and traffic analytics onto a CloudFoundry platform. A number of marketplace plugins are automatically installed and available for activation. Twilio and Sendgrid CloudFoundry based service support is baked in.
Open source projects are awesome. PaaS CloudFoundry enabling of self-hosted open source application platforms is messy. Making a mashup between cool opensource and cloud-enabling tweaks that makes deployment feel sweet and simple is "hard to do". Legal review burdens aside, the level of ongoing maintenance effort is directly proportional to the number of tweaks in the mashup. So, keeping a repository concise and abbreviated in content is smart. My objective with this repo experiment is to facilitate consistent, rapid Piwik deploys on IBM Bluemix with minimal deployment friction using the fewest files possible.
git clone https://hub.jazz.net/git/<your_id>/<app_name>/
$ cf files <replace_me_with_app_name> /app/fetchConfig.sh | sed -e '1,3d' > fetchConfig.sh
$ chmod +x fetchConfig.sh
$ ./fetchConfig.sh
git add -A
git commit -m "Persisting the installer wizard generated config.ini.php"
git push
Better is not the right question. Sometimes a cool project may not have a high-quality Dockerfile image available yet. I wanted to experiment with how to create a Bluemix instant deploy repo via pure DevOps scripting and git concepts (submodules). Sometimes you may want to learn more about how specific runtimes and buildpacks behave within a PaaS - so what better way than to see in detail how complex apps and platforms are assembled for PaaS CloudFoundry cloud deployment. Sometimes you feel more comfortable understanding (fill in your favorite runtime language - PHP, Python, Node.js, ...) than Docker CLI. Sometimes Docker is the way better approach to go, but you like doing things the hard way ;-)
The magic is in the .bluemix/pipeline.yml. A build script is embedded which precisely defines the steps required to PaaS CloudFoundry enable the opensource application. The script pulls code from various locations, applies tweaks and cleans itself up into a deployable asset. Using IBM DevOps services, you may download the built asset by accessing the builder stage and "downloading all artifacts" (which can then be tweaked further and deployed manually using the CF CLI) or simply let the DevOps pipeline continue to do the assembly and deploy effort for you. The former is useful for devs looking to innvoate and expand capabilities of the open source project (For example: adding cognitive computing interactions from something like IBM Watson) and the latter is for folks simply desiring a rapid turnkey deployment of the opensource project for end-use.
In many cases, the deploy in fact is using these packaging technologies to help gather app platform dependencies. Complementary to that behavior, this repository automates the organization and customization of files PRIOR to dependency inspection and installation. For example, customization tweaks that make the web installer process smarter in self-populating bound service credentials, setting up a hardened deploy with a better security and performance profile, new feature tweaks that include service client sdks such as Twiliio, etc ...
If you want to add additional Piwik plugins not included within this repo, download your plugin of interest from the Piwik Plugins Marketplace. Extract the zip contents into the folder /bluezone/configtweaks/plugins . This would result in something like ./bluezone/configtweaks/plugins/myawesomeplugin . You are free to add as many plugin folders as you'd like within this parent plugins dir. The scripts will loop through and place them within the correct location for you.
git add -A
git commit -m "Added myawesomeplugin to my Piwik deploy"
git push