Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
c74b7b5e43
commit
37ae6b54ba
|
|
@ -964,11 +964,11 @@ export default class Notes {
|
|||
|
||||
form
|
||||
.prepend(
|
||||
`<div class="avatar-note-form-holder"><div class="content"><a href="${escape(
|
||||
`<a href="${escape(
|
||||
gon.current_username,
|
||||
)}" class="user-avatar-link d-none d-sm-block"><img class="avatar s40" src="${encodeURI(
|
||||
gon.current_user_avatar_url,
|
||||
)}" alt="${escape(gon.current_user_fullname)}" /></a></div></div>`,
|
||||
gon.current_user_avatar_url || gon.default_avatar_url,
|
||||
)}" alt="${escape(gon.current_user_fullname)}" /></a>`,
|
||||
)
|
||||
.append('</div>')
|
||||
.find('.js-close-discussion-note-form')
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
.border-color-default { border-color: $border-color; }
|
||||
.border-bottom-color-default { border-bottom-color: $border-color; }
|
||||
.border-radius-default { border-radius: $border-radius-default; }
|
||||
.border-radius-small { border-radius: $border-radius-small; }
|
||||
.box-shadow-default { box-shadow: 0 2px 4px 0 $black-transparent; }
|
||||
|
||||
.gl-children-ml-sm-3 > * {
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ class Admin::AppearancesController < Admin::ApplicationController
|
|||
favicon
|
||||
favicon_cache
|
||||
new_project_guidelines
|
||||
profile_image_guidelines
|
||||
updated_by
|
||||
header_message
|
||||
footer_message
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module AlertManagement
|
||||
class AlertsFinder
|
||||
def initialize(current_user, project, params)
|
||||
@current_user = current_user
|
||||
@project = project
|
||||
@params = params
|
||||
end
|
||||
|
||||
def execute
|
||||
return AlertManagement::Alert.none unless authorized?
|
||||
|
||||
collection = project.alert_management_alerts
|
||||
by_iid(collection)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :current_user, :project, :params
|
||||
|
||||
def by_iid(collection)
|
||||
return collection unless params[:iid]
|
||||
|
||||
collection.for_iid(params[:iid])
|
||||
end
|
||||
|
||||
def authorized?
|
||||
Ability.allowed?(current_user, :read_alert_management_alerts, project)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Resolvers
|
||||
class AlertManagementAlertResolver < BaseResolver
|
||||
argument :iid, GraphQL::STRING_TYPE,
|
||||
required: false,
|
||||
description: 'IID of the alert. For example, "1"'
|
||||
|
||||
type Types::AlertManagement::AlertType, null: true
|
||||
|
||||
def resolve(**args)
|
||||
parent = object.respond_to?(:sync) ? object.sync : object
|
||||
return AlertManagement::Alert.none if parent.nil?
|
||||
|
||||
AlertManagement::AlertsFinder.new(context[:current_user], parent, args).execute
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Types
|
||||
module AlertManagement
|
||||
class AlertType < BaseObject
|
||||
graphql_name 'AlertManagementAlert'
|
||||
description "Describes an alert from the project's Alert Management"
|
||||
|
||||
authorize :read_alert_management_alerts
|
||||
|
||||
field :iid,
|
||||
GraphQL::ID_TYPE,
|
||||
null: false,
|
||||
description: 'Internal ID of the alert'
|
||||
|
||||
field :title,
|
||||
GraphQL::STRING_TYPE,
|
||||
null: true,
|
||||
description: 'Title of the alert'
|
||||
|
||||
field :severity,
|
||||
AlertManagement::SeverityEnum,
|
||||
null: true,
|
||||
description: 'Severity of the alert'
|
||||
|
||||
field :status,
|
||||
AlertManagement::StatusEnum,
|
||||
null: true,
|
||||
description: 'Status of the alert'
|
||||
|
||||
field :service,
|
||||
GraphQL::STRING_TYPE,
|
||||
null: true,
|
||||
description: 'Service the alert came from'
|
||||
|
||||
field :monitoring_tool,
|
||||
GraphQL::STRING_TYPE,
|
||||
null: true,
|
||||
description: 'Monitoring tool the alert came from'
|
||||
|
||||
field :started_at,
|
||||
Types::TimeType,
|
||||
null: true,
|
||||
description: 'Timestamp the alert was raised'
|
||||
|
||||
field :ended_at,
|
||||
Types::TimeType,
|
||||
null: true,
|
||||
description: 'Timestamp the alert ended'
|
||||
|
||||
field :event_count,
|
||||
GraphQL::INT_TYPE,
|
||||
null: true,
|
||||
description: 'Number of events of this alert',
|
||||
method: :events
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Types
|
||||
module AlertManagement
|
||||
class SeverityEnum < BaseEnum
|
||||
graphql_name 'AlertManagementSeverity'
|
||||
description 'Alert severity values'
|
||||
|
||||
::AlertManagement::Alert.severities.keys.each do |severity|
|
||||
value severity.upcase, value: severity, description: "#{severity.titleize} severity"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Types
|
||||
module AlertManagement
|
||||
class StatusEnum < BaseEnum
|
||||
graphql_name 'AlertManagementStatus'
|
||||
description 'Alert status values'
|
||||
|
||||
::AlertManagement::Alert.statuses.keys.each do |status|
|
||||
value status.upcase, value: status, description: "#{status.titleize} status"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -205,6 +205,18 @@ module Types
|
|||
null: true,
|
||||
description: 'Project services',
|
||||
resolver: Resolvers::Projects::ServicesResolver
|
||||
|
||||
field :alert_management_alerts,
|
||||
Types::AlertManagement::AlertType.connection_type,
|
||||
null: true,
|
||||
description: 'Alert Management alerts of the project',
|
||||
resolver: Resolvers::AlertManagementAlertResolver
|
||||
|
||||
field :alert_management_alert,
|
||||
Types::AlertManagement::AlertType,
|
||||
null: true,
|
||||
description: 'A single Alert Management alert of the project',
|
||||
resolver: Resolvers::AlertManagementAlertResolver.single
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ module AppearancesHelper
|
|||
markdown_field(current_appearance, :new_project_guidelines)
|
||||
end
|
||||
|
||||
def brand_profile_image_guidelines
|
||||
markdown_field(current_appearance, :profile_image_guidelines)
|
||||
end
|
||||
|
||||
def current_appearance
|
||||
strong_memoize(:current_appearance) do
|
||||
Appearance.current
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@ module AlertManagement
|
|||
ignored: 3
|
||||
}
|
||||
|
||||
scope :for_iid, -> (iid) { where(iid: iid) }
|
||||
|
||||
def fingerprint=(value)
|
||||
if value.blank?
|
||||
super(nil)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ class Appearance < ApplicationRecord
|
|||
|
||||
cache_markdown_field :description
|
||||
cache_markdown_field :new_project_guidelines
|
||||
cache_markdown_field :profile_image_guidelines
|
||||
cache_markdown_field :header_message, pipeline: :broadcast_message
|
||||
cache_markdown_field :footer_message, pipeline: :broadcast_message
|
||||
|
||||
|
|
@ -15,12 +16,14 @@ class Appearance < ApplicationRecord
|
|||
validates :header_logo, file_size: { maximum: 1.megabyte }
|
||||
validates :message_background_color, allow_blank: true, color: true
|
||||
validates :message_font_color, allow_blank: true, color: true
|
||||
validates :profile_image_guidelines, length: { maximum: 4096 }
|
||||
|
||||
validate :single_appearance_row, on: :create
|
||||
|
||||
default_value_for :title, ''
|
||||
default_value_for :description, ''
|
||||
default_value_for :new_project_guidelines, ''
|
||||
default_value_for :profile_image_guidelines, ''
|
||||
default_value_for :header_message, ''
|
||||
default_value_for :footer_message, ''
|
||||
default_value_for :message_background_color, '#E75E40'
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module AlertManagement
|
||||
class AlertPolicy < ::BasePolicy
|
||||
delegate { @subject.project }
|
||||
end
|
||||
end
|
||||
|
|
@ -226,6 +226,7 @@ class ProjectPolicy < BasePolicy
|
|||
enable :read_alert_management
|
||||
enable :read_prometheus
|
||||
enable :read_metrics_dashboard_annotation
|
||||
enable :read_alert_management_alerts
|
||||
end
|
||||
|
||||
# We define `:public_user_access` separately because there are cases in gitlab-ee
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ module Groups
|
|||
|
||||
def restorer
|
||||
@restorer ||=
|
||||
if ::Feature.enabled?(:group_import_export_ndjson, @group&.parent)
|
||||
if ndjson?
|
||||
Gitlab::ImportExport::Group::TreeRestorer.new(
|
||||
user: @current_user,
|
||||
shared: @shared,
|
||||
|
|
@ -52,6 +52,11 @@ module Groups
|
|||
end
|
||||
end
|
||||
|
||||
def ndjson?
|
||||
::Feature.enabled?(:group_import_export_ndjson, @group&.parent) &&
|
||||
File.exist?(File.join(@shared.export_path, 'tree/groups/_all.ndjson'))
|
||||
end
|
||||
|
||||
def remove_import_file
|
||||
upload = @group.import_export_upload
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
- parsed_with_gfm = "Content parsed with #{link_to('GitLab Flavored Markdown', help_page_path('user/markdown'), target: '_blank')}.".html_safe
|
||||
|
||||
= form_for @appearance, url: admin_appearances_path, html: { class: 'prepend-top-default' } do |f|
|
||||
= form_errors(@appearance)
|
||||
|
||||
|
|
@ -57,7 +59,7 @@
|
|||
= f.label :description, class: 'col-form-label label-bold'
|
||||
= f.text_area :description, class: "form-control", rows: 10
|
||||
.hint
|
||||
Description parsed with #{link_to "GitLab Flavored Markdown", help_page_path('user/markdown'), target: '_blank'}.
|
||||
= parsed_with_gfm
|
||||
.form-group
|
||||
= f.label :logo, class: 'col-form-label label-bold pt-0'
|
||||
%p
|
||||
|
|
@ -83,15 +85,30 @@
|
|||
%p
|
||||
= f.text_area :new_project_guidelines, class: "form-control", rows: 10
|
||||
.hint
|
||||
Guidelines parsed with #{link_to "GitLab Flavored Markdown", help_page_path('user/markdown'), target: '_blank'}.
|
||||
= parsed_with_gfm
|
||||
|
||||
%hr
|
||||
.row
|
||||
.col-lg-4.profile-settings-sidebar
|
||||
%h4.prepend-top-0 Profile image guideline
|
||||
|
||||
.col-lg-8
|
||||
.form-group
|
||||
= f.label :profile_image_guidelines, class: 'col-form-label label-bold'
|
||||
%p
|
||||
= f.text_area :profile_image_guidelines, class: "form-control", rows: 10
|
||||
.hint
|
||||
= parsed_with_gfm
|
||||
|
||||
.prepend-top-default.append-bottom-default
|
||||
= f.submit 'Update appearance settings', class: 'btn btn-success'
|
||||
- if @appearance.persisted?
|
||||
Preview last save:
|
||||
= link_to 'Sign-in page', preview_sign_in_admin_appearances_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
|
||||
= link_to 'New project page', new_project_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
|
||||
- if @appearance.persisted? || @appearance.updated_at
|
||||
.mt-4
|
||||
- if @appearance.persisted?
|
||||
Preview last save:
|
||||
= link_to 'Sign-in page', preview_sign_in_admin_appearances_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
|
||||
= link_to 'New project page', new_project_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if @appearance.updated_at
|
||||
%span.float-right
|
||||
Last edit #{time_ago_with_tooltip(@appearance.updated_at)}
|
||||
- if @appearance.updated_at
|
||||
%span.float-right
|
||||
Last edit #{time_ago_with_tooltip(@appearance.updated_at)}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@
|
|||
= s_("Profiles|You can upload your avatar here or change it at %{gravatar_link}").html_safe % { gravatar_link: gravatar_link }
|
||||
- else
|
||||
= s_("Profiles|You can upload your avatar here")
|
||||
- if current_appearance&.profile_image_guidelines?
|
||||
.md
|
||||
= brand_profile_image_guidelines
|
||||
.col-lg-8
|
||||
.clearfix.avatar-image.append-bottom-default
|
||||
= link_to avatar_icon_for_user(@user, 400), target: '_blank', rel: 'noopener noreferrer' do
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
- else
|
||||
- preview_url = preview_markdown_path(@project)
|
||||
|
||||
= form_for form_resources, url: new_form_url, remote: true, html: { :'data-type' => 'json', multipart: true, id: nil, class: "new-note js-new-note-form js-quick-submit common-note-form", "data-noteable-iid" => @note.noteable.try(:iid), }, authenticity_token: true do |f|
|
||||
= form_for form_resources, url: new_form_url, remote: true, html: { :'data-type' => 'json', multipart: true, id: nil, class: "new-note js-new-note-form js-quick-submit common-note-form discussion-reply-holder", "data-noteable-iid" => @note.noteable.try(:iid), }, authenticity_token: true do |f|
|
||||
= hidden_field_tag :view, diff_view
|
||||
= hidden_field_tag :line_type
|
||||
= hidden_field_tag :merge_request_diff_head_sha, @note.noteable.try(:diff_head_sha)
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
-# DiffNote
|
||||
= f.hidden_field :position
|
||||
|
||||
.discussion-form-container
|
||||
.discussion-form-container.discussion-with-resolve-btn.flex-column.p-0
|
||||
= render layout: 'projects/md_preview', locals: { url: preview_url, referenced_users: true } do
|
||||
= render 'projects/zen', f: f,
|
||||
attr: :note,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add GraphQL type for reading Alert Management Alerts
|
||||
merge_request: 30140
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add option to add custom profile image guidelines
|
||||
merge_request: 29894
|
||||
author: Roger Meier
|
||||
type: added
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Introduce API for fetching shared projects in a group
|
||||
merge_request: 30461
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fixed misaligned avatar in commit discussion form
|
||||
merge_request:
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add table for tracking issues published to status page
|
||||
merge_request: 29994
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class CreateStatusPagePublishedIncidents < ActiveRecord::Migration[6.0]
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
def up
|
||||
with_lock_retries do
|
||||
create_table :status_page_published_incidents do |t|
|
||||
t.timestamps_with_timezone null: false
|
||||
t.references :issue, null: false, index: { unique: true }, foreign_key: { on_delete: :cascade }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
drop_table :status_page_published_incidents
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddProfileImageGuidelinesToAppearances < ActiveRecord::Migration[6.0]
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column :appearances, :profile_image_guidelines, :text, null: true
|
||||
add_column :appearances, :profile_image_guidelines_html, :text, null: true # rubocop:disable Migration/AddLimitToTextColumns
|
||||
|
||||
add_text_limit :appearances, :profile_image_guidelines, 4096, constraint_name: 'appearances_profile_image_guidelines'
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column :appearances, :profile_image_guidelines
|
||||
remove_column :appearances, :profile_image_guidelines_html
|
||||
end
|
||||
end
|
||||
|
|
@ -171,7 +171,10 @@ CREATE TABLE public.appearances (
|
|||
message_background_color text,
|
||||
message_font_color text,
|
||||
favicon character varying,
|
||||
email_header_and_footer_enabled boolean DEFAULT false NOT NULL
|
||||
email_header_and_footer_enabled boolean DEFAULT false NOT NULL,
|
||||
profile_image_guidelines text,
|
||||
profile_image_guidelines_html text,
|
||||
CONSTRAINT appearances_profile_image_guidelines CHECK ((char_length(profile_image_guidelines) <= 4096))
|
||||
);
|
||||
|
||||
CREATE SEQUENCE public.appearances_id_seq
|
||||
|
|
@ -6138,6 +6141,22 @@ CREATE SEQUENCE public.sprints_id_seq
|
|||
|
||||
ALTER SEQUENCE public.sprints_id_seq OWNED BY public.sprints.id;
|
||||
|
||||
CREATE TABLE public.status_page_published_incidents (
|
||||
id bigint NOT NULL,
|
||||
issue_id bigint NOT NULL,
|
||||
created_at timestamp with time zone NOT NULL,
|
||||
updated_at timestamp with time zone NOT NULL
|
||||
);
|
||||
|
||||
CREATE SEQUENCE public.status_page_published_incidents_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1;
|
||||
|
||||
ALTER SEQUENCE public.status_page_published_incidents_id_seq OWNED BY public.status_page_published_incidents.id;
|
||||
|
||||
CREATE TABLE public.status_page_settings (
|
||||
project_id bigint NOT NULL,
|
||||
created_at timestamp with time zone NOT NULL,
|
||||
|
|
@ -7662,6 +7681,8 @@ ALTER TABLE ONLY public.spam_logs ALTER COLUMN id SET DEFAULT nextval('public.sp
|
|||
|
||||
ALTER TABLE ONLY public.sprints ALTER COLUMN id SET DEFAULT nextval('public.sprints_id_seq'::regclass);
|
||||
|
||||
ALTER TABLE ONLY public.status_page_published_incidents ALTER COLUMN id SET DEFAULT nextval('public.status_page_published_incidents_id_seq'::regclass);
|
||||
|
||||
ALTER TABLE ONLY public.status_page_settings ALTER COLUMN project_id SET DEFAULT nextval('public.status_page_settings_project_id_seq'::regclass);
|
||||
|
||||
ALTER TABLE ONLY public.subscriptions ALTER COLUMN id SET DEFAULT nextval('public.subscriptions_id_seq'::regclass);
|
||||
|
|
@ -8597,6 +8618,9 @@ ALTER TABLE ONLY public.spam_logs
|
|||
ALTER TABLE ONLY public.sprints
|
||||
ADD CONSTRAINT sprints_pkey PRIMARY KEY (id);
|
||||
|
||||
ALTER TABLE ONLY public.status_page_published_incidents
|
||||
ADD CONSTRAINT status_page_published_incidents_pkey PRIMARY KEY (id);
|
||||
|
||||
ALTER TABLE ONLY public.status_page_settings
|
||||
ADD CONSTRAINT status_page_settings_pkey PRIMARY KEY (project_id);
|
||||
|
||||
|
|
@ -10439,6 +10463,8 @@ CREATE INDEX index_sprints_on_title ON public.sprints USING btree (title);
|
|||
|
||||
CREATE INDEX index_sprints_on_title_trigram ON public.sprints USING gin (title public.gin_trgm_ops);
|
||||
|
||||
CREATE UNIQUE INDEX index_status_page_published_incidents_on_issue_id ON public.status_page_published_incidents USING btree (issue_id);
|
||||
|
||||
CREATE INDEX index_status_page_settings_on_project_id ON public.status_page_settings USING btree (project_id);
|
||||
|
||||
CREATE INDEX index_subscriptions_on_project_id ON public.subscriptions USING btree (project_id);
|
||||
|
|
@ -11750,6 +11776,9 @@ ALTER TABLE ONLY public.dependency_proxy_group_settings
|
|||
ALTER TABLE ONLY public.group_deploy_tokens
|
||||
ADD CONSTRAINT fk_rails_61a572b41a FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY public.status_page_published_incidents
|
||||
ADD CONSTRAINT fk_rails_61e5493940 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY public.deployment_clusters
|
||||
ADD CONSTRAINT fk_rails_6359a164df FOREIGN KEY (deployment_id) REFERENCES public.deployments(id) ON DELETE CASCADE;
|
||||
|
||||
|
|
@ -13508,11 +13537,13 @@ COPY "schema_migrations" (version) FROM STDIN;
|
|||
20200415161021
|
||||
20200415161206
|
||||
20200415192656
|
||||
20200416005331
|
||||
20200416111111
|
||||
20200416120128
|
||||
20200416120354
|
||||
20200417044453
|
||||
20200417145946
|
||||
20200420092011
|
||||
20200420104303
|
||||
20200420104323
|
||||
20200420162730
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# For a list of all options, see https://errata-ai.github.io/vale/styles/
|
||||
extends: substitution
|
||||
message: Use "%s" instead of "%s" in most cases.
|
||||
message: Use "%s" instead of "%s", for a friendly, informal tone.
|
||||
link: https://docs.gitlab.com/ee/development/documentation/styleguide.html#language
|
||||
level: suggestion
|
||||
nonword: false
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ Example response:
|
|||
"header_logo": "/uploads/-/system/appearance/header_logo/1/header.png",
|
||||
"favicon": "/uploads/-/system/appearance/favicon/1/favicon.png",
|
||||
"new_project_guidelines": "Please read the FAQs for help.",
|
||||
"profile_image_guidelines": "Custom profile image guidelines",
|
||||
"header_message": "",
|
||||
"footer_message": "",
|
||||
"message_background_color": "#e75e40",
|
||||
|
|
@ -51,6 +52,7 @@ PUT /application/appearance
|
|||
| `header_logo` | mixed | no | Instance image used for the main navigation bar
|
||||
| `favicon` | mixed | no | Instance favicon in .ico/.png format
|
||||
| `new_project_guidelines` | string | no | Markdown text shown on the new project page
|
||||
| `profile_image_guidelines` | string | no | Markdown text shown on the profile page below Public Avatar
|
||||
| `header_message` | string | no | Message within the system header bar
|
||||
| `footer_message` | string | no | Message within the system footer bar
|
||||
| `message_background_color` | string | no | Background color for the system header / footer bar
|
||||
|
|
@ -71,6 +73,7 @@ Example response:
|
|||
"header_logo": "/uploads/-/system/appearance/header_logo/1/header.png",
|
||||
"favicon": "/uploads/-/system/appearance/favicon/1/favicon.png",
|
||||
"new_project_guidelines": "Please read the FAQs for help.",
|
||||
"profile_image_guidelines": "Custom profile image guidelines",
|
||||
"header_message": "test",
|
||||
"footer_message": "",
|
||||
"message_background_color": "#e75e40",
|
||||
|
|
|
|||
|
|
@ -103,6 +103,151 @@ type AdminSidekiqQueuesDeleteJobsPayload {
|
|||
result: DeleteJobsResponse
|
||||
}
|
||||
|
||||
"""
|
||||
Describes an alert from the project's Alert Management
|
||||
"""
|
||||
type AlertManagementAlert {
|
||||
"""
|
||||
Timestamp the alert ended
|
||||
"""
|
||||
endedAt: Time
|
||||
|
||||
"""
|
||||
Number of events of this alert
|
||||
"""
|
||||
eventCount: Int
|
||||
|
||||
"""
|
||||
Internal ID of the alert
|
||||
"""
|
||||
iid: ID!
|
||||
|
||||
"""
|
||||
Monitoring tool the alert came from
|
||||
"""
|
||||
monitoringTool: String
|
||||
|
||||
"""
|
||||
Service the alert came from
|
||||
"""
|
||||
service: String
|
||||
|
||||
"""
|
||||
Severity of the alert
|
||||
"""
|
||||
severity: AlertManagementSeverity
|
||||
|
||||
"""
|
||||
Timestamp the alert was raised
|
||||
"""
|
||||
startedAt: Time
|
||||
|
||||
"""
|
||||
Status of the alert
|
||||
"""
|
||||
status: AlertManagementStatus
|
||||
|
||||
"""
|
||||
Title of the alert
|
||||
"""
|
||||
title: String
|
||||
}
|
||||
|
||||
"""
|
||||
The connection type for AlertManagementAlert.
|
||||
"""
|
||||
type AlertManagementAlertConnection {
|
||||
"""
|
||||
A list of edges.
|
||||
"""
|
||||
edges: [AlertManagementAlertEdge]
|
||||
|
||||
"""
|
||||
A list of nodes.
|
||||
"""
|
||||
nodes: [AlertManagementAlert]
|
||||
|
||||
"""
|
||||
Information to aid in pagination.
|
||||
"""
|
||||
pageInfo: PageInfo!
|
||||
}
|
||||
|
||||
"""
|
||||
An edge in a connection.
|
||||
"""
|
||||
type AlertManagementAlertEdge {
|
||||
"""
|
||||
A cursor for use in pagination.
|
||||
"""
|
||||
cursor: String!
|
||||
|
||||
"""
|
||||
The item at the end of the edge.
|
||||
"""
|
||||
node: AlertManagementAlert
|
||||
}
|
||||
|
||||
"""
|
||||
Alert severity values
|
||||
"""
|
||||
enum AlertManagementSeverity {
|
||||
"""
|
||||
Critical severity
|
||||
"""
|
||||
CRITICAL
|
||||
|
||||
"""
|
||||
High severity
|
||||
"""
|
||||
HIGH
|
||||
|
||||
"""
|
||||
Info severity
|
||||
"""
|
||||
INFO
|
||||
|
||||
"""
|
||||
Low severity
|
||||
"""
|
||||
LOW
|
||||
|
||||
"""
|
||||
Medium severity
|
||||
"""
|
||||
MEDIUM
|
||||
|
||||
"""
|
||||
Unknown severity
|
||||
"""
|
||||
UNKNOWN
|
||||
}
|
||||
|
||||
"""
|
||||
Alert status values
|
||||
"""
|
||||
enum AlertManagementStatus {
|
||||
"""
|
||||
Acknowledged status
|
||||
"""
|
||||
ACKNOWLEDGED
|
||||
|
||||
"""
|
||||
Ignored status
|
||||
"""
|
||||
IGNORED
|
||||
|
||||
"""
|
||||
Resolved status
|
||||
"""
|
||||
RESOLVED
|
||||
|
||||
"""
|
||||
Triggered status
|
||||
"""
|
||||
TRIGGERED
|
||||
}
|
||||
|
||||
"""
|
||||
An emoji awarded by a user.
|
||||
"""
|
||||
|
|
@ -6293,6 +6438,46 @@ enum PipelineStatusEnum {
|
|||
}
|
||||
|
||||
type Project {
|
||||
"""
|
||||
A single Alert Management alert of the project
|
||||
"""
|
||||
alertManagementAlert(
|
||||
"""
|
||||
IID of the alert. For example, "1"
|
||||
"""
|
||||
iid: String
|
||||
): AlertManagementAlert
|
||||
|
||||
"""
|
||||
Alert Management alerts of the project
|
||||
"""
|
||||
alertManagementAlerts(
|
||||
"""
|
||||
Returns the elements in the list that come after the specified cursor.
|
||||
"""
|
||||
after: String
|
||||
|
||||
"""
|
||||
Returns the elements in the list that come before the specified cursor.
|
||||
"""
|
||||
before: String
|
||||
|
||||
"""
|
||||
Returns the first _n_ elements from the list.
|
||||
"""
|
||||
first: Int
|
||||
|
||||
"""
|
||||
IID of the alert. For example, "1"
|
||||
"""
|
||||
iid: String
|
||||
|
||||
"""
|
||||
Returns the last _n_ elements from the list.
|
||||
"""
|
||||
last: Int
|
||||
): AlertManagementAlertConnection
|
||||
|
||||
"""
|
||||
Indicates the archived status of the project
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -287,6 +287,343 @@
|
|||
"enumValues": null,
|
||||
"possibleTypes": null
|
||||
},
|
||||
{
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlert",
|
||||
"description": "Describes an alert from the project's Alert Management",
|
||||
"fields": [
|
||||
{
|
||||
"name": "endedAt",
|
||||
"description": "Timestamp the alert ended",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "Time",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "eventCount",
|
||||
"description": "Number of events of this alert",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "Int",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "iid",
|
||||
"description": "Internal ID of the alert",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "NON_NULL",
|
||||
"name": null,
|
||||
"ofType": {
|
||||
"kind": "SCALAR",
|
||||
"name": "ID",
|
||||
"ofType": null
|
||||
}
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "monitoringTool",
|
||||
"description": "Monitoring tool the alert came from",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "service",
|
||||
"description": "Service the alert came from",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "severity",
|
||||
"description": "Severity of the alert",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "ENUM",
|
||||
"name": "AlertManagementSeverity",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "startedAt",
|
||||
"description": "Timestamp the alert was raised",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "Time",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "status",
|
||||
"description": "Status of the alert",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "ENUM",
|
||||
"name": "AlertManagementStatus",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "title",
|
||||
"description": "Title of the alert",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
}
|
||||
],
|
||||
"inputFields": null,
|
||||
"interfaces": [
|
||||
|
||||
],
|
||||
"enumValues": null,
|
||||
"possibleTypes": null
|
||||
},
|
||||
{
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlertConnection",
|
||||
"description": "The connection type for AlertManagementAlert.",
|
||||
"fields": [
|
||||
{
|
||||
"name": "edges",
|
||||
"description": "A list of edges.",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "LIST",
|
||||
"name": null,
|
||||
"ofType": {
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlertEdge",
|
||||
"ofType": null
|
||||
}
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "nodes",
|
||||
"description": "A list of nodes.",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "LIST",
|
||||
"name": null,
|
||||
"ofType": {
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlert",
|
||||
"ofType": null
|
||||
}
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "pageInfo",
|
||||
"description": "Information to aid in pagination.",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "NON_NULL",
|
||||
"name": null,
|
||||
"ofType": {
|
||||
"kind": "OBJECT",
|
||||
"name": "PageInfo",
|
||||
"ofType": null
|
||||
}
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
}
|
||||
],
|
||||
"inputFields": null,
|
||||
"interfaces": [
|
||||
|
||||
],
|
||||
"enumValues": null,
|
||||
"possibleTypes": null
|
||||
},
|
||||
{
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlertEdge",
|
||||
"description": "An edge in a connection.",
|
||||
"fields": [
|
||||
{
|
||||
"name": "cursor",
|
||||
"description": "A cursor for use in pagination.",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "NON_NULL",
|
||||
"name": null,
|
||||
"ofType": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
}
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "node",
|
||||
"description": "The item at the end of the edge.",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlert",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
}
|
||||
],
|
||||
"inputFields": null,
|
||||
"interfaces": [
|
||||
|
||||
],
|
||||
"enumValues": null,
|
||||
"possibleTypes": null
|
||||
},
|
||||
{
|
||||
"kind": "ENUM",
|
||||
"name": "AlertManagementSeverity",
|
||||
"description": "Alert severity values",
|
||||
"fields": null,
|
||||
"inputFields": null,
|
||||
"interfaces": null,
|
||||
"enumValues": [
|
||||
{
|
||||
"name": "CRITICAL",
|
||||
"description": "Critical severity",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "HIGH",
|
||||
"description": "High severity",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "MEDIUM",
|
||||
"description": "Medium severity",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "LOW",
|
||||
"description": "Low severity",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "INFO",
|
||||
"description": "Info severity",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "UNKNOWN",
|
||||
"description": "Unknown severity",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
}
|
||||
],
|
||||
"possibleTypes": null
|
||||
},
|
||||
{
|
||||
"kind": "ENUM",
|
||||
"name": "AlertManagementStatus",
|
||||
"description": "Alert status values",
|
||||
"fields": null,
|
||||
"inputFields": null,
|
||||
"interfaces": null,
|
||||
"enumValues": [
|
||||
{
|
||||
"name": "TRIGGERED",
|
||||
"description": "Triggered status",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "ACKNOWLEDGED",
|
||||
"description": "Acknowledged status",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "RESOLVED",
|
||||
"description": "Resolved status",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "IGNORED",
|
||||
"description": "Ignored status",
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
}
|
||||
],
|
||||
"possibleTypes": null
|
||||
},
|
||||
{
|
||||
"kind": "OBJECT",
|
||||
"name": "AwardEmoji",
|
||||
|
|
@ -19132,6 +19469,92 @@
|
|||
"name": "Project",
|
||||
"description": null,
|
||||
"fields": [
|
||||
{
|
||||
"name": "alertManagementAlert",
|
||||
"description": "A single Alert Management alert of the project",
|
||||
"args": [
|
||||
{
|
||||
"name": "iid",
|
||||
"description": "IID of the alert. For example, \"1\"",
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
},
|
||||
"defaultValue": null
|
||||
}
|
||||
],
|
||||
"type": {
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlert",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "alertManagementAlerts",
|
||||
"description": "Alert Management alerts of the project",
|
||||
"args": [
|
||||
{
|
||||
"name": "iid",
|
||||
"description": "IID of the alert. For example, \"1\"",
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
},
|
||||
"defaultValue": null
|
||||
},
|
||||
{
|
||||
"name": "after",
|
||||
"description": "Returns the elements in the list that come after the specified cursor.",
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
},
|
||||
"defaultValue": null
|
||||
},
|
||||
{
|
||||
"name": "before",
|
||||
"description": "Returns the elements in the list that come before the specified cursor.",
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "String",
|
||||
"ofType": null
|
||||
},
|
||||
"defaultValue": null
|
||||
},
|
||||
{
|
||||
"name": "first",
|
||||
"description": "Returns the first _n_ elements from the list.",
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "Int",
|
||||
"ofType": null
|
||||
},
|
||||
"defaultValue": null
|
||||
},
|
||||
{
|
||||
"name": "last",
|
||||
"description": "Returns the last _n_ elements from the list.",
|
||||
"type": {
|
||||
"kind": "SCALAR",
|
||||
"name": "Int",
|
||||
"ofType": null
|
||||
},
|
||||
"defaultValue": null
|
||||
}
|
||||
],
|
||||
"type": {
|
||||
"kind": "OBJECT",
|
||||
"name": "AlertManagementAlertConnection",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "archived",
|
||||
"description": "Indicates the archived status of the project",
|
||||
|
|
|
|||
|
|
@ -36,6 +36,22 @@ Autogenerated return type of AdminSidekiqQueuesDeleteJobs
|
|||
| `errors` | String! => Array | Reasons why the mutation failed. |
|
||||
| `result` | DeleteJobsResponse | Information about the status of the deletion request |
|
||||
|
||||
## AlertManagementAlert
|
||||
|
||||
Describes an alert from the project's Alert Management
|
||||
|
||||
| Name | Type | Description |
|
||||
| --- | ---- | ---------- |
|
||||
| `endedAt` | Time | Timestamp the alert ended |
|
||||
| `eventCount` | Int | Number of events of this alert |
|
||||
| `iid` | ID! | Internal ID of the alert |
|
||||
| `monitoringTool` | String | Monitoring tool the alert came from |
|
||||
| `service` | String | Service the alert came from |
|
||||
| `severity` | AlertManagementSeverity | Severity of the alert |
|
||||
| `startedAt` | Time | Timestamp the alert was raised |
|
||||
| `status` | AlertManagementStatus | Status of the alert |
|
||||
| `title` | String | Title of the alert |
|
||||
|
||||
## AwardEmoji
|
||||
|
||||
An emoji awarded by a user.
|
||||
|
|
@ -976,6 +992,7 @@ Information about pagination in a connection.
|
|||
|
||||
| Name | Type | Description |
|
||||
| --- | ---- | ---------- |
|
||||
| `alertManagementAlert` | AlertManagementAlert | A single Alert Management alert of the project |
|
||||
| `archived` | Boolean | Indicates the archived status of the project |
|
||||
| `autocloseReferencedIssues` | Boolean | Indicates if issues referenced by merge requests and commits within the default branch are closed automatically |
|
||||
| `avatarUrl` | String | URL to avatar image file of the project |
|
||||
|
|
|
|||
|
|
@ -241,9 +241,142 @@ Example response:
|
|||
```
|
||||
|
||||
NOTE: **Note:**
|
||||
|
||||
To distinguish between a project in the group and a project shared to the group, the `namespace` attribute can be used. When a project has been shared to the group, its `namespace` will be different from the group the request is being made for.
|
||||
|
||||
## List a group's shared projects
|
||||
|
||||
Get a list of projects shared to this group. When accessed without authentication, only public shared projects are returned.
|
||||
|
||||
By default, this request returns 20 results at a time because the API results [are paginated](README.md#pagination).
|
||||
|
||||
```plaintext
|
||||
GET /groups/:id/projects/shared
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
| Attribute | Type | Required | Description |
|
||||
| ----------------------------- | -------------- | -------- | ----------- |
|
||||
| `id` | integer/string | yes | The ID or [URL-encoded path of the group](README.md#namespaced-path-encoding) owned by the authenticated user |
|
||||
| `archived` | boolean | no | Limit by archived status |
|
||||
| `visibility` | string | no | Limit by visibility `public`, `internal`, or `private` |
|
||||
| `order_by` | string | no | Return projects ordered by `id`, `name`, `path`, `created_at`, `updated_at`, or `last_activity_at` fields. Default is `created_at` |
|
||||
| `sort` | string | no | Return projects sorted in `asc` or `desc` order. Default is `desc` |
|
||||
| `search` | string | no | Return list of authorized projects matching the search criteria |
|
||||
| `simple` | boolean | no | Return only the ID, URL, name, and path of each project |
|
||||
| `starred` | boolean | no | Limit by projects starred by the current user |
|
||||
| `with_issues_enabled` | boolean | no | Limit by projects with issues feature enabled. Default is `false` |
|
||||
| `with_merge_requests_enabled` | boolean | no | Limit by projects with merge requests feature enabled. Default is `false` |
|
||||
| `min_access_level` | integer | no | Limit to projects where current user has at least this [access level](members.md) |
|
||||
| `with_custom_attributes` | boolean | no | Include [custom attributes](custom_attributes.md) in response (admins only) |
|
||||
|
||||
Example response:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id":8,
|
||||
"description":"Shared project for Html5 Boilerplate",
|
||||
"name":"Html5 Boilerplate",
|
||||
"name_with_namespace":"H5bp / Html5 Boilerplate",
|
||||
"path":"html5-boilerplate",
|
||||
"path_with_namespace":"h5bp/html5-boilerplate",
|
||||
"created_at":"2020-04-27T06:13:22.642Z",
|
||||
"default_branch":"master",
|
||||
"tag_list":[
|
||||
|
||||
],
|
||||
"ssh_url_to_repo":"ssh://git@gitlab.com/h5bp/html5-boilerplate.git",
|
||||
"http_url_to_repo":"http://gitlab.com/h5bp/html5-boilerplate.git",
|
||||
"web_url":"http://gitlab.com/h5bp/html5-boilerplate",
|
||||
"readme_url":"http://gitlab.com/h5bp/html5-boilerplate/-/blob/master/README.md",
|
||||
"avatar_url":null,
|
||||
"star_count":0,
|
||||
"forks_count":4,
|
||||
"last_activity_at":"2020-04-27T06:13:22.642Z",
|
||||
"namespace":{
|
||||
"id":28,
|
||||
"name":"H5bp",
|
||||
"path":"h5bp",
|
||||
"kind":"group",
|
||||
"full_path":"h5bp",
|
||||
"parent_id":null,
|
||||
"avatar_url":null,
|
||||
"web_url":"http://gitlab.com/groups/h5bp"
|
||||
},
|
||||
"_links":{
|
||||
"self":"http://gitlab.com/api/v4/projects/8",
|
||||
"issues":"http://gitlab.com/api/v4/projects/8/issues",
|
||||
"merge_requests":"http://gitlab.com/api/v4/projects/8/merge_requests",
|
||||
"repo_branches":"http://gitlab.com/api/v4/projects/8/repository/branches",
|
||||
"labels":"http://gitlab.com/api/v4/projects/8/labels",
|
||||
"events":"http://gitlab.com/api/v4/projects/8/events",
|
||||
"members":"http://gitlab.com/api/v4/projects/8/members"
|
||||
},
|
||||
"empty_repo":false,
|
||||
"archived":false,
|
||||
"visibility":"public",
|
||||
"resolve_outdated_diff_discussions":false,
|
||||
"container_registry_enabled":true,
|
||||
"container_expiration_policy":{
|
||||
"cadence":"7d",
|
||||
"enabled":true,
|
||||
"keep_n":null,
|
||||
"older_than":null,
|
||||
"name_regex":null,
|
||||
"name_regex_keep":null,
|
||||
"next_run_at":"2020-05-04T06:13:22.654Z"
|
||||
},
|
||||
"issues_enabled":true,
|
||||
"merge_requests_enabled":true,
|
||||
"wiki_enabled":true,
|
||||
"jobs_enabled":true,
|
||||
"snippets_enabled":true,
|
||||
"can_create_merge_request_in":true,
|
||||
"issues_access_level":"enabled",
|
||||
"repository_access_level":"enabled",
|
||||
"merge_requests_access_level":"enabled",
|
||||
"forking_access_level":"enabled",
|
||||
"wiki_access_level":"enabled",
|
||||
"builds_access_level":"enabled",
|
||||
"snippets_access_level":"enabled",
|
||||
"pages_access_level":"enabled",
|
||||
"emails_disabled":null,
|
||||
"shared_runners_enabled":true,
|
||||
"lfs_enabled":true,
|
||||
"creator_id":1,
|
||||
"import_status":"failed",
|
||||
"open_issues_count":10,
|
||||
"ci_default_git_depth":50,
|
||||
"public_jobs":true,
|
||||
"build_timeout":3600,
|
||||
"auto_cancel_pending_pipelines":"enabled",
|
||||
"build_coverage_regex":null,
|
||||
"ci_config_path":null,
|
||||
"shared_with_groups":[
|
||||
{
|
||||
"group_id":24,
|
||||
"group_name":"Commit451",
|
||||
"group_full_path":"Commit451",
|
||||
"group_access_level":30,
|
||||
"expires_at":null
|
||||
}
|
||||
],
|
||||
"only_allow_merge_if_pipeline_succeeds":false,
|
||||
"request_access_enabled":true,
|
||||
"only_allow_merge_if_all_discussions_are_resolved":false,
|
||||
"remove_source_branch_after_merge":true,
|
||||
"printing_merge_request_link_enabled":true,
|
||||
"merge_method":"merge",
|
||||
"suggestion_commit_message":null,
|
||||
"auto_devops_enabled":true,
|
||||
"auto_devops_deploy_strategy":"continuous",
|
||||
"autoclose_referenced_issues":true,
|
||||
"repository_storage":"default"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Details of a group
|
||||
|
||||
Get all details of a group. This endpoint can be accessed without authentication
|
||||
|
|
@ -583,7 +716,6 @@ This endpoint returns:
|
|||
[list a group's projects endpoint](#list-a-groups-projects) instead.
|
||||
|
||||
NOTE: **Note:**
|
||||
|
||||
The `projects` and `shared_projects` attributes [will be deprecated in GitLab 13.0](https://gitlab.com/gitlab-org/gitlab/-/issues/213797). To get the details of all projects within a group, use the [list a group's projects endpoint](#list-a-groups-projects) instead.
|
||||
|
||||
Example response:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@ module API
|
|||
optional :logo, type: File, desc: 'Instance image used on the sign in / sign up page' # rubocop:disable Scalability/FileUploads
|
||||
optional :header_logo, type: File, desc: 'Instance image used for the main navigation bar' # rubocop:disable Scalability/FileUploads
|
||||
optional :favicon, type: File, desc: 'Instance favicon in .ico/.png format' # rubocop:disable Scalability/FileUploads
|
||||
optional :new_project_guidelines, type: String, desc: 'Markmarkdown text shown on the new project page'
|
||||
optional :new_project_guidelines, type: String, desc: 'Markdown text shown on the new project page'
|
||||
optional :profile_image_guidelines, type: String, desc: 'Markdown text shown on the profile page below Public Avatar'
|
||||
optional :header_message, type: String, desc: 'Message within the system header bar'
|
||||
optional :footer_message, type: String, desc: 'Message within the system footer bar'
|
||||
optional :message_background_color, type: String, desc: 'Background color for the system header / footer bar'
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ module API
|
|||
end
|
||||
|
||||
expose :new_project_guidelines
|
||||
expose :profile_image_guidelines
|
||||
expose :header_message
|
||||
expose :footer_message
|
||||
expose :message_background_color
|
||||
|
|
|
|||
|
|
@ -60,18 +60,14 @@ module API
|
|||
.execute
|
||||
end
|
||||
|
||||
def find_group_projects(params)
|
||||
def find_group_projects(params, finder_options)
|
||||
group = find_group!(params[:id])
|
||||
options = {
|
||||
only_owned: !params[:with_shared],
|
||||
include_subgroups: params[:include_subgroups]
|
||||
}
|
||||
|
||||
projects = GroupProjectsFinder.new(
|
||||
group: group,
|
||||
current_user: current_user,
|
||||
params: project_finder_params,
|
||||
options: options
|
||||
options: finder_options
|
||||
).execute
|
||||
projects = projects.with_issues_available_for_user(current_user) if params[:with_issues_enabled]
|
||||
projects = projects.with_merge_requests_enabled if params[:with_merge_requests_enabled]
|
||||
|
|
@ -80,6 +76,17 @@ module API
|
|||
paginate(projects)
|
||||
end
|
||||
|
||||
def present_projects(params, projects)
|
||||
options = {
|
||||
with: params[:simple] ? Entities::BasicProjectDetails : Entities::Project,
|
||||
current_user: current_user
|
||||
}
|
||||
|
||||
projects, options = with_custom_attributes(projects, options)
|
||||
|
||||
present options[:with].prepare_relation(projects), options
|
||||
end
|
||||
|
||||
def present_groups(params, groups)
|
||||
options = {
|
||||
with: Entities::Group,
|
||||
|
|
@ -226,16 +233,42 @@ module API
|
|||
use :optional_projects_params
|
||||
end
|
||||
get ":id/projects" do
|
||||
projects = find_group_projects(params)
|
||||
|
||||
options = {
|
||||
with: params[:simple] ? Entities::BasicProjectDetails : Entities::Project,
|
||||
current_user: current_user
|
||||
finder_options = {
|
||||
only_owned: !params[:with_shared],
|
||||
include_subgroups: params[:include_subgroups]
|
||||
}
|
||||
|
||||
projects, options = with_custom_attributes(projects, options)
|
||||
projects = find_group_projects(params, finder_options)
|
||||
|
||||
present options[:with].prepare_relation(projects), options
|
||||
present_projects(params, projects)
|
||||
end
|
||||
|
||||
desc 'Get a list of shared projects in this group' do
|
||||
success Entities::Project
|
||||
end
|
||||
params do
|
||||
optional :archived, type: Boolean, default: false, desc: 'Limit by archived status'
|
||||
optional :visibility, type: String, values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'Limit by visibility'
|
||||
optional :search, type: String, desc: 'Return list of authorized projects matching the search criteria'
|
||||
optional :order_by, type: String, values: %w[id name path created_at updated_at last_activity_at],
|
||||
default: 'created_at', desc: 'Return projects ordered by field'
|
||||
optional :sort, type: String, values: %w[asc desc], default: 'desc',
|
||||
desc: 'Return projects sorted in ascending and descending order'
|
||||
optional :simple, type: Boolean, default: false,
|
||||
desc: 'Return only the ID, URL, name, and path of each project'
|
||||
optional :starred, type: Boolean, default: false, desc: 'Limit by starred status'
|
||||
optional :with_issues_enabled, type: Boolean, default: false, desc: 'Limit by enabled issues feature'
|
||||
optional :with_merge_requests_enabled, type: Boolean, default: false, desc: 'Limit by enabled merge requests feature'
|
||||
optional :min_access_level, type: Integer, values: Gitlab::Access.all_values, desc: 'Limit by minimum access level of authenticated user on projects'
|
||||
|
||||
use :pagination
|
||||
use :with_custom_attributes
|
||||
end
|
||||
get ":id/projects/shared" do
|
||||
projects = find_group_projects(params, { only_shared: true })
|
||||
|
||||
present_projects(params, projects)
|
||||
end
|
||||
|
||||
desc 'Get a list of subgroups in this group.' do
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ module API
|
|||
requires :id, type: String, desc: 'The ID of a project'
|
||||
requires :type, type: String, values: TEMPLATE_TYPES, desc: 'The type (dockerfiles|gitignores|gitlab_ci_ymls|licenses) of the template'
|
||||
end
|
||||
resource :projects do
|
||||
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
|
||||
desc 'Get a list of templates available to this project' do
|
||||
detail 'This endpoint was introduced in GitLab 11.4'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@ module Gitlab
|
|||
apps: { group: 'apis/apps', version: 'v1' },
|
||||
extensions: { group: 'apis/extensions', version: 'v1beta1' },
|
||||
istio: { group: 'apis/networking.istio.io', version: 'v1alpha3' },
|
||||
knative: { group: 'apis/serving.knative.dev', version: 'v1alpha1' }
|
||||
knative: { group: 'apis/serving.knative.dev', version: 'v1alpha1' },
|
||||
networking: { group: 'apis/networking.k8s.io', version: 'v1' }
|
||||
}.freeze
|
||||
|
||||
SUPPORTED_API_GROUPS.each do |name, params|
|
||||
|
|
@ -88,6 +89,14 @@ module Gitlab
|
|||
:update_gateway,
|
||||
to: :istio_client
|
||||
|
||||
# NetworkPolicy methods delegate to the apis/networking.k8s.io api
|
||||
# group client
|
||||
delegate :create_network_policy,
|
||||
:get_network_policies,
|
||||
:update_network_policy,
|
||||
:delete_network_policy,
|
||||
to: :networking_client
|
||||
|
||||
attr_reader :api_prefix, :kubeclient_options
|
||||
|
||||
DEFAULT_KUBECLIENT_OPTIONS = {
|
||||
|
|
|
|||
|
|
@ -9233,6 +9233,9 @@ msgstr ""
|
|||
msgid "Filter projects"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter results"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter results by group"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ module QA
|
|||
it 'succeeds' do
|
||||
Runtime::Browser.visit(:gitlab, Page::Main::Login)
|
||||
|
||||
expect(page).to have_text('Open source software to collaborate on code')
|
||||
expect(page).to have_text('A complete DevOps platform')
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -16,19 +16,32 @@ FactoryBot.define do
|
|||
end
|
||||
|
||||
trait :with_service do
|
||||
service { FFaker::App.name }
|
||||
service { FFaker::Product.product_name }
|
||||
end
|
||||
|
||||
trait :with_monitoring_tool do
|
||||
monitoring_tool { FFaker::App.name }
|
||||
monitoring_tool { FFaker::AWS.product_description }
|
||||
end
|
||||
|
||||
trait :with_host do
|
||||
hosts { FFaker::Internet.public_ip_v4_address }
|
||||
hosts { FFaker::Internet.ip_v4_address }
|
||||
end
|
||||
|
||||
trait :with_ended_at do
|
||||
ended_at { Time.current }
|
||||
end
|
||||
|
||||
trait :resolved do
|
||||
status { :resolved }
|
||||
end
|
||||
|
||||
trait :all_fields do
|
||||
with_issue
|
||||
with_fingerprint
|
||||
with_service
|
||||
with_monitoring_tool
|
||||
with_host
|
||||
with_ended_at
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ FactoryBot.define do
|
|||
title { "GitLab Community Edition" }
|
||||
description { "Open source software to collaborate on code" }
|
||||
new_project_guidelines { "Custom project guidelines" }
|
||||
profile_image_guidelines { "Custom profile image guidelines" }
|
||||
end
|
||||
|
||||
trait :with_logo do
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ describe 'Admin Appearance' do
|
|||
fill_in 'appearance_title', with: 'MyCompany'
|
||||
fill_in 'appearance_description', with: 'dev server'
|
||||
fill_in 'appearance_new_project_guidelines', with: 'Custom project guidelines'
|
||||
fill_in 'appearance_profile_image_guidelines', with: 'Custom profile image guidelines'
|
||||
click_button 'Update appearance settings'
|
||||
|
||||
expect(current_path).to eq admin_appearances_path
|
||||
|
|
@ -20,6 +21,7 @@ describe 'Admin Appearance' do
|
|||
expect(page).to have_field('appearance_title', with: 'MyCompany')
|
||||
expect(page).to have_field('appearance_description', with: 'dev server')
|
||||
expect(page).to have_field('appearance_new_project_guidelines', with: 'Custom project guidelines')
|
||||
expect(page).to have_field('appearance_profile_image_guidelines', with: 'Custom profile image guidelines')
|
||||
expect(page).to have_content 'Last edit'
|
||||
end
|
||||
|
||||
|
|
@ -86,6 +88,22 @@ describe 'Admin Appearance' do
|
|||
expect_custom_new_project_appearance(appearance)
|
||||
end
|
||||
|
||||
context 'Profile page with custom profile image guidelines' do
|
||||
before do
|
||||
sign_in(create(:admin))
|
||||
visit admin_appearances_path
|
||||
fill_in 'appearance_profile_image_guidelines', with: 'Custom profile image guidelines, please :smile:!'
|
||||
click_button 'Update appearance settings'
|
||||
end
|
||||
|
||||
it 'renders guidelines when set' do
|
||||
sign_in create(:user)
|
||||
visit profile_path
|
||||
|
||||
expect(page).to have_content 'Custom profile image guidelines, please 😄!'
|
||||
end
|
||||
end
|
||||
|
||||
it 'Appearance logo' do
|
||||
sign_in(create(:admin))
|
||||
visit admin_appearances_path
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe AlertManagement::AlertsFinder, '#execute' do
|
||||
let_it_be(:current_user) { create(:user) }
|
||||
let_it_be(:project) { create(:project) }
|
||||
let_it_be(:alert_1) { create(:alert_management_alert, project: project) }
|
||||
let_it_be(:alert_2) { create(:alert_management_alert, project: project) }
|
||||
let_it_be(:alert_3) { create(:alert_management_alert) }
|
||||
let(:params) { {} }
|
||||
|
||||
subject { described_class.new(current_user, project, params).execute }
|
||||
|
||||
context 'user is not a developer or above' do
|
||||
it { is_expected.to be_empty }
|
||||
end
|
||||
|
||||
context 'user is developer' do
|
||||
before do
|
||||
project.add_developer(current_user)
|
||||
end
|
||||
|
||||
context 'empty params' do
|
||||
it { is_expected.to contain_exactly(alert_1, alert_2) }
|
||||
end
|
||||
|
||||
context 'iid given' do
|
||||
let(:params) { { iid: alert_1.iid } }
|
||||
|
||||
it { is_expected.to match_array(alert_1) }
|
||||
|
||||
context 'unknown iid' do
|
||||
let(:params) { { iid: 'unknown' } }
|
||||
|
||||
it { is_expected.to be_empty }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"description":"Nisi et repellendus ut enim quo accusamus vel magnam.","import_type":"gitlab_project","creator_id":123,"visibility_level":10,"archived":false,"deploy_keys":[],"hooks":[]}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/auto_devops.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/auto_devops.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"created_at":"2017-10-19T15:36:23.466Z","updated_at":"2017-10-19T15:36:23.466Z","enabled":null,"deploy_strategy":"continuous"}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":29,"project_id":49,"created_at":"2019-06-06T14:01:06.204Z","updated_at":"2019-06-06T14:22:37.045Z","name":"TestBoardABC","milestone_id":null,"group_id":null,"weight":null,"lists":[{"id":59,"board_id":29,"label_id":null,"list_type":"backlog","position":null,"created_at":"2019-06-06T14:01:06.214Z","updated_at":"2019-06-06T14:01:06.214Z","user_id":null,"milestone_id":null},{"id":61,"board_id":29,"label_id":20,"list_type":"label","position":0,"created_at":"2019-06-06T14:01:43.197Z","updated_at":"2019-06-06T14:01:43.197Z","user_id":null,"milestone_id":null,"label":{"id":20,"title":"testlabel","color":"#0033CC","project_id":49,"created_at":"2019-06-06T14:01:19.698Z","updated_at":"2019-06-06T14:01:19.698Z","template":false,"description":null,"group_id":null,"type":"ProjectLabel","priorities":[]}},{"id":60,"board_id":29,"label_id":null,"list_type":"closed","position":null,"created_at":"2019-06-06T14:01:06.221Z","updated_at":"2019-06-06T14:01:06.221Z","user_id":null,"milestone_id":null}]}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/ci_cd_settings.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/ci_cd_settings.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"group_runners_enabled":false}
|
||||
7
spec/fixtures/lib/gitlab/import_export/complex/tree/project/ci_pipelines.ndjson
vendored
Normal file
7
spec/fixtures/lib/gitlab/import_export/complex/tree/project/ci_pipelines.ndjson
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{"id":19,"project_id":5,"ref":"master","sha":"2ea1f3dec713d940208fb5ce4a38765ecb5d3f73","before_sha":null,"push_data":null,"created_at":"2016-03-22T15:20:35.763Z","updated_at":"2016-03-22T15:20:35.763Z","tag":null,"yaml_errors":null,"committed_at":null,"status":"failed","started_at":null,"finished_at":null,"duration":null,"stages":[{"id":24,"project_id":5,"pipeline_id":40,"name":"test","status":1,"created_at":"2016-03-22T15:44:44.772Z","updated_at":"2016-03-29T06:44:44.634Z","statuses":[{"id":79,"project_id":5,"status":"failed","finished_at":"2016-03-29T06:28:12.695Z","trace":"Sed culpa est et facere saepe vel id ab. Quas temporibus aut similique dolorem consequatur corporis aut praesentium. Cum officia molestiae sit earum excepturi.\n\nSint possimus aut ratione quia. Quis nesciunt ratione itaque illo. Tenetur est dolor assumenda possimus voluptatem quia minima. Accusamus reprehenderit ut et itaque non reiciendis incidunt.\n\nRerum suscipit quibusdam dolore nam omnis. Consequatur ipsa nihil ut enim blanditiis delectus. Nulla quis hic occaecati mollitia qui placeat. Quo rerum sed perferendis a accusantium consequatur commodi ut. Sit quae et cumque vel eius tempora nostrum.\n\nUllam dolorem et itaque sint est. Ea molestias quia provident dolorem vitae error et et. Ea expedita officiis iste non. Qui vitae odit saepe illum. Dolores enim ratione deserunt tempore expedita amet non neque.\n\nEligendi asperiores voluptatibus omnis repudiandae expedita distinctio qui aliquid. Autem aut doloremque distinctio ab. Nostrum sapiente repudiandae aspernatur ea et quae voluptas. Officiis perspiciatis nisi laudantium asperiores error eligendi ab. Eius quia amet magni omnis exercitationem voluptatum et.\n\nVoluptatem ullam labore quas dicta est ex voluptas. Pariatur ea modi voluptas consequatur dolores perspiciatis similique. Numquam in distinctio perspiciatis ut qui earum. Quidem omnis mollitia facere aut beatae. Ea est iure et voluptatem.","created_at":"2016-03-22T15:20:35.950Z","updated_at":"2016-03-29T06:28:12.696Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":40,"commands":"$ build command","job_id":null,"name":"test build 1","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null},{"id":80,"project_id":5,"status":"success","finished_at":null,"trace":"Impedit et optio nemo ipsa. Non ad non quis ut sequi laudantium omnis velit. Corporis a enim illo eos. Quia totam tempore inventore ad est.\n\nNihil recusandae cupiditate eaque voluptatem molestias sint. Consequatur id voluptatem cupiditate harum. Consequuntur iusto quaerat reiciendis aut autem libero est. Quisquam dolores veritatis rerum et sint maxime ullam libero. Id quas porro ut perspiciatis rem amet vitae.\n\nNemo inventore minus blanditiis magnam. Modi consequuntur nostrum aut voluptatem ex. Sunt rerum rem optio mollitia qui aliquam officiis officia. Aliquid eos et id aut minus beatae reiciendis.\n\nDolores non in temporibus dicta. Fugiat voluptatem est aspernatur expedita voluptatum nam qui. Quia et eligendi sit quae sint tempore exercitationem eos. Est sapiente corrupti quidem at. Qui magni odio repudiandae saepe tenetur optio dolore.\n\nEos placeat soluta at dolorem adipisci provident. Quo commodi id reprehenderit possimus quo tenetur. Ipsum et quae eligendi laborum. Et qui nesciunt at quasi quidem voluptatem cum rerum. Excepturi non facilis aut sunt vero sed.\n\nQui explicabo ratione ut eligendi recusandae. Quis quasi quas molestiae consequatur voluptatem et voluptatem. Ex repellat saepe occaecati aperiam ea eveniet dignissimos facilis.","created_at":"2016-03-22T15:20:35.966Z","updated_at":"2016-03-22T15:20:35.966Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":40,"commands":"$ build command","job_id":null,"name":"test build 2","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null}]}]}
|
||||
{"id":20,"project_id":5,"ref":"master","sha":"ce84140e8b878ce6e7c4d298c7202ff38170e3ac","before_sha":null,"push_data":null,"created_at":"2016-03-22T15:20:35.763Z","updated_at":"2016-03-22T15:20:35.763Z","tag":false,"yaml_errors":null,"committed_at":null,"status":"failed","started_at":null,"finished_at":null,"duration":null,"stages":[],"source":"external_pull_request_event","external_pull_request":{"id":3,"pull_request_iid":4,"source_branch":"feature","target_branch":"master","source_repository":"the-repository","target_repository":"the-repository","source_sha":"ce84140e8b878ce6e7c4d298c7202ff38170e3ac","target_sha":"a09386439ca39abe575675ffd4b89ae824fec22f","status":"open","created_at":"2016-03-22T15:20:35.763Z","updated_at":"2016-03-22T15:20:35.763Z"}}
|
||||
{"id":26,"project_id":5,"ref":"master","sha":"048721d90c449b244b7b4c53a9186b04330174ec","before_sha":null,"push_data":null,"created_at":"2016-03-22T15:20:35.757Z","updated_at":"2016-03-22T15:20:35.757Z","tag":false,"yaml_errors":null,"committed_at":null,"status":"failed","started_at":null,"finished_at":null,"duration":null,"source":"merge_request_event","merge_request_id":27,"stages":[{"id":21,"project_id":5,"pipeline_id":37,"name":"test","status":1,"created_at":"2016-03-22T15:44:44.772Z","updated_at":"2016-03-29T06:44:44.634Z","statuses":[{"id":74,"project_id":5,"status":"success","finished_at":null,"trace":"Ad ut quod repudiandae iste dolor doloribus. Adipisci consequuntur deserunt omnis quasi eveniet et sed fugit. Aut nemo omnis molestiae impedit ex consequatur ducimus. Voluptatum exercitationem quia aut est et hic dolorem.\n\nQuasi repellendus et eaque magni eum facilis. Dolorem aperiam nam nihil pariatur praesentium ad aliquam. Commodi enim et eos tenetur. Odio voluptatibus laboriosam mollitia rerum exercitationem magnam consequuntur. Tenetur ea vel eum corporis.\n\nVoluptatibus optio in aliquid est voluptates. Ad a ut ab placeat vero blanditiis. Earum aspernatur quia beatae expedita voluptatem dignissimos provident. Quis minima id nemo ut aut est veritatis provident.\n\nRerum voluptatem quidem eius maiores magnam veniam. Voluptatem aperiam aut voluptate et nulla deserunt voluptas. Quaerat aut accusantium laborum est dolorem architecto reiciendis. Aliquam asperiores doloribus omnis maxime enim nesciunt. Eum aut rerum repellendus debitis et ut eius.\n\nQuaerat assumenda ea sit consequatur autem in. Cum eligendi voluptatem quo sed. Ut fuga iusto cupiditate autem sint.\n\nOfficia totam officiis architecto corporis molestiae amet ut. Tempora sed dolorum rerum omnis voluptatem accusantium sit eum. Quia debitis ipsum quidem aliquam inventore sunt consequatur qui.","created_at":"2016-03-22T15:20:35.846Z","updated_at":"2016-03-22T15:20:35.846Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":37,"commands":"$ build command","job_id":null,"name":"test build 2","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null},{"id":73,"project_id":5,"status":"canceled","finished_at":null,"trace":null,"created_at":"2016-03-22T15:20:35.842Z","updated_at":"2016-03-22T15:20:35.842Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":37,"commands":"$ build command","job_id":null,"name":"test build 1","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null}]}],"merge_request":{"id":27,"target_branch":"feature","source_branch":"feature_conflict","source_project_id":2147483547,"author_id":1,"assignee_id":null,"title":"MR1","created_at":"2016-06-14T15:02:36.568Z","updated_at":"2016-06-14T15:02:56.815Z","state":"opened","merge_status":"unchecked","target_project_id":5,"iid":9,"description":null,"position":0,"updated_by_id":null,"merge_error":null,"diff_head_sha":"HEAD","source_branch_sha":"ABCD","target_branch_sha":"DCBA","merge_params":{"force_remove_source_branch":null}}}
|
||||
{"id":36,"project_id":5,"ref":null,"sha":"sha-notes","before_sha":null,"push_data":null,"created_at":"2016-03-22T15:20:35.755Z","updated_at":"2016-03-22T15:20:35.755Z","tag":null,"yaml_errors":null,"committed_at":null,"status":"failed","started_at":null,"finished_at":null,"user_id":2147483547,"duration":null,"source":"push","merge_request_id":null,"notes":[{"id":2147483547,"note":"Natus rerum qui dolorem dolorum voluptas.","noteable_type":"Commit","author_id":1,"created_at":"2016-03-22T15:19:59.469Z","updated_at":"2016-03-22T15:19:59.469Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":"be93687618e4b132087f430a4d8fc3a609c9b77c","noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"}}],"stages":[{"id":11,"project_id":5,"pipeline_id":36,"name":"test","status":1,"created_at":"2016-03-22T15:44:44.772Z","updated_at":"2016-03-29T06:44:44.634Z","statuses":[{"id":71,"project_id":5,"status":"failed","finished_at":"2016-03-29T06:28:12.630Z","trace":null,"created_at":"2016-03-22T15:20:35.772Z","updated_at":"2016-03-29T06:28:12.634Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":36,"commands":"$ build command","job_id":null,"name":"test build 1","deploy":false,"options":{"image":"busybox:latest"},"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"stage_id":11,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null,"type":"Ci::Build","token":"abcd","artifacts_file_store":1,"artifacts_metadata_store":1,"artifacts_size":10},{"id":72,"project_id":5,"status":"success","finished_at":null,"trace":"Porro ea qui ut dolores. Labore ab nemo explicabo aspernatur quis voluptates corporis. Et quasi delectus est sit aperiam perspiciatis asperiores. Repudiandae cum aut consectetur accusantium officia sunt.\n\nQuidem dolore iusto quaerat ut aut inventore et molestiae. Libero voluptates atque nemo qui. Nulla temporibus ipsa similique facere.\n\nAliquam ipsam perferendis qui fugit accusantium omnis id voluptatum. Dignissimos aliquid dicta eos voluptatem assumenda quia. Sed autem natus unde dolor et non nisi et. Consequuntur nihil consequatur rerum est.\n\nSimilique neque est iste ducimus qui fuga cupiditate. Libero autem est aut fuga. Consectetur natus quis non ducimus ut dolore. Magni voluptatibus eius et maxime aut.\n\nAd officiis tempore voluptate vitae corrupti explicabo labore est. Consequatur expedita et sunt nihil aut. Deleniti porro iusto molestiae et beatae.\n\nDeleniti modi nulla qui et labore sequi corrupti. Qui voluptatem assumenda eum cupiditate et. Nesciunt ipsam ut ea possimus eum. Consectetur quidem suscipit atque dolore itaque voluptatibus et cupiditate.","created_at":"2016-03-22T15:20:35.777Z","updated_at":"2016-03-22T15:20:35.777Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":36,"commands":"$ deploy command","job_id":null,"name":"test build 2","deploy":false,"options":null,"allow_failure":false,"stage":"deploy","trigger_request_id":null,"stage_idx":1,"stage_id":12,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null}]},{"id":12,"project_id":5,"pipeline_id":36,"name":"deploy","status":2,"created_at":"2016-03-22T15:45:45.772Z","updated_at":"2016-03-29T06:45:45.634Z"}]}
|
||||
{"id":38,"iid":1,"project_id":5,"ref":"master","sha":"5f923865dde3436854e9ceb9cdb7815618d4e849","before_sha":null,"push_data":null,"created_at":"2016-03-22T15:20:35.759Z","updated_at":"2016-03-22T15:20:35.759Z","tag":null,"yaml_errors":null,"committed_at":null,"status":"failed","started_at":null,"finished_at":null,"duration":null,"stages":[{"id":22,"project_id":5,"pipeline_id":38,"name":"test","status":1,"created_at":"2016-03-22T15:44:44.772Z","updated_at":"2016-03-29T06:44:44.634Z","statuses":[{"id":76,"project_id":5,"status":"success","finished_at":null,"trace":"Et rerum quia ea cumque ut modi non. Libero eaque ipsam architecto maiores expedita deleniti. Ratione quia qui est id.\n\nQuod sit officiis sed unde inventore veniam quisquam velit. Ea harum cum quibusdam quisquam minima quo possimus non. Temporibus itaque aliquam aut rerum veritatis at.\n\nMagnam ipsum eius recusandae qui quis sit maiores eum. Et animi iusto aut itaque. Doloribus harum deleniti nobis accusantium et libero.\n\nRerum fuga perferendis magni commodi officiis id repudiandae. Consequatur ratione consequatur suscipit facilis sunt iure est dicta. Qui unde quasi facilis et quae nesciunt. Magnam iste et nobis officiis tenetur. Aspernatur quo et temporibus non in.\n\nNisi rerum velit est ad enim sint molestiae consequuntur. Quaerat nisi nesciunt quasi officiis. Possimus non blanditiis laborum quos.\n\nRerum laudantium facere animi qui. Ipsa est iusto magnam nihil. Enim omnis occaecati non dignissimos ut recusandae eum quasi. Qui maxime dolor et nemo voluptates incidunt quia.","created_at":"2016-03-22T15:20:35.882Z","updated_at":"2016-03-22T15:20:35.882Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":38,"commands":"$ build command","job_id":null,"name":"test build 2","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null},{"id":75,"project_id":5,"status":"failed","finished_at":null,"trace":"Sed et iste recusandae dicta corporis. Sunt alias porro fugit sunt. Fugiat omnis nihil dignissimos aperiam explicabo doloremque sit aut. Harum fugit expedita quia rerum ut consequatur laboriosam aliquam.\n\nNatus libero ut ut tenetur earum. Tempora omnis autem omnis et libero dolores illum autem. Deleniti eos sunt mollitia ipsam. Cum dolor repellendus dolorum sequi officia. Ullam sunt in aut pariatur excepturi.\n\nDolor nihil debitis et est eos. Cumque eos eum saepe ducimus autem. Alias architecto consequatur aut pariatur possimus. Aut quos aut incidunt quam velit et. Quas voluptatum ad dolorum dignissimos.\n\nUt voluptates consectetur illo et. Est commodi accusantium vel quo. Eos qui fugiat soluta porro.\n\nRatione possimus alias vel maxime sint totam est repellat. Ipsum corporis eos sint voluptatem eos odit. Temporibus libero nulla harum eligendi labore similique ratione magnam. Suscipit sequi in omnis neque.\n\nLaudantium dolor amet omnis placeat mollitia aut molestiae. Aut rerum similique ipsum quod illo quas unde. Sunt aut veritatis eos omnis porro. Rem veritatis mollitia praesentium dolorem. Consequatur sequi ad cumque earum omnis quia necessitatibus.","created_at":"2016-03-22T15:20:35.864Z","updated_at":"2016-03-22T15:20:35.864Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":38,"commands":"$ build command","job_id":null,"name":"test build 1","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null}]}]}
|
||||
{"id":39,"project_id":5,"ref":"master","sha":"d2d430676773caa88cdaf7c55944073b2fd5561a","before_sha":null,"push_data":null,"created_at":"2016-03-22T15:20:35.761Z","updated_at":"2016-03-22T15:20:35.761Z","tag":null,"yaml_errors":null,"committed_at":null,"status":"failed","started_at":null,"finished_at":null,"duration":null,"stages":[{"id":23,"project_id":5,"pipeline_id":39,"name":"test","status":1,"created_at":"2016-03-22T15:44:44.772Z","updated_at":"2016-03-29T06:44:44.634Z","statuses":[{"id":78,"project_id":5,"status":"success","finished_at":null,"trace":"Dolorem deserunt quas quia error hic quo cum vel. Natus voluptatem cumque expedita numquam odit. Eos expedita nostrum corporis consequatur est recusandae.\n\nCulpa blanditiis rerum repudiandae alias voluptatem. Velit iusto est ullam consequatur doloribus porro. Corporis voluptas consectetur est veniam et quia quae.\n\nEt aut magni fuga nesciunt officiis molestias. Quaerat et nam necessitatibus qui rerum. Architecto quia officiis voluptatem laborum est recusandae. Quasi ducimus soluta odit necessitatibus labore numquam dignissimos. Quia facere sint temporibus inventore sunt nihil saepe dolorum.\n\nFacere dolores quis dolores a. Est minus nostrum nihil harum. Earum laborum et ipsum unde neque sit nemo. Corrupti est consequatur minima fugit. Illum voluptatem illo error ducimus officia qui debitis.\n\nDignissimos porro a autem harum aut. Aut id reprehenderit et exercitationem. Est et quisquam ipsa temporibus molestiae. Architecto natus dolore qui fugiat incidunt. Autem odit veniam excepturi et voluptatibus culpa ipsum eos.\n\nAmet quo quisquam dignissimos soluta modi dolores. Sint omnis eius optio corporis dolor. Eligendi animi porro quia placeat ut.","created_at":"2016-03-22T15:20:35.927Z","updated_at":"2016-03-22T15:20:35.927Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":39,"commands":"$ build command","job_id":null,"name":"test build 2","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null},{"id":77,"project_id":5,"status":"failed","finished_at":null,"trace":"Rerum ut et suscipit est perspiciatis. Inventore debitis cum eius vitae. Ex incidunt id velit aut quo nisi. Laboriosam repellat deserunt eius reiciendis architecto et. Est harum quos nesciunt nisi consectetur.\n\nAlias esse omnis sint officia est consequatur in nobis. Dignissimos dolorum vel eligendi nesciunt dolores sit. Veniam mollitia ducimus et exercitationem molestiae libero sed. Atque omnis debitis laudantium voluptatibus qui. Repellendus tempore est commodi pariatur.\n\nExpedita voluptate illum est alias non. Modi nesciunt ab assumenda laborum nulla consequatur molestias doloremque. Magnam quod officia vel explicabo accusamus ut voluptatem incidunt. Rerum ut aliquid ullam saepe. Est eligendi debitis beatae blanditiis reiciendis.\n\nQui fuga sit dolores libero maiores et suscipit. Consectetur asperiores omnis minima impedit eos fugiat. Similique omnis nisi sed vero inventore ipsum aliquam exercitationem.\n\nBlanditiis magni iure dolorum omnis ratione delectus molestiae. Atque officia dolor voluptatem culpa quod. Incidunt suscipit quidem possimus veritatis non vel. Iusto aliquid et id quia quasi.\n\nVel facere velit blanditiis incidunt cupiditate sed maiores consequuntur. Quasi quia dicta consequuntur et quia voluptatem iste id. Incidunt et rerum fuga esse sint.","created_at":"2016-03-22T15:20:35.905Z","updated_at":"2016-03-22T15:20:35.905Z","started_at":null,"runner_id":null,"coverage":null,"commit_id":39,"commands":"$ build command","job_id":null,"name":"test build 1","deploy":false,"options":null,"allow_failure":false,"stage":"test","trigger_request_id":null,"stage_idx":1,"tag":null,"ref":"master","user_id":null,"target_url":null,"description":null,"erased_by_id":null,"erased_at":null}]}]}
|
||||
{"id":41,"project_id":5,"ref":"master","sha":"2ea1f3dec713d940208fb5ce4a38765ecb5d3f73","before_sha":null,"push_data":null,"created_at":"2016-03-22T15:20:35.763Z","updated_at":"2016-03-22T15:20:35.763Z","tag":null,"yaml_errors":null,"committed_at":null,"status":"failed","started_at":null,"finished_at":null,"duration":null,"stages":[]}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"created_at":"2019-12-13 13:45:04 UTC","updated_at":"2019-12-13 13:45:04 UTC","next_run_at":null,"project_id":5,"name_regex":null,"cadence":"3month","older_than":null,"keep_n":100,"enabled":false}
|
||||
2
spec/fixtures/lib/gitlab/import_export/complex/tree/project/custom_attributes.ndjson
vendored
Normal file
2
spec/fixtures/lib/gitlab/import_export/complex/tree/project/custom_attributes.ndjson
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{"id":1,"created_at":"2017-10-19T15:36:23.466Z","updated_at":"2017-10-19T15:36:23.466Z","project_id":5,"key":"foo","value":"foo"}
|
||||
{"id":2,"created_at":"2017-10-19T15:37:21.904Z","updated_at":"2017-10-19T15:37:21.904Z","project_id":5,"key":"bar","value":"bar"}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/error_tracking_setting.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/error_tracking_setting.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"api_url":"https://gitlab.example.com/api/0/projects/sentry-org/sentry-project","project_name":"Sentry Project","organization_name":"Sentry Org"}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/external_pull_requests.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/external_pull_requests.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":3,"pull_request_iid":4,"source_branch":"feature","target_branch":"master","source_repository":"the-repository","target_repository":"the-repository","source_sha":"ce84140e8b878ce6e7c4d298c7202ff38170e3ac","target_sha":"a09386439ca39abe575675ffd4b89ae824fec22f","status":"open","created_at":"2019-12-24T14:04:50.053Z","updated_at":"2019-12-24T14:05:18.138Z"}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,2 @@
|
|||
{"id":2,"title":"test2","color":"#428bca","project_id":8,"created_at":"2016-07-22T08:55:44.161Z","updated_at":"2016-07-22T08:55:44.161Z","template":false,"description":"","type":"ProjectLabel","priorities":[]}
|
||||
{"id":3,"title":"test3","color":"#428bca","group_id":8,"created_at":"2016-07-22T08:55:44.161Z","updated_at":"2016-07-22T08:55:44.161Z","template":false,"description":"","project_id":null,"type":"GroupLabel","priorities":[{"id":1,"project_id":5,"label_id":1,"priority":1,"created_at":"2016-10-18T09:35:43.338Z","updated_at":"2016-10-18T09:35:43.338Z"}]}
|
||||
9
spec/fixtures/lib/gitlab/import_export/complex/tree/project/merge_requests.ndjson
vendored
Normal file
9
spec/fixtures/lib/gitlab/import_export/complex/tree/project/merge_requests.ndjson
vendored
Normal file
File diff suppressed because one or more lines are too long
3
spec/fixtures/lib/gitlab/import_export/complex/tree/project/milestones.ndjson
vendored
Normal file
3
spec/fixtures/lib/gitlab/import_export/complex/tree/project/milestones.ndjson
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{"id":1,"title":"test milestone","project_id":8,"description":"test milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"events":[{"id":487,"target_type":"Milestone","target_id":1,"project_id":46,"created_at":"2016-06-14T15:02:04.418Z","updated_at":"2016-06-14T15:02:04.418Z","action":1,"author_id":18}]}
|
||||
{"id":20,"title":"v4.0","project_id":5,"description":"Totam quam laborum id magnam natus eaque aspernatur.","due_date":null,"created_at":"2016-06-14T15:02:04.590Z","updated_at":"2016-06-14T15:02:04.590Z","state":"active","iid":5,"events":[{"id":240,"target_type":"Milestone","target_id":20,"project_id":36,"created_at":"2016-06-14T15:02:04.593Z","updated_at":"2016-06-14T15:02:04.593Z","action":1,"author_id":1},{"id":60,"target_type":"Milestone","target_id":20,"project_id":5,"created_at":"2016-06-14T15:02:04.593Z","updated_at":"2016-06-14T15:02:04.593Z","action":1,"author_id":20}]}
|
||||
{"id":19,"title":"v3.0","project_id":5,"description":"Rerum at autem exercitationem ea voluptates harum quam placeat.","due_date":null,"created_at":"2016-06-14T15:02:04.583Z","updated_at":"2016-06-14T15:02:04.583Z","state":"active","iid":4,"events":[{"id":241,"target_type":"Milestone","target_id":19,"project_id":36,"created_at":"2016-06-14T15:02:04.585Z","updated_at":"2016-06-14T15:02:04.585Z","action":1,"author_id":1},{"id":59,"target_type":"Milestone","target_id":19,"project_id":5,"created_at":"2016-06-14T15:02:04.585Z","updated_at":"2016-06-14T15:02:04.585Z","action":1,"author_id":25}]}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/pipeline_schedules.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/pipeline_schedules.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"description":"Schedule Description","ref":"master","cron":"0 4 * * 0","cron_timezone":"UTC","next_run_at":"2019-12-29T04:19:00.000Z","project_id":5,"owner_id":1,"active":true,"created_at":"2019-12-26T10:14:57.778Z","updated_at":"2019-12-26T10:14:57.778Z"}
|
||||
2
spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_badges.ndjson
vendored
Normal file
2
spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_badges.ndjson
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{"id":1,"created_at":"2017-10-19T15:36:23.466Z","updated_at":"2017-10-19T15:36:23.466Z","project_id":5,"type":"ProjectBadge","link_url":"http://www.example.com","image_url":"http://www.example.com"}
|
||||
{"id":2,"created_at":"2017-10-19T15:36:23.466Z","updated_at":"2017-10-19T15:36:23.466Z","project_id":5,"type":"ProjectBadge","link_url":"http://www.example.com","image_url":"http://www.example.com"}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_feature.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_feature.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"builds_access_level":10,"created_at":"2014-12-26T09:26:45.000Z","id":2,"issues_access_level":10,"merge_requests_access_level":10,"project_id":4,"snippets_access_level":10,"updated_at":"2016-09-23T11:58:28.000Z","wiki_access_level":10}
|
||||
4
spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_members.ndjson
vendored
Normal file
4
spec/fixtures/lib/gitlab/import_export/complex/tree/project/project_members.ndjson
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{"id":36,"access_level":40,"source_id":5,"source_type":"Project","user_id":16,"notification_level":3,"created_at":"2016-06-14T15:02:03.834Z","updated_at":"2016-06-14T15:02:03.834Z","created_by_id":null,"invite_email":null,"invite_token":null,"invite_accepted_at":null,"requested_at":null,"user":{"id":16,"email":"bernard_willms@gitlabexample.com","username":"bernard_willms"}}
|
||||
{"id":35,"access_level":10,"source_id":5,"source_type":"Project","user_id":6,"notification_level":3,"created_at":"2016-06-14T15:02:03.811Z","updated_at":"2016-06-14T15:02:03.811Z","created_by_id":null,"invite_email":null,"invite_token":null,"invite_accepted_at":null,"requested_at":null,"user":{"id":6,"email":"saul_will@gitlabexample.com","username":"saul_will"}}
|
||||
{"id":34,"access_level":20,"source_id":5,"source_type":"Project","user_id":15,"notification_level":3,"created_at":"2016-06-14T15:02:03.776Z","updated_at":"2016-06-14T15:02:03.776Z","created_by_id":null,"invite_email":null,"invite_token":null,"invite_accepted_at":null,"requested_at":null,"user":{"id":15,"email":"breanna_sanford@wolf.com","username":"emmet.schamberger"}}
|
||||
{"id":33,"access_level":20,"source_id":5,"source_type":"Project","user_id":26,"notification_level":3,"created_at":"2016-06-14T15:02:03.742Z","updated_at":"2016-06-14T15:02:03.742Z","created_by_id":null,"invite_email":null,"invite_token":null,"invite_accepted_at":null,"requested_at":null,"user":{"id":26,"email":"user4@example.com","username":"user4"}}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/protected_branches.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/protected_branches.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"project_id":9,"name":"master","created_at":"2016-08-30T07:32:52.426Z","updated_at":"2016-08-30T07:32:52.426Z","merge_access_levels":[{"id":1,"protected_branch_id":1,"access_level":40,"created_at":"2016-08-30T07:32:52.458Z","updated_at":"2016-08-30T07:32:52.458Z"}],"push_access_levels":[{"id":1,"protected_branch_id":1,"access_level":40,"created_at":"2016-08-30T07:32:52.490Z","updated_at":"2016-08-30T07:32:52.490Z"}]}
|
||||
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/protected_tags.ndjson
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/complex/tree/project/protected_tags.ndjson
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"project_id":9,"name":"v*","created_at":"2017-04-04T13:48:13.426Z","updated_at":"2017-04-04T13:48:13.426Z","create_access_levels":[{"id":1,"protected_tag_id":1,"access_level":40,"created_at":"2017-04-04T13:48:13.458Z","updated_at":"2017-04-04T13:48:13.458Z"}]}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"tag":"release-1.1","description":"Some release notes","project_id":5,"created_at":"2019-12-26T10:17:14.621Z","updated_at":"2019-12-26T10:17:14.621Z","author_id":1,"name":"release-1.1","sha":"901de3a8bd5573f4a049b1457d28bc1592ba6bf9","released_at":"2019-12-26T10:17:14.615Z","links":[{"id":1,"release_id":1,"url":"http://localhost/namespace6/project6/-/jobs/140463678/artifacts/download","name":"release-1.1.dmg","created_at":"2019-12-26T10:17:14.621Z","updated_at":"2019-12-26T10:17:14.621Z"}]}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{"id":101,"title":"YouTrack","project_id":5,"created_at":"2016-06-14T15:01:51.327Z","updated_at":"2016-06-14T15:01:51.327Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"YoutrackService","category":"issue_tracker","default":false,"wiki_page_events":true}
|
||||
{"id":100,"title":"JetBrains TeamCity CI","project_id":5,"created_at":"2016-06-14T15:01:51.315Z","updated_at":"2016-06-14T15:01:51.315Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"TeamcityService","category":"ci","default":false,"wiki_page_events":true}
|
||||
{"id":99,"title":"Slack","project_id":5,"created_at":"2016-06-14T15:01:51.303Z","updated_at":"2016-06-14T15:01:51.303Z","active":false,"properties":{"notify_only_broken_pipelines":true},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"pipeline_events":true,"type":"SlackService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":98,"title":"Redmine","project_id":5,"created_at":"2016-06-14T15:01:51.289Z","updated_at":"2016-06-14T15:01:51.289Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"RedmineService","category":"issue_tracker","default":false,"wiki_page_events":true}
|
||||
{"id":97,"title":"Pushover","project_id":5,"created_at":"2016-06-14T15:01:51.277Z","updated_at":"2016-06-14T15:01:51.277Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"PushoverService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":96,"title":"PivotalTracker","project_id":5,"created_at":"2016-06-14T15:01:51.267Z","updated_at":"2016-06-14T15:01:51.267Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"PivotalTrackerService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":95,"title":"Jira","project_id":5,"created_at":"2016-06-14T15:01:51.255Z","updated_at":"2016-06-14T15:01:51.255Z","active":false,"properties":{"api_url":"","jira_issue_transition_id":"2"},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"JiraService","category":"issue_tracker","default":false,"wiki_page_events":true}
|
||||
{"id":94,"title":"Irker (IRC gateway)","project_id":5,"created_at":"2016-06-14T15:01:51.232Z","updated_at":"2016-06-14T15:01:51.232Z","active":true,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"IrkerService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":93,"title":"HipChat","project_id":5,"created_at":"2016-06-14T15:01:51.219Z","updated_at":"2016-06-14T15:01:51.219Z","active":false,"properties":{"notify_only_broken_pipelines":true},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"pipeline_events":true,"type":"HipchatService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":91,"title":"Flowdock","project_id":5,"created_at":"2016-06-14T15:01:51.182Z","updated_at":"2016-06-14T15:01:51.182Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"FlowdockService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":90,"title":"External Wiki","project_id":5,"created_at":"2016-06-14T15:01:51.166Z","updated_at":"2016-06-14T15:01:51.166Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"ExternalWikiService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":89,"title":"Emails on push","project_id":5,"created_at":"2016-06-14T15:01:51.153Z","updated_at":"2016-06-14T15:01:51.153Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"EmailsOnPushService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":88,"title":"Drone CI","project_id":5,"created_at":"2016-06-14T15:01:51.139Z","updated_at":"2016-06-14T15:01:51.139Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"DroneCiService","category":"ci","default":false,"wiki_page_events":true}
|
||||
{"id":87,"title":"Custom Issue Tracker","project_id":5,"created_at":"2016-06-14T15:01:51.125Z","updated_at":"2016-06-14T15:01:51.125Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"CustomIssueTrackerService","category":"issue_tracker","default":false,"wiki_page_events":true}
|
||||
{"id":86,"title":"Campfire","project_id":5,"created_at":"2016-06-14T15:01:51.113Z","updated_at":"2016-06-14T15:01:51.113Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"CampfireService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":84,"title":"Buildkite","project_id":5,"created_at":"2016-06-14T15:01:51.080Z","updated_at":"2016-06-14T15:01:51.080Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"BuildkiteService","category":"ci","default":false,"wiki_page_events":true}
|
||||
{"id":83,"title":"Atlassian Bamboo CI","project_id":5,"created_at":"2016-06-14T15:01:51.067Z","updated_at":"2016-06-14T15:01:51.067Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"BambooService","category":"ci","default":false,"wiki_page_events":true}
|
||||
{"id":82,"title":"Assembla","project_id":5,"created_at":"2016-06-14T15:01:51.047Z","updated_at":"2016-06-14T15:01:51.047Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"AssemblaService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":81,"title":"Asana","project_id":5,"created_at":"2016-06-14T15:01:51.031Z","updated_at":"2016-06-14T15:01:51.031Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"AsanaService","category":"common","default":false,"wiki_page_events":true}
|
||||
{"id":101,"title":"JenkinsDeprecated","project_id":5,"created_at":"2016-06-14T15:01:51.031Z","updated_at":"2016-06-14T15:01:51.031Z","active":false,"properties":{},"template":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"category":"common","default":false,"wiki_page_events":true,"type":"JenkinsDeprecatedService"}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"title":"Test snippet title","content":"x = 1","author_id":1,"project_id":1,"created_at":"2019-11-05T15:06:06.579Z","updated_at":"2019-11-05T15:06:06.579Z","file_name":"","visibility_level":20,"description":"Test snippet description","award_emoji":[{"id":1,"name":"thumbsup","user_id":1,"awardable_type":"Snippet","awardable_id":1,"created_at":"2019-11-05T15:37:21.287Z","updated_at":"2019-11-05T15:37:21.287Z"},{"id":2,"name":"coffee","user_id":1,"awardable_type":"Snippet","awardable_id":1,"created_at":"2019-11-05T15:37:24.645Z","updated_at":"2019-11-05T15:37:24.645Z"}],"notes":[{"id":872,"note":"This is a test note","noteable_type":"Snippet","author_id":1,"created_at":"2019-11-05T15:37:24.645Z","updated_at":"2019-11-05T15:37:24.645Z","noteable_id":1,"author":{"name":"Random name"},"events":[],"award_emoji":[{"id":12,"name":"thumbsup","user_id":1,"awardable_type":"Note","awardable_id":872,"created_at":"2019-11-05T15:37:21.287Z","updated_at":"2019-11-05T15:37:21.287Z"}]}]}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
{"id":123,"token":"cdbfasdf44a5958c83654733449e585","project_id":5,"owner_id":1,"created_at":"2017-01-16T15:25:28.637Z","updated_at":"2017-01-16T15:25:28.637Z"}
|
||||
{"id":456,"token":"33a66349b5ad01fc00174af87804e40","project_id":5,"created_at":"2017-01-16T15:25:29.637Z","updated_at":"2017-01-16T15:25:29.637Z"}
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"id":5,"description":"Nisi et repellendus ut enim quo accusamus vel magnam.","visibility_level":10,"archived":false,"hooks":[]}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{"id":1,"title":"Fugiat est minima quae maxime non similique.","assignee_id":null,"project_id":8,"author_id":1,"created_at":"2017-07-07T18:13:01.138Z","updated_at":"2017-08-15T18:37:40.807Z","branch_name":null,"description":"Quam totam fuga numquam in eveniet.","state":"opened","iid":1,"updated_by_id":1,"confidential":false,"due_date":null,"moved_to_id":null,"lock_version":null,"time_estimate":0,"closed_at":null,"last_edited_at":null,"last_edited_by_id":null,"group_milestone_id":null,"milestone":{"id":1,"title":"Project milestone","project_id":8,"description":"Project-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":null},"label_links":[{"id":11,"label_id":6,"target_id":1,"target_type":"Issue","created_at":"2017-08-15T18:37:40.795Z","updated_at":"2017-08-15T18:37:40.795Z","label":{"id":6,"title":"group label","color":"#A8D695","project_id":null,"created_at":"2017-08-15T18:37:19.698Z","updated_at":"2017-08-15T18:37:19.698Z","template":false,"description":"","group_id":5,"type":"GroupLabel","priorities":[]}},{"id":11,"label_id":2,"target_id":1,"target_type":"Issue","created_at":"2017-08-15T18:37:40.795Z","updated_at":"2017-08-15T18:37:40.795Z","label":{"id":6,"title":"A project label","color":"#A8D695","project_id":null,"created_at":"2017-08-15T18:37:19.698Z","updated_at":"2017-08-15T18:37:19.698Z","template":false,"description":"","group_id":5,"type":"ProjectLabel","priorities":[]}}]}
|
||||
{"id":2,"title":"Fugiat est minima quae maxime non similique.","assignee_id":null,"project_id":8,"author_id":1,"created_at":"2017-07-07T18:13:01.138Z","updated_at":"2017-08-15T18:37:40.807Z","branch_name":null,"description":"Quam totam fuga numquam in eveniet.","state":"closed","iid":2,"updated_by_id":1,"confidential":false,"due_date":null,"moved_to_id":null,"lock_version":null,"time_estimate":0,"closed_at":null,"last_edited_at":null,"last_edited_by_id":null,"group_milestone_id":null,"milestone":{"id":2,"title":"A group milestone","description":"Group-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":100},"label_links":[{"id":11,"label_id":2,"target_id":1,"target_type":"Issue","created_at":"2017-08-15T18:37:40.795Z","updated_at":"2017-08-15T18:37:40.795Z","label":{"id":2,"title":"A project label","color":"#A8D695","project_id":null,"created_at":"2017-08-15T18:37:19.698Z","updated_at":"2017-08-15T18:37:19.698Z","template":false,"description":"","group_id":5,"type":"ProjectLabel","priorities":[]}}]}
|
||||
{"id":3,"title":"Issue with Epic","author_id":1,"project_id":8,"created_at":"2019-12-08T19:41:11.233Z","updated_at":"2019-12-08T19:41:53.194Z","position":0,"branch_name":null,"description":"Donec at nulla vitae sem molestie rutrum ut at sem.","state":"opened","iid":3,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"issue_assignees":[],"notes":[],"milestone":{"id":2,"title":"A group milestone","description":"Group-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":100},"epic_issue":{"id":78,"relative_position":1073740323,"epic":{"id":1,"group_id":5,"author_id":1,"assignee_id":null,"iid":1,"updated_by_id":null,"last_edited_by_id":null,"lock_version":0,"start_date":null,"end_date":null,"last_edited_at":null,"created_at":"2019-12-08T19:37:07.098Z","updated_at":"2019-12-08T19:43:11.568Z","title":"An epic","description":null,"start_date_sourcing_milestone_id":null,"due_date_sourcing_milestone_id":null,"start_date_fixed":null,"due_date_fixed":null,"start_date_is_fixed":null,"due_date_is_fixed":null,"closed_by_id":null,"closed_at":null,"parent_id":null,"relative_position":null,"state_id":"opened","start_date_sourcing_epic_id":null,"due_date_sourcing_epic_id":null,"milestone_id":null}}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":2,"title":"A project label","color":"#428bca","project_id":8,"created_at":"2016-07-22T08:55:44.161Z","updated_at":"2016-07-22T08:55:44.161Z","template":false,"description":"","type":"ProjectLabel","priorities":[{"id":1,"project_id":5,"label_id":1,"priority":1,"created_at":"2016-10-18T09:35:43.338Z","updated_at":"2016-10-18T09:35:43.338Z"}]}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"title":"Project milestone","project_id":8,"description":"Project-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":null}
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"invalid" json}
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"description":"Nisi et repellendus ut enim quo accusamus vel magnam.","import_type":"gitlab_project","creator_id":2147483547,"visibility_level":10,"archived":false,"hooks":[]}
|
||||
2
spec/fixtures/lib/gitlab/import_export/light/tree/project/custom_attributes.ndjson
vendored
Normal file
2
spec/fixtures/lib/gitlab/import_export/light/tree/project/custom_attributes.ndjson
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{"id":201,"project_id":5,"created_at":"2016-06-14T15:01:51.315Z","updated_at":"2016-06-14T15:01:51.315Z","key":"color","value":"red"}
|
||||
{"id":202,"project_id":5,"created_at":"2016-06-14T15:01:51.315Z","updated_at":"2016-06-14T15:01:51.315Z","key":"size","value":"small"}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"title":"Fugiat est minima quae maxime non similique.","assignee_id":null,"project_id":8,"author_id":1,"created_at":"2017-07-07T18:13:01.138Z","updated_at":"2017-08-15T18:37:40.807Z","branch_name":null,"description":"Quam totam fuga numquam in eveniet.","state":"opened","iid":20,"updated_by_id":1,"confidential":false,"due_date":null,"moved_to_id":null,"lock_version":null,"time_estimate":0,"closed_at":null,"last_edited_at":null,"last_edited_by_id":null,"group_milestone_id":null,"milestone":{"id":1,"title":"A milestone","group_id":null,"description":"Project-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1},"label_links":[{"id":11,"label_id":2,"target_id":1,"target_type":"Issue","created_at":"2017-08-15T18:37:40.795Z","updated_at":"2017-08-15T18:37:40.795Z","label":{"id":6,"title":"Another label","color":"#A8D695","project_id":null,"created_at":"2017-08-15T18:37:19.698Z","updated_at":"2017-08-15T18:37:19.698Z","template":false,"description":"","group_id":null,"type":"ProjectLabel","priorities":[]}}],"notes":[{"id":20,"note":"created merge request !1 to address this issue","noteable_type":"Issue","author_id":1,"created_at":"2020-03-28T01:37:42.307Z","updated_at":"2020-03-28T01:37:42.307Z","project_id":8,"attachment":{"url":null},"line_code":null,"commit_id":null,"system":true,"st_diff":null,"updated_by_id":null,"position":null,"original_position":null,"resolved_at":null,"resolved_by_id":null,"discussion_id":null,"change_position":null,"resolved_by_push":null,"confidential":null,"type":null,"author":{"name":"Author"},"award_emoji":[],"system_note_metadata":{"id":21,"commit_count":null,"action":"merge","created_at":"2020-03-28T01:37:42.307Z","updated_at":"2020-03-28T01:37:42.307Z"},"events":[]}]}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":2,"title":"A project label","color":"#428bca","project_id":8,"created_at":"2016-07-22T08:55:44.161Z","updated_at":"2016-07-22T08:55:44.161Z","template":false,"description":"","type":"ProjectLabel","priorities":[{"id":1,"project_id":5,"label_id":1,"priority":1,"created_at":"2016-10-18T09:35:43.338Z","updated_at":"2016-10-18T09:35:43.338Z"}]}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"id":1,"title":"A milestone","project_id":8,"description":"Project-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":null}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
{"id":100,"title":"JetBrains TeamCity CI","project_id":5,"created_at":"2016-06-14T15:01:51.315Z","updated_at":"2016-06-14T15:01:51.315Z","active":false,"properties":{},"template":true,"instance":false,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"TeamcityService","category":"ci","default":false,"wiki_page_events":true}
|
||||
{"id":101,"title":"Jira","project_id":5,"created_at":"2016-06-14T15:01:51.315Z","updated_at":"2016-06-14T15:01:51.315Z","active":false,"properties":{},"template":false,"instance":true,"push_events":true,"issues_events":true,"merge_requests_events":true,"tag_push_events":true,"note_events":true,"job_events":true,"type":"JiraService","category":"ci","default":false,"wiki_page_events":true}
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"id":5,"description":"Nisi et repellendus ut enim quo accusamus vel magnam.","import_type":"gitlab_project","creator_id":123,"visibility_level":10,"archived":false,"hooks":[]}
|
||||
2
spec/fixtures/lib/gitlab/import_export/milestone-iid/tree/project/issues.ndjson
vendored
Normal file
2
spec/fixtures/lib/gitlab/import_export/milestone-iid/tree/project/issues.ndjson
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{"id":1,"title":"Fugiat est minima quae maxime non similique.","assignee_id":null,"project_id":8,"author_id":1,"created_at":"2017-07-07T18:13:01.138Z","updated_at":"2017-08-15T18:37:40.807Z","branch_name":null,"description":"Quam totam fuga numquam in eveniet.","state":"opened","iid":20,"updated_by_id":1,"confidential":false,"due_date":null,"moved_to_id":null,"lock_version":null,"time_estimate":0,"closed_at":null,"last_edited_at":null,"last_edited_by_id":null,"group_milestone_id":null,"milestone":{"id":1,"title":"Group-level milestone","description":"Group-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":8}}
|
||||
{"id":2,"title":"est minima quae maxime non similique.","assignee_id":null,"project_id":8,"author_id":1,"created_at":"2017-07-07T18:13:01.138Z","updated_at":"2017-08-15T18:37:40.807Z","branch_name":null,"description":"Quam totam fuga numquam in eveniet.","state":"opened","iid":21,"updated_by_id":1,"confidential":false,"due_date":null,"moved_to_id":null,"lock_version":null,"time_estimate":0,"closed_at":null,"last_edited_at":null,"last_edited_by_id":null,"group_milestone_id":null,"milestone":{"id":2,"title":"Another milestone","project_id":8,"description":"milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":null}}
|
||||
Binary file not shown.
1
spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree/project.json
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/tree/project.json
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":5,"approvals_before_merge":0,"archived":false,"auto_cancel_pending_pipelines":"enabled","autoclose_referenced_issues":true,"build_allow_git_fetch":true,"build_coverage_regex":null,"build_timeout":3600,"ci_config_path":null,"delete_error":null,"description":"Vim, Tmux and others","disable_overriding_approvers_per_merge_request":null,"external_authorization_classification_label":"","external_webhook_token":"D3mVYFzZkgZ5kMfcW_wx","public_builds":true,"shared_runners_enabled":true,"visibility_level":20}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"group_runners_enabled":true}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
{"before_sha":"0000000000000000000000000000000000000000","committed_at":null,"config_source":"repository_source","created_at":"2020-02-25T12:08:40.615Z","duration":61,"external_pull_request":{"created_at":"2020-02-25T12:08:40.478Z","id":59023,"project_id":17121868,"pull_request_iid":4,"source_branch":"new-branch","source_repository":"liptonshmidt/dotfiles","source_sha":"122bc4bbad5b6448089cacbe16d0bdc3534e7eda","status":"open","target_branch":"master","target_repository":"liptonshmidt/dotfiles","target_sha":"86ebe754fa12216e5c0d9d95890936e2fcc62392","updated_at":"2020-02-25T12:08:40.478Z"},"failure_reason":null,"finished_at":"2020-02-25T12:09:44.464Z","id":120842687,"iid":8,"lock_version":3,"notes":[],"project_id":17121868,"protected":false,"ref":"new-branch","sha":"122bc4bbad5b6448089cacbe16d0bdc3534e7eda","source":"external_pull_request_event","source_sha":"122bc4bbad5b6448089cacbe16d0bdc3534e7eda","stages":[],"started_at":"2020-02-25T12:08:42.511Z","status":"success","tag":false,"target_sha":"86ebe754fa12216e5c0d9d95890936e2fcc62392","updated_at":"2020-02-25T12:09:44.473Z","user_id":4087087,"yaml_errors":null}
|
||||
{"before_sha":"86ebe754fa12216e5c0d9d95890936e2fcc62392","committed_at":null,"config_source":"repository_source","created_at":"2020-02-25T12:08:37.434Z","duration":57,"external_pull_request":{"created_at":"2020-02-25T12:08:40.478Z","id":59023,"project_id":17121868,"pull_request_iid":4,"source_branch":"new-branch","source_repository":"liptonshmidt/dotfiles","source_sha":"122bc4bbad5b6448089cacbe16d0bdc3534e7eda","status":"open","target_branch":"master","target_repository":"liptonshmidt/dotfiles","target_sha":"86ebe754fa12216e5c0d9d95890936e2fcc62392","updated_at":"2020-02-25T12:08:40.478Z"},"failure_reason":null,"finished_at":"2020-02-25T12:09:36.557Z","id":120842675,"iid":7,"lock_version":3,"notes":[],"project_id":17121868,"protected":false,"ref":"new-branch","sha":"122bc4bbad5b6448089cacbe16d0bdc3534e7eda","source":"external_pull_request_event","source_sha":"122bc4bbad5b6448089cacbe16d0bdc3534e7eda","stages":[],"started_at":"2020-02-25T12:08:38.682Z","status":"success","tag":false,"target_sha":"86ebe754fa12216e5c0d9d95890936e2fcc62392","updated_at":"2020-02-25T12:09:36.565Z","user_id":4087087,"yaml_errors":null}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"created_at":"2020-02-25T12:08:40.478Z","id":59023,"project_id":17121868,"pull_request_iid":4,"source_branch":"new-branch","source_repository":"liptonshmidt/dotfiles","source_sha":"122bc4bbad5b6448089cacbe16d0bdc3534e7eda","status":"open","target_branch":"master","target_repository":"liptonshmidt/dotfiles","target_sha":"86ebe754fa12216e5c0d9d95890936e2fcc62392","updated_at":"2020-02-25T12:08:40.478Z"}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"builds_access_level":20,"created_at":"2020-02-25T11:20:09.925Z","forking_access_level":20,"id":17494715,"issues_access_level":0,"merge_requests_access_level":0,"pages_access_level":20,"project_id":17121868,"repository_access_level":20,"snippets_access_level":0,"updated_at":"2020-02-25T11:20:10.376Z","wiki_access_level":0}
|
||||
Binary file not shown.
1
spec/fixtures/lib/gitlab/import_export/with_invalid_records/tree/project.json
vendored
Normal file
1
spec/fixtures/lib/gitlab/import_export/with_invalid_records/tree/project.json
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":5,"description":"Nisi et repellendus ut enim quo accusamus vel magnam.","import_type":"gitlab_project","creator_id":999,"visibility_level":10,"archived":false,"hooks":[]}
|
||||
2
spec/fixtures/lib/gitlab/import_export/with_invalid_records/tree/project/milestones.ndjson
vendored
Normal file
2
spec/fixtures/lib/gitlab/import_export/with_invalid_records/tree/project/milestones.ndjson
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{"id":1,"title":null,"project_id":8,"description":123,"due_date":null,"created_at":"NOT A DATE","updated_at":"NOT A DATE","state":"active","iid":1,"group_id":null}
|
||||
{"id":42,"title":"A valid milestone","project_id":8,"description":"Project-level milestone","due_date":null,"created_at":"2016-06-14T15:02:04.415Z","updated_at":"2016-06-14T15:02:04.415Z","state":"active","iid":1,"group_id":null}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe Resolvers::AlertManagementAlertResolver do
|
||||
include GraphqlHelpers
|
||||
|
||||
let_it_be(:current_user) { create(:user) }
|
||||
let_it_be(:project) { create(:project) }
|
||||
let_it_be(:alert_1) { create(:alert_management_alert, project: project) }
|
||||
let_it_be(:alert_2) { create(:alert_management_alert, project: project) }
|
||||
let_it_be(:alert_other_proj) { create(:alert_management_alert) }
|
||||
|
||||
let(:args) { {} }
|
||||
|
||||
subject { resolve_alerts(args) }
|
||||
|
||||
context 'user does not have permission' do
|
||||
it { is_expected.to eq(AlertManagement::Alert.none) }
|
||||
end
|
||||
|
||||
context 'user has permission' do
|
||||
before do
|
||||
project.add_developer(current_user)
|
||||
end
|
||||
|
||||
it { is_expected.to contain_exactly(alert_1, alert_2) }
|
||||
|
||||
context 'finding by iid' do
|
||||
let(:args) { { iid: alert_1.iid } }
|
||||
|
||||
it { is_expected.to contain_exactly(alert_1) }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def resolve_alerts(args = {}, context = { current_user: current_user })
|
||||
resolve(described_class, obj: project, args: args, ctx: context)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe GitlabSchema.types['AlertManagementAlert'] do
|
||||
it { expect(described_class.graphql_name).to eq('AlertManagementAlert') }
|
||||
|
||||
it { expect(described_class).to require_graphql_authorizations(:read_alert_management_alerts) }
|
||||
|
||||
it 'exposes the expected fields' do
|
||||
expected_fields = %i[
|
||||
iid
|
||||
title
|
||||
severity
|
||||
status
|
||||
service
|
||||
monitoring_tool
|
||||
started_at
|
||||
ended_at
|
||||
event_count
|
||||
]
|
||||
|
||||
expect(described_class).to have_graphql_fields(*expected_fields)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe GitlabSchema.types['AlertManagementSeverity'] do
|
||||
it { expect(described_class.graphql_name).to eq('AlertManagementSeverity') }
|
||||
|
||||
it 'exposes all the severity values' do
|
||||
expect(described_class.values.keys).to include(*%w[CRITICAL HIGH MEDIUM LOW INFO UNKNOWN])
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe GitlabSchema.types['AlertManagementStatus'] do
|
||||
it { expect(described_class.graphql_name).to eq('AlertManagementStatus') }
|
||||
|
||||
it 'exposes all the severity values' do
|
||||
expect(described_class.values.keys).to include(*%w[TRIGGERED ACKNOWLEDGED RESOLVED IGNORED])
|
||||
end
|
||||
end
|
||||
|
|
@ -42,6 +42,7 @@ issues:
|
|||
- user_mentions
|
||||
- system_note_metadata
|
||||
- alert_management_alert
|
||||
- status_page_published_incident
|
||||
events:
|
||||
- author
|
||||
- project
|
||||
|
|
@ -638,3 +639,5 @@ epic_issue:
|
|||
system_note_metadata:
|
||||
- note
|
||||
- description_version
|
||||
status_page_published_incident:
|
||||
- issue
|
||||
|
|
|
|||
|
|
@ -10,14 +10,6 @@ describe Gitlab::ImportExport::JSON::NdjsonReader do
|
|||
let(:ndjson_reader) { described_class.new(dir_path) }
|
||||
let(:importable_path) { 'project' }
|
||||
|
||||
before :all do
|
||||
extract_archive('spec/fixtures/lib/gitlab/import_export/light', 'tree.tar.gz')
|
||||
end
|
||||
|
||||
after :all do
|
||||
cleanup_artifacts_from_extract_archive('light')
|
||||
end
|
||||
|
||||
describe '#exist?' do
|
||||
subject { ndjson_reader.exist? }
|
||||
|
||||
|
|
|
|||
|
|
@ -44,10 +44,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
end
|
||||
end
|
||||
|
||||
after(:context) do
|
||||
cleanup_artifacts_from_extract_archive('complex')
|
||||
end
|
||||
|
||||
context 'JSON' do
|
||||
it 'restores models based on JSON' do
|
||||
expect(@restored_project_json).to be_truthy
|
||||
|
|
@ -536,10 +532,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
expect(restored_project_json).to eq(true)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('light')
|
||||
end
|
||||
|
||||
it 'issue system note metadata restored successfully' do
|
||||
note_content = 'created merge request !1 to address this issue'
|
||||
note = project.issues.first.notes.select { |n| n.note.match(/#{note_content}/)}.first
|
||||
|
|
@ -586,10 +578,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
expect(restored_project_json).to eq(true)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('multi_pipeline_ref_one_external_pr')
|
||||
end
|
||||
|
||||
it_behaves_like 'restores project successfully',
|
||||
issues: 0,
|
||||
labels: 0,
|
||||
|
|
@ -620,10 +608,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
.and_raise(exception)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('light')
|
||||
end
|
||||
|
||||
it 'report post import error' do
|
||||
expect(restored_project_json).to eq(false)
|
||||
expect(shared.errors).to include('post_import_error')
|
||||
|
|
@ -646,10 +630,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
expect(restored_project_json).to eq(true)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('light')
|
||||
end
|
||||
|
||||
it_behaves_like 'restores project successfully',
|
||||
issues: 1,
|
||||
labels: 2,
|
||||
|
|
@ -678,10 +658,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
setup_reader(reader)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('light')
|
||||
end
|
||||
|
||||
it 'handles string versions of visibility_level' do
|
||||
# Project needs to be in a group for visibility level comparison
|
||||
# to happen
|
||||
|
|
@ -747,10 +723,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
expect(restored_project_json).to eq(true)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('group')
|
||||
end
|
||||
|
||||
it_behaves_like 'restores project successfully',
|
||||
issues: 3,
|
||||
labels: 2,
|
||||
|
|
@ -784,10 +756,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
setup_reader(reader)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('light')
|
||||
end
|
||||
|
||||
it 'does not import any templated services' do
|
||||
expect(restored_project_json).to eq(true)
|
||||
|
||||
|
|
@ -835,10 +803,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
setup_reader(reader)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('milestone-iid')
|
||||
end
|
||||
|
||||
it 'preserves the project milestone IID' do
|
||||
expect_any_instance_of(Gitlab::ImportExport::Shared).not_to receive(:error)
|
||||
|
||||
|
|
@ -855,10 +819,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
setup_reader(reader)
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('light')
|
||||
end
|
||||
|
||||
it 'converts empty external classification authorization labels to nil' do
|
||||
project.create_import_data(data: { override_params: { external_authorization_classification_label: "" } })
|
||||
|
||||
|
|
@ -1004,10 +964,6 @@ describe Gitlab::ImportExport::Project::TreeRestorer do
|
|||
subject
|
||||
end
|
||||
|
||||
after do
|
||||
cleanup_artifacts_from_extract_archive('with_invalid_records')
|
||||
end
|
||||
|
||||
context 'when failures occur because a relation fails to be processed' do
|
||||
it_behaves_like 'restores project successfully',
|
||||
issues: 0,
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue