From f88abb6970c2b09bc7f0865f279bb5f2ac8c961e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Fri, 13 Oct 2023 15:24:57 +0200
Subject: [PATCH] Types => Add type for Gitlab pipelines

---
 types/Gitlab/GitlabPipeline.ts       | 31 ++++++++++++++++++++++++++++
 types/Gitlab/GitlabPipelineSource.ts | 19 +++++++++++++++++
 types/Gitlab/GitlabPipelineStatus.ts | 16 ++++++++++++++
 3 files changed, 66 insertions(+)
 create mode 100644 types/Gitlab/GitlabPipeline.ts
 create mode 100644 types/Gitlab/GitlabPipelineSource.ts
 create mode 100644 types/Gitlab/GitlabPipelineStatus.ts

diff --git a/types/Gitlab/GitlabPipeline.ts b/types/Gitlab/GitlabPipeline.ts
new file mode 100644
index 0000000..1ee75b6
--- /dev/null
+++ b/types/Gitlab/GitlabPipeline.ts
@@ -0,0 +1,31 @@
+import GitlabPipelineStatus from './GitlabPipelineStatus';
+import GitlabPipelineSource from './GitlabPipelineSource';
+import GitlabUser           from './GitlabUser';
+
+
+interface GitlabPipeline {
+    id: number,
+    iid: number,
+    project_id: number,
+    status: GitlabPipelineStatus,
+    source: GitlabPipelineSource,
+    ref: string,
+    sha: string,
+    before_sha: string,
+    tag: boolean,
+    name: string,
+    yaml_errors: string | null,
+    user: GitlabUser,
+    web_url: string,
+    created_at: string,
+    updated_at: string,
+    started_at: string | null,
+    finished_at: string | null,
+    committed_at: string | null,
+    duration: number | null,
+    queued_duration: number | null,
+    coverage: string | null,
+}
+
+
+export default GitlabPipeline;
\ No newline at end of file
diff --git a/types/Gitlab/GitlabPipelineSource.ts b/types/Gitlab/GitlabPipelineSource.ts
new file mode 100644
index 0000000..33253b0
--- /dev/null
+++ b/types/Gitlab/GitlabPipelineSource.ts
@@ -0,0 +1,19 @@
+enum GitlabPipelineSource {
+    PUSH                      = 'push',
+    WEB                       = 'web',
+    TRIGGER                   = 'trigger',
+    SCHEDULE                  = 'schedule',
+    API                       = 'api',
+    EXTERNAL                  = 'external',
+    PIPELINE                  = 'pipeline',
+    CHAT                      = 'chat',
+    WEBIDE                    = 'webide',
+    MERGE_REQUEST             = 'merge_request_event',
+    EXTERNAL_PULL_REQUEST     = 'external_pull_request_event',
+    PARENT_PIPELINE           = 'parent_pipeline',
+    ON_DEMAND_DAST_SCAN       = 'ondemand_dast_scan',
+    ON_DEMAND_DAST_VALIDATION = 'ondemand_dast_validation',
+}
+
+
+export default GitlabPipelineSource;
diff --git a/types/Gitlab/GitlabPipelineStatus.ts b/types/Gitlab/GitlabPipelineStatus.ts
new file mode 100644
index 0000000..cd6d7b2
--- /dev/null
+++ b/types/Gitlab/GitlabPipelineStatus.ts
@@ -0,0 +1,16 @@
+enum GitlabPipelineStatus {
+    CREATED              = 'created',
+    WAITING_FOR_RESOURCE = 'waiting_for_resource',
+    PREPARING            = 'preparing',
+    PENDING              = 'pending',
+    RUNNING              = 'running',
+    SUCCESS              = 'success',
+    FAILED               = 'failed',
+    CANCELED             = 'canceled',
+    SKIPPED              = 'skipped',
+    MANUAL               = 'manual',
+    SCHEDULED            = 'scheduled'
+}
+
+
+export default GitlabPipelineStatus;
-- 
GitLab