I have an example web app that I am using to experiment with Spinnaker, specifically taking it from source (github) to production (GCE).
In general, is this something (including the applicable dependencies) that should be baked as an image? If so, how? Since the documentation and the available UI option only covered deb packages.
If this shouldn't be baked, how would I deploy this and the dependencies to, say, a QA VM? Should I use scripts to pull and install them from their sources?
A typical scenario would be to build your source and produce/publish a deb using a CI system like jenkins, and have that deb declare its dependencies.
There are quite a few options for producing the deb, depending on what build system you are using. Many folks use gradle and a Netflix OSS plugin called nebula (https://nebula-plugins.github.io/).
There is a comprehensive tutorial here (http://www.spinnaker.io/docs/from-source-to-prod) that shows how to: - Start with source in a git repo and build/publish deb with jenkins (to a local aptly repo) - Trigger a spinnaker pipeline, bake a new image, and deploy to a test cluster - Perform some manual judgment - Locate the just-verified image in the test cluster and promote it to a prod cluster
While the concepts in that codelab are mostly generic, it does rely on a canned GCE image to get you up and running with no configuration. That should work out well for you as you mentioned you are running on GCE.
Note that you can of course employ other baking/deployment strategies (some folks rely on config management systems at startup time), but building a deb and baking it into an image seems the most appropriate for the scenario you described.
If what you really want is to just clone your webapp into your newly-baked image, you can do this by creating a custom packer template. The packer templates all live in this directory (https://github.com/spinnaker/rosco/tree/master/rosco-web/config/packer) and you can use (https://github.com/spinnaker/rosco/blob/master/rosco-web/config/packer/gce.json) as a starting point.
Then change this line (https://github.com/spinnaker/rosco/blob/master/rosco-web/config/packer/gce.json#L33) to call your own shell script. Your shell script can clone whatever repo's it needs to and build/test however you like. Since we are relying on packer, you can also use any of packer's other supported provisioners here.
The last step is to specify your new custom packer template in the Bake Stage configuration ui, along with whatever parameters (if any) it requires: