Czy można opublikować stronę internetową zamiast budować ją jako część skryptu FAKE?Opublikuj witrynę w FAKE (F # Make)
Odpowiedz
Ja sam nie mam z tym doświadczenia, ale wygląda na to, że istnieją dwa sposoby ręcznego uruchomienia procesu wdrażania w sieci. Jeden (wygląda na starszy) to wywołanie MSBuild ze specjalnym celem (jako described here), a inna opcja (wygląda bardziej nowocześnie) jest użycie narzędzia MSDeploy (które has a command line interface).
Oba te elementy powinny być łatwe do wywołania ze skryptu FAKE. Oto przykład, który wywołuje narzędzie wiersza poleceń:
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"
)
wywołanie skryptu MSBuild powinien wyglądać mniej więcej tak:
Target "BuildTest" (fun _ ->
"Blah.csproj"
|> MSBuildRelease "" "ResolveReferences;_CopyWebApplication"
|> ignore
)
Jak już mówiłem, nie testowałem tego (tak to może całkowicie mylnie), ale miejmy nadzieję, że może wskazać ci przydatny kierunek, zanim niektóre wdrożenia internetowe lub eksperci FAKE przyjdą do SO!
Oto jeden sposób, aby to zrobić. (Faktycznie to nie dokładnie odpowiedzieć na to pytanie, ponieważ publikowanie nie jest wykonywana bez budynku.)
- Zdecyduj, które cele muszą publikować na stronie internetowej.
- Spraw, aby były zależne od celu "Kompilacja".
- Ustaw obiekt docelowy "Buduj", publikując witrynę, korzystając z profilu publikowania, jeśli potrzebne jest publikowanie.
Oto fragment kodu z build.fsx
ilustrujących to podejście:
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.
Z tego kodu w miejscu, gdy prowadzony jest jednym z celów „Test”, „AcceptanceTest”, „wdrożyć” , strona internetowa zostanie opublikowana zgodnie z profilem publikowania zdefiniowanym w LocalTestServer.pubxml
.
Nie sądzę, że jest to wbudowane w to zadanie, ale możesz to zrobić (tak jak wszystko, co możesz zaprogramować w F #). Jak chcesz opublikować witrynę? Korzystasz z FTP lub czegoś innego? –
Cześć Tomas, przepraszam, konkretnie mam na myśli "publikuj" w sensie Visual Studio, a nie ogólne, publikuj go gdzieś. Czy to też miałeś na myśli? Jeśli tak, to musisz tylko opublikować go na dysku, ale uruchamia transformacje web.config, usuwa niepotrzebne pliki itp. – mattcole
Rozumiem, że to ma sens. Rozejrzałem się po internecie i zamieściłem kilka pomysłów w odpowiedzi. –