If your multisite Habitat solution is using a single IIS site, per the current license model. Then all the web projects (Feature/Foundation/Project) are batched into a single package. That is how we are currently doing it. We are publishing all the files to a single temp location, similar to a deployment. Then we deploy all the yml files and folder structure for Unicorn into its own folder. Finally packaging that up into a NuGet package for deployment.
Looking at the Habitat solution, you can see that the CI script runs through all the projects gathering all the files into a single package. https://github.com/Sitecore/Habitat/blob/master/gulpfile-ci.js#L60
gulp.task("CI-Enumerate-Files", function () {
var packageFiles = [];
config.websiteRoot = websiteRootBackup;
return gulp.src(path.resolve("./temp") + "/**/*.*", { base: "temp", read: false })
.pipe(foreach(function (stream, file) {
var item = "/" + file.relative.replace(/\\/g, "/");
console.log("Added to the package:" + item);
packageFiles.push(item);
return stream;
})).pipe(gutil.buffer(function () {
xmlpoke("./package.xml", function (xml) {
for (var idx in packageFiles) {
xml.add("project/Sources/xfiles/Entries/x-item", packageFiles[idx]);
}
});
}));
});
If you solution is using multiple IIS sites, then you are going to want to package up all the assets into separate NuGet packages so that you can deploy to each site separately. This would include all Features and Foundation as well as the IIS sites project project(s).