示例#1
0
        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));
        }
示例#2
0
        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);
        }