-
Notifications
You must be signed in to change notification settings - Fork 585
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
77700f4
commit 01c4bb7
Showing
19 changed files
with
679 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// Auto-Generated by FAKE; do not edit | ||
namespace System | ||
open System.Reflection | ||
|
||
[<assembly: AssemblyTitleAttribute("FAKE - F# Make Azure Cloud Services Support")>] | ||
[<assembly: AssemblyProductAttribute("FAKE - F# Make")>] | ||
[<assembly: AssemblyVersionAttribute("5.0.0")>] | ||
[<assembly: AssemblyInformationalVersionAttribute("5.0.0")>] | ||
[<assembly: AssemblyFileVersionAttribute("5.0.0")>] | ||
do () | ||
|
||
module internal AssemblyVersionInformation = | ||
let [<Literal>] AssemblyTitle = "FAKE - F# Make Azure Cloud Services Support" | ||
let [<Literal>] AssemblyProduct = "FAKE - F# Make" | ||
let [<Literal>] AssemblyVersion = "5.0.0" | ||
let [<Literal>] AssemblyInformationalVersion = "5.0.0" | ||
let [<Literal>] AssemblyFileVersion = "5.0.0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/// Contains tasks to package Azure Cloud Services. | ||
module Fake.Azure.CloudServices | ||
|
||
open System.IO | ||
open Fake.Core | ||
open Fake.IO | ||
open Fake.IO.Globbing.Operators | ||
|
||
/// Configuration details for packaging cloud services. | ||
[<CLIMutable>] | ||
type PackageCloudServiceParams = | ||
{ /// The name of the Cloud Service. | ||
CloudService : string | ||
/// The name of the role in the service. | ||
WorkerRole : string | ||
/// The SDK version to use e.g. 2.2. If None, the latest available version is used. | ||
SdkVersion : float option | ||
/// The output path for the .cspkg. | ||
OutputPath : string option } | ||
|
||
let DefaultCloudServiceParams = { CloudService = ""; WorkerRole = ""; SdkVersion = None; OutputPath = None } | ||
|
||
module VmSizes = | ||
type VmSize = | VmSize of size:string | ||
let ExtraSmall = VmSize "ExtraSmall" | ||
let Small = VmSize "Small" | ||
let Medium = VmSize "Medium" | ||
let Large = VmSize "Large" | ||
let ExtraLarge = VmSize "ExtraLarge" | ||
let A5 = VmSize "A5" | ||
let A6 = VmSize "A6" | ||
let A7 = VmSize "A7" | ||
let A8 = VmSize "A8" | ||
let A9 = VmSize "A9" | ||
|
||
/// Modifies the size of the Worker Role in the csdef. | ||
let ModifyVMSize (VmSizes.VmSize vmSize) cloudService = | ||
let csdefPath = sprintf @"%s\ServiceDefinition.csdef" cloudService | ||
csdefPath | ||
|> File.ReadAllText | ||
|> Xml.Doc | ||
|> Xml.XPathReplaceNS | ||
"/svchost:ServiceDefinition/svchost:WorkerRole/@vmsize" | ||
vmSize | ||
[ "svchost", "http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" ] | ||
|> fun doc -> doc.Save csdefPath | ||
|
||
/// Packages a cloud service role into a .cspkg, ready for deployment. | ||
let PackageRole packageCloudServiceParams = | ||
let csPack = | ||
let sdkRoots = | ||
[ @"C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\" | ||
@"C:\Program Files\Microsoft SDKs\Azure\.NET SDK\" ] | ||
|
||
let availableCsPacks = | ||
sdkRoots | ||
|> Seq.collect(fun sdkRoot -> | ||
!! (sdkRoot + @"**\cspack.exe") | ||
|> Seq.filter(fun path -> path.Substring(sdkRoot.Length).StartsWith "v") | ||
|> Seq.map(fun path -> sdkRoot, path)) | ||
|> Seq.map(fun (sdkRoot, cspackPath) -> | ||
let version = | ||
cspackPath.Substring(sdkRoot.Length).Split '\\' | ||
|> Seq.head | ||
|> fun version -> version.Substring 1 | ||
|> float | ||
version, sdkRoot, cspackPath) | ||
|> Seq.cache | ||
|
||
match packageCloudServiceParams.SdkVersion with | ||
| Some version -> | ||
availableCsPacks | ||
|> Seq.tryFind(fun (csPackVersion,_,_) -> csPackVersion = version) | ||
|> Option.map(fun (_,_,csPackFileInfo) -> csPackFileInfo) | ||
| None -> | ||
availableCsPacks | ||
|> Seq.sortBy(fun (v,_,_) -> -v) | ||
|> Seq.map(fun (_,_,csPackFileInfo) -> csPackFileInfo) | ||
|> Seq.tryFind(fun _ -> true) | ||
|
||
csPack | ||
|> Option.map(fun csPack -> | ||
packageCloudServiceParams.OutputPath |> Option.iter(DirectoryInfo.ensure << DirectoryInfo.ofPath) | ||
let outputFileArg = | ||
packageCloudServiceParams.OutputPath | ||
|> Option.map(fun path -> Path.Combine(path, (packageCloudServiceParams.CloudService + ".cspkg"))) | ||
|> Option.map(sprintf "/out:%s") | ||
|> defaultArg | ||
<| "" | ||
|
||
Process.shellExec | ||
{ ExecParams.Empty with | ||
Program = csPack | ||
CommandLine = sprintf @"%s\ServiceDefinition.csdef /role:%s;%s\bin\release;%s.dll %s" packageCloudServiceParams.CloudService packageCloudServiceParams.WorkerRole packageCloudServiceParams.WorkerRole packageCloudServiceParams.WorkerRole outputFileArg | ||
Args = [] }) |
26 changes: 26 additions & 0 deletions
26
src/app/Fake.Azure.CloudServices/Fake.Azure.CloudServices.fsproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<PropertyGroup> | ||
<TargetFrameworks>net46;netstandard1.6;netstandard2.0</TargetFrameworks> | ||
<AssemblyName>Fake.Azure.CloudServices</AssemblyName> | ||
<OutputType>Library</OutputType> | ||
</PropertyGroup> | ||
<PropertyGroup> | ||
<DefineConstants>$(DefineConstants);FX_NO_REMOTING;USE_ASYNC_LOCAL</DefineConstants> | ||
</PropertyGroup> | ||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> | ||
<DefineConstants>$(DefineConstants);RELEASE</DefineConstants> | ||
</PropertyGroup> | ||
<ItemGroup> | ||
<Compile Include="AssemblyInfo.fs" /> | ||
<Compile Include="CloudServices.fs" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ProjectReference Include="..\Fake.Core.Context\Fake.Core.Context.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Environment\Fake.Core.Environment.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Process\Fake.Core.Process.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.String\Fake.Core.String.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Xml\Fake.Core.Xml.fsproj" /> | ||
<ProjectReference Include="..\Fake.IO.FileSystem\Fake.IO.FileSystem.fsproj" /> | ||
</ItemGroup> | ||
<Import Project="..\..\..\.paket\Paket.Restore.targets" /> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
group netcore | ||
|
||
FSharp.Core | ||
NETStandard.Library | ||
System.Diagnostics.FileVersionInfo | ||
System.Diagnostics.Process | ||
System.IO.FileSystem.Watcher | ||
System.Xml.XDocument | ||
System.Xml.XPath | ||
System.Xml.XPath.XDocument | ||
System.Xml.XPath.XmlDocument | ||
System.Xml.ReaderWriter |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// Auto-Generated by FAKE; do not edit | ||
namespace System | ||
open System.Reflection | ||
|
||
[<assembly: AssemblyTitleAttribute("FAKE - F# Make Azure Emulators Support")>] | ||
[<assembly: AssemblyProductAttribute("FAKE - F# Make")>] | ||
[<assembly: AssemblyVersionAttribute("5.0.0")>] | ||
[<assembly: AssemblyInformationalVersionAttribute("5.0.0")>] | ||
[<assembly: AssemblyFileVersionAttribute("5.0.0")>] | ||
do () | ||
|
||
module internal AssemblyVersionInformation = | ||
let [<Literal>] AssemblyTitle = "FAKE - F# Make Azure Emulators Support" | ||
let [<Literal>] AssemblyProduct = "FAKE - F# Make" | ||
let [<Literal>] AssemblyVersion = "5.0.0" | ||
let [<Literal>] AssemblyInformationalVersion = "5.0.0" | ||
let [<Literal>] AssemblyFileVersion = "5.0.0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/// Contains tasks to control the local Azure Emulator | ||
module Fake.Azure.Emulators | ||
|
||
open System | ||
open Fake.Core | ||
open Fake.IO | ||
open Fake.IO.FileSystemOperators | ||
|
||
/// A type for the controlling parameter | ||
[<CLIMutable>] | ||
type private AzureEmulatorParams = { | ||
StorageEmulatorToolPath:Lazy<string> | ||
CSRunToolPath:string | ||
TimeOut:TimeSpan | ||
} | ||
|
||
/// Base path for getting tools from Microsoft SDKs | ||
let msSdkBasePath = Environment.ProgramFilesX86 @@ "Microsoft SDKs" | ||
|
||
/// The default parameters for Azure emulators | ||
let private AzureEmulatorDefaults = { | ||
StorageEmulatorToolPath = | ||
lazy | ||
let path = msSdkBasePath @@ @"\Azure\Storage Emulator\AzureStorageEmulator.exe" | ||
if File.exists path then path | ||
else failwith (sprintf "Unable to locate Azure Storage Emulator at %s" path) | ||
CSRunToolPath = "\"C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\csrun.exe\"" | ||
TimeOut = TimeSpan.FromMinutes 5. | ||
} | ||
|
||
let private (|StorageAlreadyStarted|StorageAlreadyStopped|Ok|OtherError|) = function | ||
| 0 -> Ok | ||
| -5 -> StorageAlreadyStarted | ||
| -6 -> StorageAlreadyStopped | ||
| _ -> OtherError | ||
|
||
/// Stops the storage emulator | ||
let StopStorageEmulator = (fun _ -> | ||
match Process.Exec (fun info -> | ||
{ info with | ||
FileName = AzureEmulatorDefaults.StorageEmulatorToolPath.Value | ||
Arguments = "stop" }) AzureEmulatorDefaults.TimeOut with | ||
| Ok | StorageAlreadyStopped -> () | ||
| _ -> failwithf "Azure Emulator Failure on stop Storage Emulator" | ||
) | ||
|
||
/// Starts the storage emulator | ||
let StartStorageEmulator = (fun _ -> | ||
match Process.Exec (fun info -> | ||
{ info with | ||
FileName = AzureEmulatorDefaults.StorageEmulatorToolPath.Value | ||
Arguments = "start" }) AzureEmulatorDefaults.TimeOut with | ||
| Ok | StorageAlreadyStarted -> () | ||
| _ -> failwithf "Azure Emulator Failure on start Storage Emulator" | ||
) | ||
|
||
/// Stops the compute emulator | ||
let StopComputeEmulator = (fun _ -> | ||
if 0 <> Process.Exec (fun info -> | ||
{ info with | ||
FileName = AzureEmulatorDefaults.CSRunToolPath | ||
Arguments = "/devfabric:shutdown" }) AzureEmulatorDefaults.TimeOut | ||
then | ||
failwithf "Azure Emulator Failure on stop Fabric Emulator" | ||
) | ||
|
||
/// Starts the compute emulator | ||
let StartComputeEmulator = (fun _ -> | ||
if 0 <> Process.Exec (fun info -> | ||
{ info with | ||
FileName = AzureEmulatorDefaults.CSRunToolPath | ||
Arguments = "/devfabric:start" }) AzureEmulatorDefaults.TimeOut | ||
then | ||
failwithf "Azure Emulator Failure on start Fabric Emulator" | ||
) | ||
|
||
/// Resets the devstore (BLOB, Queues and Tables) | ||
let ResetDevStorage = (fun _ -> | ||
if 0 <> Process.Exec (fun info -> | ||
{ info with | ||
FileName = AzureEmulatorDefaults.StorageEmulatorToolPath.Value | ||
Arguments = "clear all" }) AzureEmulatorDefaults.TimeOut | ||
then | ||
failwithf "Azure Emulator Failure on reset Dev Storage" | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<PropertyGroup> | ||
<TargetFrameworks>net46;netstandard1.6;netstandard2.0</TargetFrameworks> | ||
<AssemblyName>Fake.Azure.Emulators</AssemblyName> | ||
<OutputType>Library</OutputType> | ||
</PropertyGroup> | ||
<PropertyGroup> | ||
<DefineConstants>$(DefineConstants);FX_NO_REMOTING;USE_ASYNC_LOCAL</DefineConstants> | ||
</PropertyGroup> | ||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> | ||
<DefineConstants>$(DefineConstants);RELEASE</DefineConstants> | ||
</PropertyGroup> | ||
<ItemGroup> | ||
<Compile Include="AssemblyInfo.fs" /> | ||
<Compile Include="Emulators.fs" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ProjectReference Include="..\Fake.Core.Context\Fake.Core.Context.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Environment\Fake.Core.Environment.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Process\Fake.Core.Process.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.String\Fake.Core.String.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Trace\Fake.Core.Trace.fsproj" /> | ||
<ProjectReference Include="..\Fake.IO.FileSystem\Fake.IO.FileSystem.fsproj" /> | ||
</ItemGroup> | ||
<Import Project="..\..\..\.paket\Paket.Restore.targets" /> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
group netcore | ||
|
||
FSharp.Core | ||
NETStandard.Library | ||
System.Diagnostics.FileVersionInfo | ||
System.Diagnostics.Process | ||
System.IO.FileSystem.Watcher |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// Auto-Generated by FAKE; do not edit | ||
namespace System | ||
open System.Reflection | ||
|
||
[<assembly: AssemblyTitleAttribute("FAKE - F# Make Azure Kudu Support")>] | ||
[<assembly: AssemblyProductAttribute("FAKE - F# Make")>] | ||
[<assembly: AssemblyVersionAttribute("5.0.0")>] | ||
[<assembly: AssemblyInformationalVersionAttribute("5.0.0")>] | ||
[<assembly: AssemblyFileVersionAttribute("5.0.0")>] | ||
do () | ||
|
||
module internal AssemblyVersionInformation = | ||
let [<Literal>] AssemblyTitle = "FAKE - F# Make Azure Kudu Support" | ||
let [<Literal>] AssemblyProduct = "FAKE - F# Make" | ||
let [<Literal>] AssemblyVersion = "5.0.0" | ||
let [<Literal>] AssemblyInformationalVersion = "5.0.0" | ||
let [<Literal>] AssemblyFileVersion = "5.0.0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<PropertyGroup> | ||
<TargetFrameworks>net46;netstandard1.6;netstandard2.0</TargetFrameworks> | ||
<AssemblyName>Fake.Azure.Kudu</AssemblyName> | ||
<OutputType>Library</OutputType> | ||
</PropertyGroup> | ||
<PropertyGroup> | ||
<DefineConstants>$(DefineConstants);FX_NO_REMOTING;USE_ASYNC_LOCAL</DefineConstants> | ||
</PropertyGroup> | ||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> | ||
<DefineConstants>$(DefineConstants);RELEASE</DefineConstants> | ||
</PropertyGroup> | ||
<ItemGroup> | ||
<Compile Include="AssemblyInfo.fs" /> | ||
<Compile Include="Kudu.fs" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ProjectReference Include="..\Fake.Core.Context\Fake.Core.Context.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Environment\Fake.Core.Environment.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Process\Fake.Core.Process.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.String\Fake.Core.String.fsproj" /> | ||
<ProjectReference Include="..\Fake.Core.Trace\Fake.Core.Trace.fsproj" /> | ||
<ProjectReference Include="..\Fake.IO.FileSystem\Fake.IO.FileSystem.fsproj" /> | ||
</ItemGroup> | ||
<Import Project="..\..\..\.paket\Paket.Restore.targets" /> | ||
</Project> |
Oops, something went wrong.