Cake-Build addin that extends Cake with WebDeploy commands for publishing to IIS
- Deploy websites from a package or folder
- Locally / remotely using credentials
- Outputting the trace information to the cake log
- Testing changes using WhatIf flag
Cake.WebDeploy is available as a nuget package from the package manager console:
Install-Package Cake.WebDeploy
or directly in your build script via a cake addin:
#addin "Cake.WebDeploy"
#addin "Cake.WebDeploy"
Task("Deploy")
.Description("Deploy to a remote computer with web deployment agent installed")
.Does(() =>
{
DeployWebsite(new DeploySettings()
{
SourcePath = "./src/Package.zip",
SiteName = "TestSite",
ComputerName = "remote-location",
Username = "admin",
Password = "pass1"
});
});
Task("Deploy-Folder")
.Description("Deploy to/from folders")
.Does(() =>
{
DeployWebsite(new DeploySettings()
{
SourcePath = "./src/Website/",
DestinationPath = @"C:/src/Websites/Test/",
Username = "admin",
Password = "pass1"
});
});
Task("Deploy-Url")
.Description("Deploy to Azure using a custom url")
.Does(() =>
{
DeployWebsite(new DeploySettings()
{
SourcePath = "./src/Package.zip",
PublishUrl = "{WEBSITENAME}.scm.azurewebsites.net",
Username = "admin",
Password = "pass1"
});
});
Task("Deploy-Fluent")
.Description("Deploy using fluent settings")
.Does(() =>
{
DeployWebsite(new DeploySettings()
.FromSourcePath("./src/Package.zip")
.UseSiteName("TestSite")
.UseComputerName("remote-location")
.UseUsername("admin")
.UsePassword("pass1"));
});
Task("Deploy-WhatIf")
.Description("See what would occur when publishing (WhatIf) and files should be deleted if they don't exist (Delete)")
.Does(() =>
{
DeployWebsite(new DeploySettings()
{
SourcePath = "./src/Package.zip",
Username = "admin",
Password = "pass1",
Delete = true,
WhatIf = true
});
});
RunTarget("Deploy");
A complete Cake example can be found here
A few pointers for correctly enabling WebDeploy scripting can be found here