是否可以发布网站而不是将其作为FAKE脚本的一部分构建?
答案 0 :(得分:7)
我自己没有这方面的经验,但看起来有两种方法可以手动运行web deploymnent流程。一个(看起来较旧)是使用特殊目标(如described here)调用MSBuild而另一个选项(看起来更现代)是使用MSDeploy工具(has a command line interface)。
这些都应该很容易从FAKE脚本调用。以下是调用命令行工具的示例:
Target "Deploy" (fun _ ->
let result =
ExecProcess (fun info ->
info.FileName <- "file-to-run.exe"
info.Arguments <- "--parameters:go-here"
) (System.TimeSpan.FromMinutes 1.0)
if result <> 0 then failwith "Operation failed or timed out"
)
调用MSBuild脚本应如下所示:
Target "BuildTest" (fun _ ->
"Blah.csproj"
|> MSBuildRelease "" "ResolveReferences;_CopyWebApplication"
|> ignore
)
正如我所说,我没有对此进行过测试(因此可能完全错误),但希望它可以指向一个有用的方向,在某些网络部署或FAKE专家来到SO之前!
答案 1 :(得分:5)
这是一种方法。 (实际上它没有完全回答这个问题,因为没有构建没有执行发布。)
以下是来自build.fsx
的一段代码,说明了这种方法:
let testProjects = @"src/**/*Tests.csproj"
let requestedTarget = getBuildParamOrDefault "target" ""
let shouldDeploy =
match requestedTarget with
| "Test" | "AcceptanceTest" | "Deploy" -> true
| _ -> false
// *** Define Targets ***
Target "BuildApp" (fun _ ->
let properties =
if shouldDeploy
then [ ("DeployOnBuild", "true"); ("PublishProfile","LocalTestServer.pubxml") ]
else []
!! @"src/**/*.csproj"
-- testProjects
|> MSBuildReleaseExt null properties "Build"
|> Log "Build-Output: "
)
// Other targets and dependencies omitted.
使用此代码,当其中一个目标 网站上运行“测试”,“AcceptanceTest”,“部署” 根据{{1}}中定义的发布配置文件发布。