private async Task <TaskStep> CreateTask(
            string taskType,
            Step step,
            Dictionary <string, object> variables,
            IAppConfiguration configuration)
        {
            var task = new TaskStep(configuration);

            task.TaskType         = taskType;
            task.Name             = GetTaskName(taskType);
            task.Version          = GetTaskVersion(taskType);
            task.DisplayName      = GetValueWithVariableValues(step.DisplayName, variables);
            task.Condition        = step.Condition;
            task.ContinueOnError  = step.ContinueOnError;
            task.Enabled          = step.Enabled;
            task.TimeoutInMinutes = step.TimeoutInMinutes;
            task.Env    = step.Env;
            task.Inputs = GetInputsWithVariableValue(step, variables);

            if (string.IsNullOrEmpty(task.DisplayName))
            {
                task.DisplayName = task.Name;
            }

            task.TaskDefinition = await _taskLocator.GetTaskDefinition(task.Name, task.Version);

            task.TaskTargetFolder = await _taskLocator.DownloadTask(task.TaskDefinition);

            return(task);
        }