private void ReportErrorIfStudentsZipHasErrors() { var tempExZipFilePath = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).GetFile($"{slide.Id}.exercise.zip"); var tempExFolder = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ExerciseFolder_From_StudentZip")); exerciseStudentZipBuilder.BuildStudentZip(slide, tempExZipFilePath); Utils.UnpackZip(tempExZipFilePath.ReadAllContent(), tempExFolder.FullName); try { ReportErrorIfStudentsZipHasWrongAnswerOrSolutionFiles(tempExFolder); var csprojFile = tempExFolder.GetFile(ex.CsprojFileName); var csproj = new Project(csprojFile.FullName, null, null, new ProjectCollection()); ReportErrorIfCsprojHasUserCodeOfNotCompileType(tempExFolder, csproj); ReportErrorIfCsprojHasWrongAnswerOrSolutionItems(tempExFolder, csproj); if (!ex.StudentZipIsCompilable) { return; } var buildResult = MsBuildRunner.BuildProject(settings.MsBuildSettings, ex.CsprojFile.Name, tempExFolder); ReportErrorIfStudentsZipNotBuilding(buildResult); } finally { tempExFolder.Delete(true); tempExZipFilePath.Delete(); } }
public TaskResult RunTask(DeploymentContext deploymentContext) { string profileFile = deploymentContext.TaskParameters.GetValue <PublishProjectToFolder>("projectFile"); string projectFilePath = Path.Combine(deploymentContext.GitDirectory, profileFile); string buildConfiguration = deploymentContext.TaskParameters.GetValue <PublishProjectToFolder>("buildConfiguration"); MsBuildRunner msBuildRunner = new MsBuildRunner(deploymentContext.CurrentLogger); const string task = "Build;PipelinePreDeployCopyAllFilesToOneFolder"; bool success = msBuildRunner.StartMsDeployProcess(projectFilePath, task, "Configuration=" + buildConfiguration); if (!success) { return(TaskResult.CreateTotalFailureResult("Cannot publish to folder.")); } string containingFolder = Path.GetDirectoryName(projectFilePath); string packageFolder = Path.Combine(containingFolder, "obj", buildConfiguration, @"Package\PackageTmp"); deploymentContext.DeploymentArtifacts.AddArtifact("DeployPackageFolder", packageFolder); return(TaskResult.CreateSuccessfulResult()); }
public TaskResult RunTask(DeploymentContext deploymentContext) { string configValue = "configuration=\"" + deploymentContext.Branch + "\""; string wwwDir = "WWWPath=\"" + deploymentContext.GitDirectory + @"\www"""; MsBuildRunner msBuildRunner = new MsBuildRunner(deploymentContext.CurrentLogger); bool success = msBuildRunner.StartMsDeployProcess("TransformWebConfig.build", "TransformWebConfig", configValue, wwwDir); if (!success) { return(TaskResult.CreateErrorResult("msbuild did not complete successfully.")); } return(TaskResult.CreateSuccessfulResult()); }
private void StudentsZipIsBuildingOk(Slide slide, ProjectExerciseBlock ex) { var tempDir = new DirectoryInfo("./temp"); try { Utils.UnpackZip(ex.StudentsZip.Content(), "./temp"); var res = MsBuildRunner.BuildProject(settings.MsBuildSettings, tempDir.GetFile(ex.CsprojFileName).FullName, tempDir); if (!res.Success) { ReportSlideError(slide, ex.CsprojFileName + " not building! " + res); } } finally { tempDir.Delete(true); } }
public TaskResult RunTask(DeploymentContext deploymentContext) { string solutionFile = deploymentContext.TaskParameters.GetValue <RunPublishProfile>("solutionFile"); string solutionPath = Path.Combine(deploymentContext.GitDirectory, solutionFile); string publishProfile = deploymentContext.TaskParameters.GetValue <RunPublishProfile>("publishProfile"); MsBuildRunner msBuildRunner = new MsBuildRunner(deploymentContext.CurrentLogger); bool success = msBuildRunner.StartMsDeployProcess(solutionPath, null, "DeployOnBuild=true", "PublishProfile=" + publishProfile); if (!success) { return(TaskResult.CreateTotalFailureResult("Cannot build publish profile.")); } string packageFile = deploymentContext.TaskParameters.GetValue <RunPublishProfile>("packageFile"); string packagePath = Path.Combine(deploymentContext.GitDirectory, packageFile); deploymentContext.DeploymentArtifacts.AddArtifact("DeployPackage", packagePath); return(TaskResult.CreateSuccessfulResult()); }
public void Setup() { _processRunner = Substitute.For <IProcessRunner>(); _msBuildRunner = new MsBuildRunner(_processRunner); }