Example #1
0
        public IActionResult EventNotify([FromBody] EventNotifyInput input)
        {
            Request.Headers.TryGetValue("X-Gitlab-Token", out var token);
            Request.Headers.TryGetValue("X-Gitlab-Event", out var @event);
            _logger.LogDebug($"token={token} event={@event}");
            var msg         = "";
            var deployTasks = DeployTask.GetDeployTasks();

            if (deployTasks == null || !deployTasks.Any())
            {
                msg = "没有配置DeployTask";
                _logger.LogDebug(msg);
                return(BadRequest(msg));
            }
            else
            {
                var name = input?.project?.name;
                if (string.IsNullOrEmpty(name))
                {
                    return(BadRequest("参数中缺少工程名称"));
                }
                else
                {
                    var activeDeployTasks =
                        deployTasks
                        .Where(item => item.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
                        .ToList();
                    if (!activeDeployTasks.Any())
                    {
                        msg = $"没有与{name}对应的有效DeployTask";
                        _logger.LogDebug(msg);
                        return(BadRequest(msg));
                    }
                    else
                    {
                        foreach (var deployTask in activeDeployTasks)
                        {
                            Task.Run(() =>
                            {
                                deployTask.Ensure();
                                deployTask.Execute(_logger, input).ConfigureAwait(false);
                            });
                        }
                    }
                }
            }
            return(Ok());
        }