diff --git a/src/GitLabApiClient/GitLabApiClient.csproj b/src/GitLabApiClient/GitLabApiClient.csproj index 374b1209..ae3b6e98 100644 --- a/src/GitLabApiClient/GitLabApiClient.csproj +++ b/src/GitLabApiClient/GitLabApiClient.csproj @@ -19,7 +19,7 @@ - true + true true diff --git a/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs b/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs index 309d178d..e9d9d549 100644 --- a/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs +++ b/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs @@ -62,6 +62,11 @@ protected override void BuildCore(Query query, PipelineQueryOptions options) { query.Add("username", options.TriggeredBy); } + + if (options.Source.HasValue) + { + query.Add("source", options.Source.ToLowerCaseString()); + } } #endregion diff --git a/src/GitLabApiClient/Models/Job/Responses/Job.cs b/src/GitLabApiClient/Models/Job/Responses/Job.cs index db7dbd77..c190c87c 100644 --- a/src/GitLabApiClient/Models/Job/Responses/Job.cs +++ b/src/GitLabApiClient/Models/Job/Responses/Job.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using GitLabApiClient.Models.Commits.Responses; using GitLabApiClient.Models.Pipelines.Responses; using GitLabApiClient.Models.Runners.Responses; @@ -28,7 +29,7 @@ public sealed class Job public DateTime? FinishedAt { get; set; } [JsonProperty("id")] - public int Id { get; set; } + public string Id { get; set; } [JsonProperty("name")] public string Name { get; set; } @@ -56,5 +57,8 @@ public sealed class Job [JsonProperty("web_url")] public string WebUrl { get; set; } + + [JsonProperty("tag_list")] + public IList TagList { get; set; } } } diff --git a/src/GitLabApiClient/Models/Pipelines/PipelineSource.cs b/src/GitLabApiClient/Models/Pipelines/PipelineSource.cs new file mode 100644 index 00000000..36d876ee --- /dev/null +++ b/src/GitLabApiClient/Models/Pipelines/PipelineSource.cs @@ -0,0 +1,36 @@ +using System.Runtime.Serialization; + +namespace GitLabApiClient.Models.Pipelines +{ + public enum PipelineSource + { + [EnumMember(Value = "push")] + Push, + [EnumMember(Value = "web")] + Web, + [EnumMember(Value = "trigger")] + Trigger, + [EnumMember(Value = "schedule")] + Schedule, + [EnumMember(Value = "api")] + Api, + [EnumMember(Value = "external")] + External, + [EnumMember(Value = "pipeline")] + Pipeline, + [EnumMember(Value = "chat")] + Chat, + [EnumMember(Value = "webide")] + Webide, + [EnumMember(Value = "merge_request_event")] + MergeRequestEvent, + [EnumMember(Value = "external_pull_request_event")] + ExternalPullRequestEvent, + [EnumMember(Value = "parent_pipeline")] + ParentPipeline, + [EnumMember(Value = "ondemand_dast_scan")] + OndemandDastScan, + [EnumMember(Value = "ondemand_dast_validation")] + OndemandDastValidation + } +} diff --git a/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs b/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs index 15e71ae8..1d2a6e9b 100644 --- a/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs +++ b/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs @@ -55,5 +55,10 @@ internal PipelineQueryOptions() { } /// The username of the user who triggered pipelines /// public string TriggeredBy { get; set; } + + /// + /// How the pipeline was triggered + /// + public PipelineSource? Source { get; set; } } } diff --git a/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs b/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs index f759c42f..d039a709 100644 --- a/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs +++ b/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs @@ -52,5 +52,8 @@ public class PipelineDetail [JsonProperty("coverage")] public string Coverage { get; set; } + + [JsonProperty("source")] + public PipelineSource? Source { get; set; } } } diff --git a/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs b/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs index 2cf8a168..d7e3e557 100644 --- a/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs +++ b/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs @@ -24,7 +24,8 @@ public void NonDefaultQueryBuilt() Status = PipelineStatus.Failed, Scope = PipelineScope.Pending, Order = PipelineOrder.UserId, - SortOrder = SortOrder.Ascending + SortOrder = SortOrder.Ascending, + Source = PipelineSource.MergeRequestEvent }); query.Should().Be("https://https://gitlab.com/api/v4/pipelines?" + @@ -34,7 +35,9 @@ public void NonDefaultQueryBuilt() "&status=failed" + "&scope=pending" + "&order_by=user_id" + - "&sort=asc"); + "&sort=asc" + + "&source=merge_request_event" + ); } } }