public async Task <IActionResult> BuildServer() { IBuildService fetchingService = null; string configJson = await IOHelper.ReadFile(this.configFilePath); List <WidgetConfiguration> widgetConfiguration = JsonConvert.DeserializeObject <List <WidgetConfiguration> >(configJson); if (widgetConfiguration != null && widgetConfiguration.Count > 0) { foreach (WidgetConfiguration item in widgetConfiguration) { if (item.WidgetType == "bs") { object[] args = new object[] { item.RestApiUrls, item.RestApiHeader, }; fetchingService = (IBuildService)Activator.CreateInstance(Type.GetType(item.ServiceName), args); } } } List <Build> result = new List <Build>(); if (fetchingService != null) { result = fetchingService.GetBuilds(); } return(this.Ok(result)); }
public static void Setup() { var fadeInsteadOfBlink = AppSettings.Blink1.FadeInsteadOfBlink; var log = new ConsoleLog(); TfsAccess = AppSettings.TFS.UseFake ? (ITfsAccess) new FakeTfsAccess() : new TfsAccess(new TfsApiClient(AppSettings.TFS.Instance, AppSettings.TFS.Username, AppSettings.TFS.Password)); TeamCityAccess = AppSettings.TeamCity.UseFake ? (ITeamCityAccess) new FakeTeamCityAccess() : new TeamCityAccess( AppSettings.TeamCity.Instance, AppSettings.TeamCity.UseGuestLogin, AppSettings.TeamCity.Username, AppSettings.TeamCity.Password); BuildService = AppSettings.Monitoring.BuildServer == BuildServer.TFS || AppSettings.Monitoring.BuildServer == BuildServer.VSTS ? (IBuildService) new TfsBuildService(TfsAccess, AppSettings.TFS.ProjectID, AppSettings.TFS.BuildDefinitionIDs) : AppSettings.Monitoring.BuildServer == BuildServer.TeamCity ? new TeamCityBuildService(TeamCityAccess, AppSettings.TeamCity.BuildConfigurationIDs) : throw new ArgumentOutOfRangeException(nameof(AppSettings.Monitoring.BuildServer)); Blink1Factory = new Blink1Factory(fadeInsteadOfBlink); Blink1NotificationService = new Blink1NotificationService(log); BuildStatusMonitor = new BuildStatusMonitor(Blink1Factory, BuildService, Blink1NotificationService, log); }
public async Task NoBuildsStored_OneInProgressNewReturned_OneInProgressUpdate() { IList <Build> builds = new List <Build> { new Build { BuildDefinitionId = "1", Status = BuildStatus.InProgress, Id = "1234", LastChangedDate = DateTime.Now } }; SubscribedBuild subscribedBuild = new SubscribedBuild { BuildDefinitionId = "1", Name = "First Definition", AccountDetails = CreateAccountDetails() }; IBuildService buildService = InitializeBuildService(builds); IList <BuildUpdate> updates = await buildService.CheckForUpdatedBuilds(new List <SubscribedBuild> { subscribedBuild }); Assert.AreEqual(1, updates.Count); Assert.AreEqual(BuildStatus.InProgress, updates.First().Status); Assert.IsNull(updates.First().Result); Assert.AreEqual("First Definition", updates.First().Name); Assert.AreEqual(BuildStatus.InProgress, subscribedBuild.CurrentBuildStatus); Assert.AreEqual(null, subscribedBuild.LastCompletedBuildResult); Assert.AreEqual("1234", subscribedBuild.CurrentBuildId); }
private static MakeStatus Make(string platformName, string outputPackageName) { //Get Platform enum Platforms platform = Platforms.Unknow; Enum.TryParse(platformName, true, out platform); switch (platform) { case Platforms.Android: _buildService = new AndroidBuildService(); break; case Platforms.WindowsPhone: _buildService = new WindowsPhoneBuildService(); break; case Platforms.BlackBerry: _buildService = new BlackBerryBuildService(); break; case Platforms.Browser: break; case Platforms.Windows: break; case Platforms.Unknow: return(new MakeStatus(Platforms.Unknow)); } return(_buildService.Build(outputPackageName)); }
public BuildModifiedProjectsOnlyService(IBuildService buildService, IProjectService projectService) { projectService.CurrentSolutionChanged += OnSolutionChanged; buildService.BuildFinished += BuildService_BuildFinished; FileUtility.FileSaved += OnFileSaved; }
public ApplicationsController(IApplicationService applicationService, IGroupRelationshipService groupRelationshipService, IStorageService storageService, IBuildService buildService, IUserService userService) { this.applicationService = applicationService; this.groupRelationshipService = groupRelationshipService; this.storageService = storageService; this.buildService = buildService; this.userService = userService; }
public MainViewModel(IBuildService buildService, IMessenger messenger) { _buildService = buildService; CloseCommand = new RelayCommand <CancelEventArgs>(Close); ManageBuildsCommand = new RelayCommand(ManageBuilds); BuildsMenuItemCommand = new RelayCommand(BuildsMenuItem); ExitMenuItemCommand = new RelayCommand(ExitMenuItem); StatusFilterOptions = new List <string> { Constants.FilterByResult, Constants.FilterByStatus }; SelectedFilterOption = StatusFilterOptions.First(); _filterPropertyName = Constants.BuildResultPropertyName; SubscribedBuilds = new ObservableCollection <SubscribedBuild>(_buildService.GetSubscribedBuilds()); messenger.Register <SubscribedBuildsUpdate>(this, update => { SubscribedBuilds = new ObservableCollection <SubscribedBuild>(((SubscribedBuildsUpdate)update).SubscribedBuilds); GroupedSubscribedBuilds = new ListCollectionView(SubscribedBuilds); GroupedSubscribedBuilds.GroupDescriptions.Add(new PropertyGroupDescription(_filterPropertyName)); _icon.Icon = GetIconForBuilds(); }); GroupedSubscribedBuilds = new ListCollectionView(SubscribedBuilds); GroupedSubscribedBuilds.GroupDescriptions.Add(new PropertyGroupDescription(_filterPropertyName)); _icon = new TaskbarIcon { Name = "NotifyIcon", Icon = GetIconForBuilds(), ToolTip = "Build Notifications", MenuActivation = PopupActivationMode.RightClick, ContextMenu = new ContextMenu { Items = { new MenuItem { Header = "Builds...", Command = BuildsMenuItemCommand }, new MenuItem { Header = "Exit", Command = ExitMenuItemCommand } }, Placement = PlacementMode.AbsolutePoint, HorizontalOffset = 0, VerticalOffset = 0 }, DoubleClickCommand = BuildsMenuItemCommand, ToolTipText = "Build Notifications" }; InitTimer(); }
public ProjectsController(UserManager <ApplicationUser> userManager, ApplicationDbContext context, StorageSetting storageSetting, IBuildService buildService) { _userManager = userManager; _context = context; _storageSetting = storageSetting; _buildService = buildService; }
public CreateModel(IReportService reportService, IHttpContextAccessor httpContextAccessor, IBuildService buildService) { this.reportService = reportService; this.httpContextAccessor = httpContextAccessor; this.buildService = buildService; // To Do: Check for false id (TryParse) BuildId = Guid.Parse(httpContextAccessor.HttpContext.Request.Query["id"].ToString()); }
public ProjectsController(IProjectService projectService, IBuildOperationsService builder, IEnvironmentVariablesService envService, IBuildService buildService) { _builder = builder; _envService = envService; _projectService = projectService; _buildService = buildService; }
public TestExecutionManager() { this.buildService = SD.BuildService; this.taskService = new UnitTestTaskService(); this.saveAllFilesCommand = new UnitTestSaveAllFilesCommand(); this.testService = SD.GetRequiredService<ITestService>(); this.workbench = SD.Workbench; this.statusBarService = SD.StatusBar; this.mainThread = SD.MainThread; this.buildOptions = new UnitTestBuildOptions(); }
public FileService(IApplicationService applicationService, IBuildService buildService, IGroupService groupService, IGroupRelationshipService groupRelationshipService) { this.applicationService = applicationService; this.BuildService = buildService; this.groupRelationshipService = groupRelationshipService; this.groupService = groupService; var rootDir = ""; applicationDirectoires = Directory.GetDirectories(rootDir).Select(b => b.ToLower()).ToList(); }
public MainViewModel(IBuildService buildService, IMessenger messenger) { _buildService = buildService; CloseCommand = new RelayCommand<CancelEventArgs>(Close); ManageBuildsCommand = new RelayCommand(ManageBuilds); BuildsMenuItemCommand = new RelayCommand(BuildsMenuItem); ExitMenuItemCommand = new RelayCommand(ExitMenuItem); StatusFilterOptions = new List<string> { Constants.FilterByResult, Constants.FilterByStatus }; SelectedFilterOption = StatusFilterOptions.First(); _filterPropertyName = Constants.BuildResultPropertyName; SubscribedBuilds = new ObservableCollection<SubscribedBuild>(_buildService.GetSubscribedBuilds()); messenger.Register<SubscribedBuildsUpdate>(this, update => { SubscribedBuilds = new ObservableCollection<SubscribedBuild>(((SubscribedBuildsUpdate)update).SubscribedBuilds); GroupedSubscribedBuilds = new ListCollectionView(SubscribedBuilds); GroupedSubscribedBuilds.GroupDescriptions.Add(new PropertyGroupDescription(_filterPropertyName)); _icon.Icon = GetIconForBuilds(); }); GroupedSubscribedBuilds = new ListCollectionView(SubscribedBuilds); GroupedSubscribedBuilds.GroupDescriptions.Add(new PropertyGroupDescription(_filterPropertyName)); _icon = new TaskbarIcon { Name = "NotifyIcon", Icon = GetIconForBuilds(), ToolTip = "Build Notifications", MenuActivation = PopupActivationMode.RightClick, ContextMenu = new ContextMenu { Items = { new MenuItem { Header = "Builds...", Command = BuildsMenuItemCommand }, new MenuItem { Header = "Exit", Command = ExitMenuItemCommand } }, Placement = PlacementMode.AbsolutePoint, HorizontalOffset = 0, VerticalOffset = 0 }, DoubleClickCommand = BuildsMenuItemCommand, ToolTipText = "Build Notifications" }; InitTimer(); }
public TestExecutionManager() { this.buildService = SD.BuildService; this.taskService = new UnitTestTaskService(); this.saveAllFilesCommand = new UnitTestSaveAllFilesCommand(); this.testService = SD.GetRequiredService <ITestService>(); this.workbench = SD.Workbench; this.statusBarService = SD.StatusBar; this.mainThread = SD.MainThread; this.buildOptions = new UnitTestBuildOptions(); }
public BuildsController( ILogger <BuildsController> logger, IHostingEnvironment environment, IBuildService buildService, ISlackClient slackClient) { _logger = logger; _environment = environment; _buildService = buildService; _slackClient = slackClient; }
public BuildStatusMonitor( IBlink1Factory blink1Factory, IBuildService buildService, IBlink1NotificationService blink1NotificationService, ILog log) { _blink1Factory = blink1Factory; _buildService = buildService; _blink1NotificationService = blink1NotificationService; _log = log; }
public DetailsModel(IReportService reportService, IHttpContextAccessor httpContextAccessor, IBuildService buildService, IProductService productService) { this.reportService = reportService; this.buildService = buildService; this.httpContextAccessor = httpContextAccessor; this.productService = productService; CurrentBuildId = Guid.Parse(httpContextAccessor.HttpContext.Request.Query["id"].ToString()); }
public DetailsModel(IReportService reportService, ICommentService commentService, IHttpContextAccessor httpContextAccessor, IBuildService buildService, IProductService productService) { this.reportService = reportService; this.commentService = commentService; this.httpContextAccessor = httpContextAccessor; this.buildService = buildService; this.productService = productService; }
public CreateNuGetPackageCommand( ISolutionExplorer solutionExplorer, IDialogService dialogService, IVsPackageInstaller packageInstaller, IVsPackageInstallerServices packageInstallerServices, IBuildService msBuildService) : base(Commands.CreateNuGetPackageCommandId) { this.solutionExplorer = solutionExplorer; this.dialogService = dialogService; this.packageInstaller = packageInstaller; this.packageInstallerServices = packageInstallerServices; this.buildService = msBuildService; }
public FileService(IApplicationService applicationService, IBuildService buildService, IGroupService groupService, IGroupRelationshipService groupRelationshipService) { this.applicationService = applicationService; this.BuildService = buildService; this.groupRelationshipService = groupRelationshipService; this.groupService = groupService; //var rootDir = HostingEnvironment.MapPath("http://jenkins.weeworld.local/"); //var rootDir = HostingEnvironment.MapPath("\\builds\\"); var rootDir = ""; applicationDirectoires = Directory.GetDirectories(rootDir).Select(b => b.ToLower()).ToList(); }
public override void Check() { lock (this) { _currentBuild = null; var proj = Context.Project.SelectedProject; _currentBuild = BuildServiceFactory.Create(proj.Provider, Context.WebFactory, Context.WebUtility, Context.Garbage); var config = Context.ConfigurationService.GetBuildParams(proj.Slug); var state = _currentBuild.StartBuild(config); ProcessBuildState(state, proj.Title); } }
/// <summary> /// Constructor. /// </summary> public ProjectController( BaseControllerArgs args, IClassroomService classroomService, ISectionService sectionService, IProjectService projectService, IBuildService buildService, IJsonSerializer jsonSerializer, WebAppHost webAppHost) : base(args, classroomService) { SectionService = sectionService; ProjectService = projectService; BuildService = buildService; _jsonSerializer = jsonSerializer; _webAppHost = webAppHost; }
public ImageEditorViewModel(IUndoService undoService, IBuildService buildService, IPixelEventService pixelEventService) { this.UndoService = undoService; this.BuildService = buildService; this.PixelEventService = pixelEventService; // *** // *** // *** this.BuildService.BuildEvent += this.BuildService_BuildEvent; // *** // *** Group these property so that only one of them // *** can be true at any given time. // *** this.Group = new BooleanPropertyGroup ( (nameof(this.DrawIsChecked), (b) => { this.DrawIsChecked = b; }), (nameof(this.SandIsChecked), (b) => { this.SandIsChecked = b; }), (nameof(this.EraseIsChecked), (b) => { this.EraseIsChecked = b; }), (nameof(this.EraseColorIsChecked), (b) => { this.EraseColorIsChecked = b; }), (nameof(this.PickColorIsChecked), (b) => { this.PickColorIsChecked = b; }) ); // *** // *** Wire up events for when the user interacts with the LED Matrix. // *** this.PixelEventService.PixelSelected += this.PixelMatrix_PixelSelected; // *** // *** Wire up the event to capture changes to the ColorMatrix. // *** this.ColorMatrix.PixelChanged += this.ColorMatrix_PixelChanged; this.ColorMatrix.BackgroundChanged += this.ColorMatrix_BackgroundChanged; this.LoadCommand = new DelegateCommand(this.OnLoadCommand, this.OnEnableLoadCommand); this.SaveCommand = new DelegateCommand(this.OnSaveCommand, this.OnEnableSaveCommand); this.ClearCommand = new DelegateCommand(this.OnClearCommand, this.OnEnableClearCommand); this.RotateClockwiseCommand = new DelegateCommand(this.OnRotateClockwiseCommand, this.OnEnableRotateClockwiseCommand); this.RotateCounterClockwiseCommand = new DelegateCommand(this.OnRotateCounterClockwiseCommand, this.OnEnableRotateCounterClockwiseCommand); this.FlipHorizontalCommand = new DelegateCommand(this.OnFlipHorizontalCommand, this.OnEnableFlipHorizontalCommand); this.FlipVerticalCommand = new DelegateCommand(this.OnFlipVerticalCommand, this.OnEnableFlipVerticalCommand); this.BuildCommand = new DelegateCommand(this.OnBuildCommand, this.OnEnableBuildCommand); this.RedoCommand = new DelegateCommand(this.OnRedoCommand, this.OnEnableRedoCommand); this.UndoCommand = new DelegateCommand(this.OnUndoCommand, this.OnEnableUndoCommand); this.CloseOutputCommand = new DelegateCommand(this.OnCloseOutputCommand, this.OnEnableCloseOutputCommand); }
/// <summary> /// Constructor. /// </summary> public BuildController( BaseControllerArgs args, IClassroomService classroomService, ISectionService sectionService, IProjectService projectService, IBuildService buildService, ICheckpointService checkpointService, ISubmissionService submissionService, IJsonSerializer jsonSerializer) : base(args, classroomService, projectService) { SectionService = sectionService; BuildService = buildService; CheckpointService = checkpointService; SubmissionService = submissionService; _jsonSerializer = jsonSerializer; }
//private readonly IProjectService _projectService; //private readonly IBuildService _buildService; public LoginController( Configuration configuration, IPortalService portalService, IAcrService acrService, IDockerService dockerService, IHelmService helmService, IAksService aksService, IProjectService projectService, IBuildService buildService) { Configuration = configuration; _portalService = portalService; _acrService = acrService; _dockerService = dockerService; _helmService = helmService; _aksService = aksService; //_projectService = projectService; //_buildService = buildService; }
public void Build(int sourceControlVersionId, int projectVersionId, Action <int> projectBuildStarted, Action <int, bool> projectBuildComplete) { AspNetDeployEntities entities = new AspNetDeployEntities(); SourceControlVersion sourceControlVersion = entities.SourceControlVersion.Include("SourceControl").First(scv => scv.Id == sourceControlVersionId); ProjectVersion projectVersion = entities.ProjectVersion.Include("Properties").First(pv => pv.Id == projectVersionId); string sourcesFolder = this.pathServices.GetSourceControlVersionPath(sourceControlVersion.SourceControl.Id, sourceControlVersion.Id); IBuildService buildService = buildServiceFactory.Create(projectVersion.ProjectType); BuildSolutionResult buildSolutionResult = buildService.Build( sourcesFolder, projectVersion, projectFileName => { ProjectVersion projectVersionBuild = entities.ProjectVersion .Where(p => p.SourceControlVersionId == sourceControlVersionId) .ToList() .FirstOrDefault(p => !p.IsDeleted && Path.Combine(sourcesFolder, p.ProjectFile).ToLowerInvariant() == projectFileName.ToLowerInvariant()); if (projectVersionBuild != null) { projectBuildStarted(projectVersionBuild.Id); } }, (projectFileName, success, message) => { ProjectVersion projectVersionBuild = entities.ProjectVersion .Where(p => p.SourceControlVersionId == sourceControlVersionId) .ToList() .FirstOrDefault(p => !p.IsDeleted && Path.Combine(sourcesFolder, p.ProjectFile).ToLowerInvariant() == projectFileName.ToLowerInvariant()); if (projectVersionBuild != null) { projectBuildComplete(projectVersionBuild.Id, success); } }, (projectFile, exception) => { this.loggingService.Log(new AspNetDeployException("Project build failed: " + projectFile, exception), null); }); }
public async Task NoBuildsStored_NoBuildsReturned_NoUpdate() { IList <Build> builds = new List <Build>(); SubscribedBuild subscribedBuild = new SubscribedBuild { BuildDefinitionId = "1", AccountDetails = CreateAccountDetails() }; IBuildService buildService = InitializeBuildService(builds); IList <BuildUpdate> updates = await buildService.CheckForUpdatedBuilds(new List <SubscribedBuild> { subscribedBuild }); Assert.AreEqual(0, updates.Count); Assert.AreEqual(null, subscribedBuild.CurrentBuildStatus); Assert.AreEqual(null, subscribedBuild.LastCompletedBuildResult); Assert.AreEqual(null, subscribedBuild.CurrentBuildId); }
public ProjectService(IdeContext context, IMapper mapper, FileService fileService, UserService userService, INotificationService notificationService, ILogger <ProjectService> logger, IQueueService queueService, IEditorSettingService editorSettingService, IBuildService buildService) { _context = context; _mapper = mapper; _fileService = fileService; _notificationService = notificationService; _logger = logger; _editorSettingService = editorSettingService; _userService = userService; _queueService = queueService; _buildService = buildService; }
public static Task <string> CreateHeaderFile(this IMatrixProject project, IBuildService buildService) { StringBuilder returnValue = new StringBuilder(); // *** // *** Generate the image definition. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating image code."); string imageCode = project.CreateImageCode(); // *** // *** Generate the mask definition. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating mask code."); string maskCode = project.CreateMaskCode(); // *** // *** Generate the sand grain definition. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating grain code."); (bool result, string grainCode) = project.CreateGrainCode(); if (!result) { buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Warning, "No sand grains have been defined."); } buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating header file code."); // *** // *** Generate the header file (.h) // *** returnValue.AppendLine(grainCode); returnValue.AppendLine(); returnValue.AppendLine(imageCode); returnValue.AppendLine(); returnValue.AppendLine(maskCode); return(Task.FromResult(returnValue.ToString())); }
public BuildInformationProvider( [Import(typeof(IBuildOutputLogger))] IBuildOutputLogger buildOutputLogger, [Import(typeof(IStatusBarNotificationService))] IStatusBarNotificationService statusBarNotificationService, [Import(typeof(IBuildMessagesFactory))] IBuildMessagesFactory buildMessagesFactory, [Import(typeof(IWindowStateService))] IWindowStateService windowStateService, [Import(typeof(IPackageSettingsProvider))] IPackageSettingsProvider packageSettingsProvider, [Import(typeof(IErrorNavigationService))] IErrorNavigationService errorNavigationService, [Import(typeof(ISolutionProvider))] ISolutionProvider solutionProvider, [Import(typeof(IBuildService))] IBuildService buildService, [Import(typeof(ITaskBarInfoService))] ITaskBarInfoService taskBarInfoService) { _packageSettingsProvider = packageSettingsProvider; _errorNavigationService = errorNavigationService; _buildOutputLogger = buildOutputLogger; _statusBarNotificationService = statusBarNotificationService; _buildMessagesFactory = buildMessagesFactory; _windowStateService = windowStateService; _solutionProvider = solutionProvider; _buildService = buildService; _taskBarInfoService = taskBarInfoService; _buildOutputLogger.OnErrorRaised += BuildOutputLogger_OnErrorRaised; }
public ManageBuildsViewModel(IAccountService accountService, IMessenger messenger, IBuildService buildService) { _accountService = accountService; _messenger = messenger; _buildService = buildService; Accounts = _accountService.GetAccounts(); _messenger.Register<AccountsUpdate>(this, update => { Accounts = _accountService.GetAccounts(); }); CloseDialogCommand = new RelayCommand(CloseDialog); UpdateAccountsCommand = new RelayCommand(UpdateAccounts); EditAccountCommand = new RelayCommand<Account>(EditAccount); RemoveAccountCommand = new RelayCommand<Account>(RemoveAccount); RefreshAccountCommand = new RelayCommand<Account>(RefreshAccount); AddAccountCommand = new RelayCommand(AddAccount); IsUpdateEnabled = true; NotifyOnStart = _buildService.GetNotifyOnStart(); NotifyOnFinish = _buildService.GetNotifyOnFinish(); }
public ManageBuildsViewModel(IAccountService accountService, IMessenger messenger, IBuildService buildService) { _accountService = accountService; _messenger = messenger; _buildService = buildService; Accounts = _accountService.GetAccounts(); _messenger.Register <AccountsUpdate>(this, update => { Accounts = _accountService.GetAccounts(); }); CloseDialogCommand = new RelayCommand(CloseDialog); UpdateAccountsCommand = new RelayCommand(UpdateAccounts); EditAccountCommand = new RelayCommand <Account>(EditAccount); RemoveAccountCommand = new RelayCommand <Account>(RemoveAccount); RefreshAccountCommand = new RelayCommand <Account>(RefreshAccount); AddAccountCommand = new RelayCommand(AddAccount); IsUpdateEnabled = true; NotifyOnStart = _buildService.GetNotifyOnStart(); NotifyOnFinish = _buildService.GetNotifyOnFinish(); }
private void ProcessBuildState(BuildState state, string proj) { switch (state.Status) { case BuildStatus.Queued: Context.CharDisplay.Write("*** Queued", proj); Context.Indicator.LightRunning(); break; case BuildStatus.Running: Context.CharDisplay.Write("*** Building", proj); Context.Indicator.LightRunning(); break; case BuildStatus.Succeeded: Context.ChangeState(new SuccessState(Context)); break; case BuildStatus.Failed: Context.ChangeState(new FailureState(Context)); _currentBuild = null; break; } }
public BuildController(IBuildService service) { this._service = service; }
public BuildTypeService(ITeamCityService teamCityService, IBuildService buildService) { _teamCityService = teamCityService; _buildService = buildService; }
public BuildsApiController(IBuildService buildService) { this.buildService = buildService; }