Add the ability to specify Web.config transformations in the Control Panel
The "Configuration variables" stuff in AppHarbor is awesome, but it only works for basic <appSettings>.
It would be awesome if we could paste a Web.config transform (like the contents of a Web.Release.config) into the control panel to be applied too. This would support additional functionality like:
1. Allow us to use the strongly-typed "Settings" files built into projects instead of <appSettings>. They're strongly-typed and support things you can't easily put into a string (such as a string array).
2. Allow overriding other settings for modules. Eg. currently my Web.Release.config has config to email errors to me (ELMAH). I can't move this config to <appSettings> without compiling ELAMH with the change. So currently, if someone downloads my source from Bitbucket and doesn't update Web.Release.config, I'll get their errors too! Being able to transform this config in the AH control panel would eliminate this problem because I'd just set it in the CP, and leave the repository version empty.
Of course, there are other things too, this would give ultimate flexibility.
Note: Ideally this shouldn't *replace* the Web.Release.config file, it should transform on top of that. If this isn't possible, it's not the end of the world, as long as the control panel makes it clear the Web.Release.config file will simply be replaced.
You do support web config transforms, but only one - "web.release.config". We often need to deploy to different environments, (i.e. QA) and we also often have settings that are outside the appSettings element and so right now we have to decent way to manage this without maintaining seperate branch lines for each. Please consider as this would help us a lot.
That would be very useful indeed. Here's my situation:
1) I want to use MongoLab to host a MongoDB. Because MongoLab is not officially supported by AppHarbor, I need to handle the connection string stuff myself, but I obviously don't want to have it sitting there in my repository with the MongoDB user/password and all. Right now I would have to specify it in an appSetting via the dashboard, but then I need to add lines of code in a few places to check that first and then fallback to normal connection strings.
2) I have a custom configuration section with various settings for my application (this is way better than using appSettings because of strong typing and validation). Those settings are different between dev/testing/staging/production.
The current Web.config transformations require the settings to be actually in the repository, not specified in the dashboard.
The request is to support pasting a Web.config transformation into the dashboard instead of just appSettings, so we can get the same benefits (keep secrets out of public repos, deploy same source to multiple apps) but with strongly-typed settings or custom configSections :-)
Adminrune (Admin, AppHarbor) commented
Not sure I quite get the use case here. We support web config transformations now, doesn't that cover it?