diff options
Diffstat (limited to 'app/graphql/resolvers/ci')
-rw-r--r-- | app/graphql/resolvers/ci/config_resolver.rb | 8 | ||||
-rw-r--r-- | app/graphql/resolvers/ci/job_token_scope_resolver.rb | 21 | ||||
-rw-r--r-- | app/graphql/resolvers/ci/runners_resolver.rb | 16 | ||||
-rw-r--r-- | app/graphql/resolvers/ci/template_resolver.rb | 2 |
4 files changed, 39 insertions, 8 deletions
diff --git a/app/graphql/resolvers/ci/config_resolver.rb b/app/graphql/resolvers/ci/config_resolver.rb index 252c9d3acf0..f2e33251b9c 100644 --- a/app/graphql/resolvers/ci/config_resolver.rb +++ b/app/graphql/resolvers/ci/config_resolver.rb @@ -18,6 +18,10 @@ module Resolvers required: true, description: 'The project of the CI config.' + argument :sha, GraphQL::STRING_TYPE, + required: false, + description: "Sha for the pipeline." + argument :content, GraphQL::STRING_TYPE, required: true, description: "Contents of `.gitlab-ci.yml`." @@ -26,11 +30,11 @@ module Resolvers required: false, description: 'Run pipeline creation simulation, or only do static check.' - def resolve(project_path:, content:, dry_run: false) + def resolve(project_path:, content:, sha: nil, dry_run: false) project = authorized_find!(project_path: project_path) result = ::Gitlab::Ci::Lint - .new(project: project, current_user: context[:current_user]) + .new(project: project, current_user: context[:current_user], sha: sha) .validate(content, dry_run: dry_run) response(result).merge(merged_yaml: result.merged_yaml) diff --git a/app/graphql/resolvers/ci/job_token_scope_resolver.rb b/app/graphql/resolvers/ci/job_token_scope_resolver.rb new file mode 100644 index 00000000000..ca76a7b94fc --- /dev/null +++ b/app/graphql/resolvers/ci/job_token_scope_resolver.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Resolvers + module Ci + class JobTokenScopeResolver < BaseResolver + include Gitlab::Graphql::Authorize::AuthorizeResource + + authorize :admin_project + description 'Container for resources that can be accessed by a CI job token from the current project. Null if job token scope setting is disabled.' + type ::Types::Ci::JobTokenScopeType, null: true + + def resolve + authorize!(object) + + return unless object.ci_job_token_scope_enabled? + + ::Ci::JobToken::Scope.new(object) + end + end + end +end diff --git a/app/graphql/resolvers/ci/runners_resolver.rb b/app/graphql/resolvers/ci/runners_resolver.rb index 3ad1e2780dd..5074a248e18 100644 --- a/app/graphql/resolvers/ci/runners_resolver.rb +++ b/app/graphql/resolvers/ci/runners_resolver.rb @@ -3,6 +3,8 @@ module Resolvers module Ci class RunnersResolver < BaseResolver + include LooksAhead + type Types::Ci::RunnerType.connection_type, null: true argument :status, ::Types::Ci::RunnerStatusEnum, @@ -25,10 +27,11 @@ module Resolvers required: false, description: 'Sort order of results.' - def resolve(**args) - ::Ci::RunnersFinder - .new(current_user: current_user, params: runners_finder_params(args)) - .execute + def resolve_with_lookahead(**args) + apply_lookahead( + ::Ci::RunnersFinder + .new(current_user: current_user, params: runners_finder_params(args)) + .execute) end private @@ -39,7 +42,10 @@ module Resolvers type_type: params[:type], tag_name: params[:tag_list], search: params[:search], - sort: params[:sort]&.to_s + sort: params[:sort]&.to_s, + preload: { + tag_name: node_selection&.selects?(:tag_list) + } }.compact end end diff --git a/app/graphql/resolvers/ci/template_resolver.rb b/app/graphql/resolvers/ci/template_resolver.rb index dd910116544..7f5a1a486d7 100644 --- a/app/graphql/resolvers/ci/template_resolver.rb +++ b/app/graphql/resolvers/ci/template_resolver.rb @@ -6,7 +6,7 @@ module Resolvers type Types::Ci::TemplateType, null: true argument :name, GraphQL::STRING_TYPE, required: true, - description: 'Name of the CI/CD template to search for.' + description: 'Name of the CI/CD template to search for. Template must be formatted as `Name.gitlab-ci.yml`.' alias_method :project, :object |