コード例 #1
0
        private void CheckAndRunJobWithBuild()
        {
            try
            {
                var job = new DeploymentJobServiceClient().GetNext();
                if (job == null)
                {
                    return;
                }

                _job = job;

                Log("Starting", JobStatus.Inprogress);

                var sourceDirectory = Path.Combine(Path.GetPathRoot(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)), "mktaxi");

                Log("Source Folder = " + sourceDirectory);

                var taxiRepo = new TaxiRepository(sourceDirectory, bool.Parse(ConfigurationManager.AppSettings["IsGitHubSourceControl"]));
                if (_job.Server.Role == EnvironmentRole.BuildServer)
                {
                    taxiRepo.FetchSource(_job.Revision.Commit, str => Log(str));
                    Build(sourceDirectory);
                }

                //build server and deploy
                if (_job.ServerSide || _job.Database)
                {
                    var packagesDirectory = Path.Combine(sourceDirectory, "Deployment\\Server\\Package\\");
                    if (_job.Server.Role != EnvironmentRole.BuildServer)
                    {
                        packagesDirectory = ConfigurationManager.AppSettings["DeployFolder"];
                    }
                    var packagesLocation = CleanAndUnZip(packagesDirectory);
                    DeployTaxiHail(packagesLocation);
                }

                Log("Job Complete", JobStatus.Success);
            }
            catch (Exception e)
            {
                _logger.Error(e.Message, e);
                Log(e.Message, JobStatus.Error);
            }
        }
コード例 #2
0
        private void CheckAndRunJobWithBuild()
        {
            try
            {
                var job = new DeploymentJobServiceClient().GetNext();

                if (job == null)
                {
                    return;
                }

                _job = job;

                try
                {
                    _logger.Debug("Begin work on " + job.Company.CompanyName);

                    UpdateJob("Starting at " + DateTime.Now, JobStatus.Inprogress);

                    var sourceDirectoryConfig = ConfigurationManager.AppSettings["CheckoutDir"];

                    var sourceDirectory = string.IsNullOrEmpty(sourceDirectoryConfig)
                                                ? Path.Combine(Path.GetTempPath(), "TaxiHailSourceNewService")
                                                : sourceDirectoryConfig;

                    if (!Directory.Exists(sourceDirectory))
                    {
                        Directory.CreateDirectory(sourceDirectory);
                        UpdateJob("Directory " + sourceDirectory + " did not exist, creating...");
                        _isNewFolder = true;
                    }

                    var releaseiOSAdHocDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "bin", "iPhone", "AdHoc");
                    if (Directory.Exists(releaseiOSAdHocDir))
                    {
                        Directory.Delete(releaseiOSAdHocDir, true);
                    }
                    var releaseiOSAdHocObjDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "obj", "iPhone", "AdHoc");
                    if (Directory.Exists(releaseiOSAdHocObjDir))
                    {
                        Directory.Delete(releaseiOSAdHocObjDir, true);
                    }

                    var releaseiOSAppStoreDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "bin", "iPhone", "AppStore");
                    if (Directory.Exists(releaseiOSAppStoreDir))
                    {
                        Directory.Delete(releaseiOSAppStoreDir, true);
                    }
                    var releaseiOSAppStoreObjDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "obj", "iPhone", "AppStore");
                    if (Directory.Exists(releaseiOSAppStoreObjDir))
                    {
                        Directory.Delete(releaseiOSAppStoreObjDir, true);
                    }

                    var releaseAndroidDir = Path.Combine(sourceDirectory, "Src", "Mobile", "Android", "bin", "Release");
                    if (Directory.Exists(releaseAndroidDir))
                    {
                        Directory.Delete(releaseAndroidDir, true);
                    }

                    var releaseBlackBerryApkDir = Path.Combine(sourceDirectory, "Src", "Mobile", "TaxiHail.BlackBerry", "bin", "Release");
                    if (Directory.Exists(releaseBlackBerryApkDir))
                    {
                        Directory.Delete(releaseBlackBerryApkDir, true);
                    }

                    var releaseBlackBerryBarDir = Path.Combine(sourceDirectory, "Src", "BBTools", "Outputs");
                    if (Directory.Exists(releaseBlackBerryBarDir))
                    {
                        Directory.Delete(releaseBlackBerryBarDir, true);
                    }

                    var releaseCallboxAndroidDir = Path.Combine(sourceDirectory, "Src", "Mobile", "MK.Callbox.Mobile.Client.Android", "bin", "Release");
                    if (Directory.Exists(releaseCallboxAndroidDir))
                    {
                        Directory.Delete(releaseCallboxAndroidDir, true);
                    }

                    DownloadAndInstallProfileIfNecessary();

                    var isGitHub = bool.Parse(ConfigurationManager.AppSettings["IsGitHubSourceControl"]);
                    var taxiRepo = new TaxiRepository(sourceDirectory, isGitHub);

                    UpdateJob("FetchSource");
                    taxiRepo.FetchSource(_job.Revision.Commit, str => UpdateJob(str));

                    UpdateJob("Customize");
                    Customize(sourceDirectory, _job);

                    UpdateJob("Build");
                    BuildMobile(sourceDirectory, releaseiOSAdHocDir, releaseiOSAppStoreDir);

                    UpdateJob("Deploy");
                    var deploymentInfo = Deploy(_job.Company, releaseiOSAdHocDir, releaseiOSAppStoreDir, releaseAndroidDir, releaseCallboxAndroidDir, releaseBlackBerryApkDir, releaseBlackBerryBarDir);

                    CreateNewVersionInCustomerPortal(deploymentInfo);
                    UpdateJob(string.Format("Done (ended at {0})", DateTime.Now), JobStatus.Success);

                    _logger.Debug("Deployment finished without error");
                }
                catch (Exception e)
                {
                    _logger.Error(e.Message);
                    UpdateJob(string.Format("{0} (ended at {1})", e.Message, DateTime.Now), JobStatus.Error);
                }
            }
            catch (Exception e)
            {
                _logger.Error(e.Message);
            }
        }