summaryrefslogtreecommitdiff
path: root/scripts/api
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-03-31 09:08:43 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-03-31 09:08:43 +0000
commiteb239d31bf02b9a199d6f2ce087c9a0113797df3 (patch)
treeaed942923f276e4694b4d730bd22ed13cd45c1dc /scripts/api
parente4805b324cb9e620788bb2d625f633f2be20091d (diff)
downloadgitlab-ce-eb239d31bf02b9a199d6f2ce087c9a0113797df3.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'scripts/api')
-rw-r--r--scripts/api/create_merge_request_discussion.rb33
-rw-r--r--scripts/api/get_package_and_test_job.rb39
2 files changed, 72 insertions, 0 deletions
diff --git a/scripts/api/create_merge_request_discussion.rb b/scripts/api/create_merge_request_discussion.rb
new file mode 100644
index 00000000000..2b380d2e216
--- /dev/null
+++ b/scripts/api/create_merge_request_discussion.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+require 'gitlab'
+require_relative 'default_options'
+
+class CreateMergeRequestDiscussion
+ def initialize(options)
+ @merge_request = options.fetch(:merge_request)
+ @project = options.fetch(:project)
+
+ # If api_token is nil, it's set to '' to allow unauthenticated requests (for forks).
+ api_token = options.fetch(:api_token, '')
+
+ warn "No API token given." if api_token.empty?
+
+ @client = Gitlab.client(
+ endpoint: options.fetch(:endpoint, API::DEFAULT_OPTIONS[:endpoint]),
+ private_token: api_token
+ )
+ end
+
+ def execute(content)
+ client.create_merge_request_discussion(
+ project,
+ merge_request.fetch('iid'),
+ body: content
+ )
+ end
+
+ private
+
+ attr_reader :merge_request, :client, :project
+end
diff --git a/scripts/api/get_package_and_test_job.rb b/scripts/api/get_package_and_test_job.rb
new file mode 100644
index 00000000000..dbc29f754d0
--- /dev/null
+++ b/scripts/api/get_package_and_test_job.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+require 'gitlab'
+
+require_relative 'default_options'
+
+class GetPackageAndTestJob
+ def initialize(options)
+ @project = options.fetch(:project)
+ @pipeline_id = options.fetch(:pipeline_id)
+
+ # If api_token is nil, it's set to '' to allow unauthenticated requests (for forks).
+ api_token = options.fetch(:api_token, '')
+
+ warn "No API token given." if api_token.empty?
+
+ @client = Gitlab.client(
+ endpoint: options.fetch(:endpoint) || API::DEFAULT_OPTIONS[:endpoint],
+ private_token: api_token
+ )
+ end
+
+ def execute
+ package_and_test_job = nil
+
+ client.pipeline_bridges(project, pipeline_id, scope: 'failed', per_page: 100).auto_paginate do |job|
+ if job['name'].include?('package-and-test')
+ package_and_test_job = job
+ break
+ end
+ end
+
+ package_and_test_job
+ end
+
+ private
+
+ attr_reader :project, :pipeline_id, :exclude_allowed_to_fail_jobs, :client
+end