Firstly I always recomend seperating the build and deployment processes. They are not one and the same, and seperation makes it easier to use more mature configuration management workflows. An example of this would be being able to promote a previous build (that's been through a systest environment and given the all clear) to a UAT environment as a release candidate. You don't want to rebuild to perform this. Capture your build artefacts, and deploy from them seperately.
Anyway...
SSIS is fairly straightforward : all the build does really is copy packages into the output folder, so you just need to grab them somehow (depends what you use to build with - I use TeamCity). Then in your deployment process, you can fairly easily use SMO to upload them to the SSIS server:
$app = new-object Microsoft.SqlServer.Dts.Runtime.Application
$app.SaveToSqlServerAs($packageObj, $null, "\\$folderName\$($packageObj.Name)$packageNameSuffix", $serverName, $null, $null);
(Interestingly this doesn't seem to go via the SSIS service itself, but via the MSDB stored proc API. Not that it makes much difference either way, but it works even when the user doesn't have access to the SSIS service remotely because of that DCOM issue)
SSAS is a lot harder. Whilst you can do a heap of stuff with AMO, which I do as part of my deployments, I've never found an easy way of taking the outputs from the solution build (like the .asdatabase file) and converting them into the XMLA required to create the olap database schema from scratch. There's a transformation missing, which I couldn't be bothered to write.
Instead I use the SSAS deployment utility, which can be used from the command line as part of a deployment process, get it to generate the XMLA and then execute it:
$asDeploy = "$programfiles32\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Microsoft.AnalysisServices.Deployment.exe"
write-host "Generating XMLA"
start-process -wait -FilePath:$asDeploy -ArgumentList:"$pwd\..\bin\MyOlap\MyOlap.asdatabase","/d","/o:$pwd\MyOlap.xmla"
if (-not $?){
throw "Failed to generate XMLA: errors were reported above";
}
write-host "Deploying SSAS Database"
.\ascmd.exe -S $olapServer -i "$pwd\MyOlap.xmla"
if (-not $?){
throw "Failed to deploy cube: errors were reported above";
}
I make sure the deployment above doesn't process the cube (I re-write the .deploymentoptions file) so that I can subsiquently use AMO to run though the deployed cube, and updating datasources as required for that environment. Then I kick off a process.
You didn't ask, but for SSRS you can just grab the RDLs from the build, and use the webservice API to deploy them, and obviously for databases you'd use a SQL GDR project, and use the command line deployment tool there. Taken together you can deploy an entire BI project from a single script with fairly tight control around versioning etc...
I've used these approaches for the last 5 years or so on various projects, and acrued a library of really useful PowerShells for doing this. One day I will clean these up and release them.
[17/May] Note: the SQL 2008 R2 version of the deployment wizard (in the SQL/100/ folder) is marked as a GUI app, not a console app (like 2005 was), so the script as previously written doesn't wait for it to complete! Code above changed to use start-process with explicit '-wait' instead. This is a nasty gotcha.