public OryxArguments() { RunOryxBuild = false; string framework = System.Environment.GetEnvironmentVariable("FRAMEWORK"); string version = System.Environment.GetEnvironmentVariable("FRAMEWORK_VERSION"); string buildFlags = System.Environment.GetEnvironmentVariable("BUILD_FLAGS"); if (string.IsNullOrEmpty(framework) || string.IsNullOrEmpty(version)) { return; } Language = SupportedFrameworks.ParseLanguage(framework); if (Language == Framework.None) { return; } RunOryxBuild = true; Version = version; // Parse Build Flags Flags = BuildFlagsHelper.Parse(buildFlags); // Set language specific SetLanguageOptions(); }
private void SetLanguageOptions() { switch (Language) { case Framework.None: return; case Framework.Python: SetVirtualEnvironment(); return; case Framework.DotNETCore: return; case Framework.NodeJs: // For node, enable compress option by default if (Flags == BuildOptimizationsFlags.None) { Flags = BuildOptimizationsFlags.CompressModules; } return; case Framework.PHP: return; } }
public static BuildOptimizationsFlags Parse(string value, BuildOptimizationsFlags defaultVal = BuildOptimizationsFlags.None) { if (string.IsNullOrEmpty(value)) { return(defaultVal); } try { var result = (BuildOptimizationsFlags)Enum.Parse(typeof(BuildOptimizationsFlags), value); return(result); } catch (Exception) { return(defaultVal); } }
public void ArgumentPropertyTest(string language, string version, bool expectedRunOryxBuild, bool expectedSkipKuduSync, BuildOptimizationsFlags expectedFlags) { var mockedEnvironment = new Dictionary <string, string>() { { "FRAMEWORK", language }, { "FRAMEWORK_VERSION", version } }; using (new TestScopedEnvironmentVariable(mockedEnvironment)) { IOryxArguments args = new AppServiceOryxArguments(); Assert.Equal(expectedRunOryxBuild, args.RunOryxBuild); Assert.Equal(expectedSkipKuduSync, args.SkipKuduSync); Assert.Equal(expectedFlags, args.Flags); } }
private void AddBuildOptimizationFlags(StringBuilder args, DeploymentContext context, BuildOptimizationsFlags optimizationFlags) { switch (Flags) { // By default, we always want to use the temp directory path // However, it's good to have an off option here. // Ideally, we would always use ExpressBuild, as that also performs run from package case BuildOptimizationsFlags.Off: break; case BuildOptimizationsFlags.None: case BuildOptimizationsFlags.CompressModules: case BuildOptimizationsFlags.UseExpressBuild: OryxArgumentsHelper.AddTempDirectoryOption(args, context.BuildTempPath); break; } }
public void ArgumentPropertyTest(string functions_worker_runtime, bool expectedRunOryxBuild, bool expectedSkipKuduSync, BuildOptimizationsFlags expectedFlags) { var mockedEnvironment = new Dictionary <string, string>() { { "FUNCTIONS_WORKER_RUNTIME", functions_worker_runtime }, }; using (new TestScopedEnvironmentVariable(mockedEnvironment)) { IOryxArguments args = new FunctionAppOryxArguments(); Assert.Equal(expectedRunOryxBuild, args.RunOryxBuild); Assert.Equal(expectedSkipKuduSync, args.SkipKuduSync); Assert.Equal(expectedFlags, args.Flags); } }