Пример #1
0
        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();
            }
        }
Пример #2
0
        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());
        }
Пример #4
0
        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());
        }
Пример #6
0
 public void Setup()
 {
     _processRunner = Substitute.For <IProcessRunner>();
     _msBuildRunner = new MsBuildRunner(_processRunner);
 }