Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/helpers')
-rw-r--r--lib/api/helpers/issues_helpers.rb2
-rw-r--r--lib/api/helpers/notes_helpers.rb2
-rw-r--r--lib/api/helpers/projects_helpers.rb2
-rw-r--r--lib/api/helpers/runner.rb32
-rw-r--r--lib/api/helpers/services_helpers.rb12
5 files changed, 36 insertions, 14 deletions
diff --git a/lib/api/helpers/issues_helpers.rb b/lib/api/helpers/issues_helpers.rb
index e272b13f3ae..638b31cc7ba 100644
--- a/lib/api/helpers/issues_helpers.rb
+++ b/lib/api/helpers/issues_helpers.rb
@@ -24,6 +24,8 @@ module API
:discussion_locked,
:due_date,
:labels,
+ :add_labels,
+ :remove_labels,
:milestone_id,
:state_event,
:title
diff --git a/lib/api/helpers/notes_helpers.rb b/lib/api/helpers/notes_helpers.rb
index c85a38fc18b..f88624ed63e 100644
--- a/lib/api/helpers/notes_helpers.rb
+++ b/lib/api/helpers/notes_helpers.rb
@@ -133,7 +133,7 @@ module API
if resolved
parent = noteable_parent(noteable)
- ::Discussions::ResolveService.new(parent, current_user, merge_request: noteable).execute(discussion)
+ ::Discussions::ResolveService.new(parent, current_user, one_or_more_discussions: discussion).execute
else
discussion.unresolve!
end
diff --git a/lib/api/helpers/projects_helpers.rb b/lib/api/helpers/projects_helpers.rb
index 5afdb34da97..8a115d42929 100644
--- a/lib/api/helpers/projects_helpers.rb
+++ b/lib/api/helpers/projects_helpers.rb
@@ -44,6 +44,7 @@ module API
optional :public_builds, type: Boolean, desc: 'Perform public builds'
optional :request_access_enabled, type: Boolean, desc: 'Allow users to request member access'
optional :only_allow_merge_if_pipeline_succeeds, type: Boolean, desc: 'Only allow to merge if builds succeed'
+ optional :allow_merge_on_skipped_pipeline, type: Boolean, desc: 'Allow to merge if pipeline is skipped'
optional :only_allow_merge_if_all_discussions_are_resolved, type: Boolean, desc: 'Only allow to merge if all discussions are resolved'
optional :tag_list, type: Array[String], desc: 'The list of tags for a project'
# TODO: remove rubocop disable - https://gitlab.com/gitlab-org/gitlab/issues/14960
@@ -92,6 +93,7 @@ module API
def self.update_params_at_least_one_of
[
+ :allow_merge_on_skipped_pipeline,
:autoclose_referenced_issues,
:auto_devops_enabled,
:auto_devops_deploy_strategy,
diff --git a/lib/api/helpers/runner.rb b/lib/api/helpers/runner.rb
index 1f1253c8542..293d7ed9a6a 100644
--- a/lib/api/helpers/runner.rb
+++ b/lib/api/helpers/runner.rb
@@ -3,6 +3,8 @@
module API
module Helpers
module Runner
+ include Gitlab::Utils::StrongMemoize
+
prepend_if_ee('EE::API::Helpers::Runner') # rubocop: disable Cop/InjectEnterpriseEditionModule
JOB_TOKEN_HEADER = 'HTTP_JOB_TOKEN'
@@ -16,7 +18,7 @@ module API
forbidden! unless current_runner
current_runner
- .update_cached_info(get_runner_details_from_request)
+ .heartbeat(get_runner_details_from_request)
end
def get_runner_details_from_request
@@ -31,31 +33,35 @@ module API
end
def current_runner
- @runner ||= ::Ci::Runner.find_by_token(params[:token].to_s)
+ strong_memoize(:current_runner) do
+ ::Ci::Runner.find_by_token(params[:token].to_s)
+ end
end
- def validate_job!(job)
- not_found! unless job
+ def authenticate_job!(require_running: true)
+ job = current_job
- yield if block_given?
+ not_found! unless job
+ forbidden! unless job_token_valid?(job)
- project = job.project
- forbidden!('Project has been deleted!') if project.nil? || project.pending_delete?
+ forbidden!('Project has been deleted!') if job.project.nil? || job.project.pending_delete?
forbidden!('Job has been erased!') if job.erased?
- end
- def authenticate_job!
- job = current_job
+ if require_running
+ job_forbidden!(job, 'Job is not running') unless job.running?
+ end
- validate_job!(job) do
- forbidden! unless job_token_valid?(job)
+ if Gitlab::Ci::Features.job_heartbeats_runner?(job.project)
+ job.runner&.heartbeat(get_runner_ip)
end
job
end
def current_job
- @current_job ||= Ci::Build.find_by_id(params[:id])
+ strong_memoize(:current_job) do
+ Ci::Build.find_by_id(params[:id])
+ end
end
def job_token_valid?(job)
diff --git a/lib/api/helpers/services_helpers.rb b/lib/api/helpers/services_helpers.rb
index 02e60ff5db5..3d6039cacaa 100644
--- a/lib/api/helpers/services_helpers.rb
+++ b/lib/api/helpers/services_helpers.rb
@@ -583,6 +583,18 @@ module API
name: :api_url,
type: String,
desc: 'Prometheus API Base URL, like http://prometheus.example.com/'
+ },
+ {
+ required: true,
+ name: :google_iap_audience_client_id,
+ type: String,
+ desc: 'Client ID of the IAP secured resource (looks like IAP_CLIENT_ID.apps.googleusercontent.com)'
+ },
+ {
+ required: true,
+ name: :google_iap_service_account_json,
+ type: String,
+ desc: 'Contents of the credentials.json file of your service account, like: { "type": "service_account", "project_id": ... }'
}
],
'pushover' => [