protected override async Task <bool> ExecuteCore() { var propertiesDict = new Dictionary <string, string>(); if (Properties != null) { foreach (string prop in Properties) { int idx = prop.IndexOf("="); if (idx == -1) { Log.LogError($"The property '{prop}' is in an invalid format."); return(false); } string key = prop.Substring(0, idx).Trim(); string value = prop.Substring(idx + 1).Trim(); propertiesDict.Add(key, value); } } var info = new JobInfo { Source = Source, Type = Type, Build = Build, QueueId = QueueId, Properties = propertiesDict, Attempt = Attempt, InitialWorkItemCount = 1, }; Log.LogMessage(MessageImportance.Normal, $"Created JobInfo: '{JsonConvert.SerializeObject(info, Constants.SerializerSettings)}'"); Log.LogMessage(MessageImportance.Normal, "Sending Job Start to Helix Api"); string token = await HelixApi.Telemetry.StartJobAsync(info); Log.LogMessage(MessageImportance.Normal, "Sending Build Start to Helix Api"); string workItemId = await HelixApi.Telemetry.StartBuildWorkItemAsync(token, BuildUri); Log.LogMessage(MessageImportance.Normal, "Saving information to config file"); var config = new HelixConfig { JobToken = token, WorkItemId = workItemId, }; return(SetHelixConfig(config)); }
protected bool SetHelixConfig(HelixConfig config) { var dir = Path.GetDirectoryName(ConfigFile); if (string.IsNullOrEmpty(dir)) { Log.LogError($"Path '{ConfigFile}' doesn't exist in a directory"); return(false); } if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(ConfigFile, JsonConvert.SerializeObject(config, Constants.SerializerSettings)); return(true); }