Commit f0707f41 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent 31a49d92
...@@ -54,8 +54,8 @@ export default { ...@@ -54,8 +54,8 @@ export default {
<template> <template>
<li class="frequent-items-list-item-container"> <li class="frequent-items-list-item-container">
<a :href="webUrl" class="clearfix"> <a :href="webUrl" class="clearfix">
<div class="frequent-items-item-avatar-container"> <div class="frequent-items-item-avatar-container avatar-container rect-avatar s32">
<img v-if="hasAvatar" :src="avatarUrl" class="avatar rect-avatar s32" /> <img v-if="hasAvatar" :src="avatarUrl" class="avatar s32" />
<identicon <identicon
v-else v-else
:entity-id="itemId" :entity-id="itemId"
......
...@@ -99,8 +99,26 @@ export default () => { ...@@ -99,8 +99,26 @@ export default () => {
window.gon && window.gon.features && window.gon.features.junitPipelineView; window.gon && window.gon.features && window.gon.features.junitPipelineView;
if (testReportsEnabled) { if (testReportsEnabled) {
const fetchReportsAction = 'fetchReports';
testReportsStore.dispatch('setEndpoint', dataset.testReportEndpoint); testReportsStore.dispatch('setEndpoint', dataset.testReportEndpoint);
testReportsStore.dispatch('fetchReports');
const tabsElmement = document.querySelector('.pipelines-tabs');
const isTestTabActive = Boolean(
document.querySelector('.pipelines-tabs > li > a.test-tab.active'),
);
if (isTestTabActive) {
testReportsStore.dispatch(fetchReportsAction);
} else {
const tabClickHandler = e => {
if (e.target.className === 'test-tab') {
testReportsStore.dispatch(fetchReportsAction);
tabsElmement.removeEventListener('click', tabClickHandler);
}
};
tabsElmement.addEventListener('click', tabClickHandler);
}
// eslint-disable-next-line no-new // eslint-disable-next-line no-new
new Vue({ new Vue({
......
...@@ -3,33 +3,8 @@ ...@@ -3,33 +3,8 @@
background-color: $gray-light; background-color: $gray-light;
} }
.gitlab-logo {
width: 80px;
height: 80px;
}
.signup-box-container { .signup-box-container {
max-width: 900px; max-width: 960px;
&.navless-container {
padding: 35px $gl-padding;
// overriding .devise-layout-html.navless-container to support the sticky footer
// without having a header on size xs
@include media-breakpoint-down(xs) {
padding: 65px $gl-padding; // height of footer
padding-top: $gl-padding;
}
}
}
.signup-heading h2 {
font-weight: $gl-font-weight-bold;
padding: 0 $gl-padding;
font-size: $gl-font-size-28;
@include media-breakpoint-down(md) {
font-size: $gl-font-size-large;
}
} }
.signup-box { .signup-box {
......
- page_title "Sign up" - page_title "Sign up"
- if experiment_enabled?(:signup_flow) - if experiment_enabled?(:signup_flow)
.row
.col-lg-7
%h1.mb-3.font-weight-bold.text-6.mt-0
= _("Speed up your DevOps<br>with GitLab").html_safe
%p.text-3
= _("GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.")
.col-lg-5.order-12
.text-center.mb-3
%h2.font-weight-bold.gl-font-size-20= _('Register for GitLab')
= render 'devise/shared/experimental_separate_sign_up_flow_box' = render 'devise/shared/experimental_separate_sign_up_flow_box'
= render 'devise/shared/sign_in_link'
- else - else
= render 'devise/shared/signup_box' = render 'devise/shared/signup_box'
= render 'devise/shared/sign_in_link'
= render 'devise/shared/sign_in_link'
- content_for(:page_title, _('Register for GitLab'))
- max_first_name_length = max_last_name_length = 127 - max_first_name_length = max_last_name_length = 127
- max_username_length = 255 - max_username_length = 255
.signup-box.p-3.mb-2 .signup-box.p-3.mb-2
......
!!! 5 !!! 5
%html.devise-layout-html.navless{ class: system_message_class } %html.devise-layout-html.navless{ class: system_message_class }
= render "layouts/head" = render "layouts/head"
%body.ui-indigo.signup-page.application.navless{ class: "#{client_class_list}", data: { page: body_data_page, qa_selector: 'signup_page' } } %body.ui-indigo.signup-page{ class: "#{client_class_list}", data: { page: body_data_page, qa_selector: 'signup_page' } }
= header_message = render "layouts/header/logo_with_title"
= render "layouts/init_client_detection_flags" = render "layouts/init_client_detection_flags"
.page-wrap .page-wrap
.container.signup-box-container.navless-container.mt-0 .container.signup-box-container.navless-container
= render "layouts/broadcast" = render "layouts/broadcast"
.content .content
= render "layouts/flash" = render "layouts/flash"
.row.mb-6
.col-sm-8.offset-sm-2.col-md-6.offset-md-3.new-session-forms-container
= render_if_exists 'layouts/devise_help_text'
.text-center.signup-heading.mb-3
= image_tag(image_url('logo.svg'), class: 'gitlab-logo', alt: 'GitLab Logo')
- if content_for?(:page_title)
%h2= yield :page_title
= yield = yield
%hr.footer-fixed %hr.footer-fixed
.footer-container .footer-container
......
%header.navbar.fixed-top.navbar-gitlab.justify-content-center
= render 'shared/logo.svg'
%span.logo-text.d-none.d-lg-block.prepend-left-8.pt-1
= render 'shared/logo_type.svg'
---
title: Test reports in the pipeline details page will now load when clicking the tests
tab.
merge_request: 24577
author:
type: changed
---
title: Fix k8s logs alert display state
merge_request: 24802
author:
type: fixed
---
title: dragoon20
merge_request: 24958
author: Jordan Fernando
type: fixed
---
title: Add Board Lists to Group Export
merge_request: 24863
author:
type: changed
...@@ -105,8 +105,8 @@ recorded: ...@@ -105,8 +105,8 @@ recorded:
- Ask for password reset - Ask for password reset
- Grant OAuth access - Grant OAuth access
- Started/stopped user impersonation - Started/stopped user impersonation
- Changed username - Changed username ([introduced](https://gitlab.com/gitlab-org/gitlab/issues/7797) in GitLab 12.8)
- User was deleted - User was deleted ([introduced](https://gitlab.com/gitlab-org/gitlab/issues/251) in GitLab 12.8)
It is possible to filter particular actions by choosing an audit data type from It is possible to filter particular actions by choosing an audit data type from
the filter dropdown box. You can further filter by specific group, project or user the filter dropdown box. You can further filter by specific group, project or user
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
>**Note:** >**Note:**
> This endpoint was [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9188) in GitLab 11.8. > This endpoint was [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9188) in GitLab 11.8.
Manages parent-child [epic relationships](../user/group/epics/index.md#multi-level-child-epics). Manages parent-child [epic relationships](../user/group/epics/index.md#multi-level-child-epics-ultimate).
Every API call to `epic_links` must be authenticated. Every API call to `epic_links` must be authenticated.
......
...@@ -2663,6 +2663,8 @@ upstream_bridge: ...@@ -2663,6 +2663,8 @@ upstream_bridge:
#### `trigger` syntax for child pipeline #### `trigger` syntax for child pipeline
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/16094) in GitLab 12.7.
To create a [child pipeline](../parent_child_pipelines.md), specify the path to the To create a [child pipeline](../parent_child_pipelines.md), specify the path to the
YAML file containing the CI config of the child pipeline: YAML file containing the CI config of the child pipeline:
......
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
type: reference, howto type: reference, howto
--- ---
# Epics **(ULTIMATE)** # Epics **(PREMIUM)**
> Introduced in [GitLab Ultimate](https://about.gitlab.com/pricing/) 10.2. > Introduced in [GitLab Ultimate](https://about.gitlab.com/pricing/) 10.2.
> In [GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/issues/37081), single-level Epics were moved to **(PREMIUM)**.
Epics let you manage your portfolio of projects more efficiently and with less Epics let you manage your portfolio of projects more efficiently and with less
effort by tracking groups of issues that share a theme, across projects and effort by tracking groups of issues that share a theme, across projects and
...@@ -15,7 +16,7 @@ milestones. ...@@ -15,7 +16,7 @@ milestones.
The possible relationships between epics and issues are: The possible relationships between epics and issues are:
- An epic is the parent of one or more issues. - An epic is the parent of one or more issues.
- An epic is the parent of one or more child epics. For details see [Multi-level child epics](#multi-level-child-epics). - An epic is the parent of one or more child epics. For details see [Multi-level child epics](#multi-level-child-epics-ultimate). **(ULTIMATE)**
```mermaid ```mermaid
graph TD graph TD
...@@ -100,7 +101,7 @@ To remove an issue from an epic: ...@@ -100,7 +101,7 @@ To remove an issue from an epic:
1. Click on the <kbd>x</kbd> button in the epic's issue list. 1. Click on the <kbd>x</kbd> button in the epic's issue list.
1. Click **Remove** in the **Remove issue** warning message. 1. Click **Remove** in the **Remove issue** warning message.
## Multi-level child epics ## Multi-level child epics **(ULTIMATE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/8333) in GitLab Ultimate 11.7. > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/8333) in GitLab Ultimate 11.7.
...@@ -175,7 +176,7 @@ then the parent epic's start date will reflect the change and this will propagat ...@@ -175,7 +176,7 @@ then the parent epic's start date will reflect the change and this will propagat
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7327) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.10. > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7327) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.10.
If your epic contains one or more [child epics](#multi-level-child-epics) which If your epic contains one or more [child epics](#multi-level-child-epics-ultimate) which
have a [start or due date](#start-date-and-due-date), a have a [start or due date](#start-date-and-due-date), a
[roadmap](../roadmap/index.md) view of the child epics is listed under the parent epic. [roadmap](../roadmap/index.md) view of the child epics is listed under the parent epic.
......
...@@ -9,7 +9,11 @@ tree: ...@@ -9,7 +9,11 @@ tree:
- :badges - :badges
- labels: - labels:
- :priorities - :priorities
- :boards - boards:
- lists:
- label:
- :priorities
- :board
- members: - members:
- :user - :user
...@@ -30,12 +34,16 @@ excluded_attributes: ...@@ -30,12 +34,16 @@ excluded_attributes:
methods: methods:
labels: labels:
- :type - :type
label:
- :type
badges: badges:
- :type - :type
notes: notes:
- :type - :type
events: events:
- :action - :action
lists:
- :list_type
preloads: preloads:
...@@ -58,3 +66,7 @@ ee: ...@@ -58,3 +66,7 @@ ee:
- :board_assignee - :board_assignee
- labels: - labels:
- :priorities - :priorities
- lists:
- milestone:
- events:
- :push_event_payload
...@@ -9156,6 +9156,9 @@ msgstr "" ...@@ -9156,6 +9156,9 @@ msgstr ""
msgid "GitLab for Slack" msgid "GitLab for Slack"
msgstr "" msgstr ""
msgid "GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security."
msgstr ""
msgid "GitLab is obtaining a Let's Encrypt SSL certificate for this domain. This process can take some time. Please try again later." msgid "GitLab is obtaining a Let's Encrypt SSL certificate for this domain. This process can take some time. Please try again later."
msgstr "" msgstr ""
...@@ -13360,9 +13363,6 @@ msgstr "" ...@@ -13360,9 +13363,6 @@ msgstr ""
msgid "PackageRegistry|NuGet Command" msgid "PackageRegistry|NuGet Command"
msgstr "" msgstr ""
msgid "PackageRegistry|Package installation"
msgstr ""
msgid "PackageRegistry|Registry Setup" msgid "PackageRegistry|Registry Setup"
msgstr "" msgstr ""
...@@ -18059,6 +18059,9 @@ msgstr "" ...@@ -18059,6 +18059,9 @@ msgstr ""
msgid "Specify the following URL during the Runner setup:" msgid "Specify the following URL during the Runner setup:"
msgstr "" msgstr ""
msgid "Speed up your DevOps<br>with GitLab"
msgstr ""
msgid "Squash commit message" msgid "Squash commit message"
msgstr "" msgstr ""
......
...@@ -359,13 +359,27 @@ describe 'Pipeline', :js do ...@@ -359,13 +359,27 @@ describe 'Pipeline', :js do
context 'test tabs' do context 'test tabs' do
let(:pipeline) { create(:ci_pipeline, :with_test_reports, project: project) } let(:pipeline) { create(:ci_pipeline, :with_test_reports, project: project) }
it 'shows badge counter in Tests tab' do before do
visit_pipeline visit_pipeline
wait_for_requests wait_for_requests
end
it 'shows badge counter in Tests tab' do
expect(pipeline.test_reports.total_count).to eq(4) expect(pipeline.test_reports.total_count).to eq(4)
expect(page.find('.js-test-report-badge-counter').text).to eq(pipeline.test_reports.total_count.to_s) expect(page.find('.js-test-report-badge-counter').text).to eq(pipeline.test_reports.total_count.to_s)
end end
it 'does not call test_report.json endpoint by default', :js do
expect(page).to have_selector('.js-no-tests-to-show', visible: :all)
end
it 'does call test_report.json endpoint when tab is selected', :js do
find('.js-tests-tab-link').click
wait_for_requests
expect(page).to have_content('Test suites')
expect(page).to have_selector('.js-tests-detail', visible: :all)
end
end end
context 'retrying jobs' do context 'retrying jobs' do
......
...@@ -260,25 +260,101 @@ ...@@ -260,25 +260,101 @@
], ],
"boards": [ "boards": [
{ {
"id": 56, "id": 173,
"project_id": null, "project_id": null,
"created_at": "2019-11-20T17:27:16.808Z", "created_at": "2020-02-11T14:35:51.561Z",
"updated_at": "2019-11-20T17:27:16.808Z", "updated_at": "2020-02-11T14:35:51.561Z",
"name": "Development", "name": "first board",
"milestone_id": null, "milestone_id": null,
"group_id": 4351, "group_id": 4351,
"weight": null, "weight": null,
"labels": [] "lists": [
{
"id": 189,
"board_id": 173,
"label_id": 271,
"list_type": "label",
"position": 0,
"created_at": "2020-02-11T14:35:57.131Z",
"updated_at": "2020-02-11T14:35:57.131Z",
"user_id": null,
"milestone_id": null,
"max_issue_count": 0,
"max_issue_weight": 0,
"label": {
"id": 271,
"title": "TSL",
"color": "#58796f",
"project_id": null,
"created_at": "2019-11-20T17:02:20.541Z",
"updated_at": "2020-02-06T15:44:52.048Z",
"template": false,
"description": null,
"group_id": 4351,
"type": "GroupLabel",
"priorities": []
},
"board": {
"id": 173,
"project_id": null,
"created_at": "2020-02-11T14:35:51.561Z",
"updated_at": "2020-02-11T14:35:51.561Z",
"name": "hi",
"milestone_id": null,
"group_id": 4351,
"weight": null
}
}, },
{ {
"id": 57, "id": 190,
"board_id": 173,
"label_id": 272,
"list_type": "label",
"position": 1,
"created_at": "2020-02-11T14:35:57.868Z",
"updated_at": "2020-02-11T14:35:57.868Z",
"user_id": null,
"milestone_id": null,
"max_issue_count": 0,
"max_issue_weight": 0,
"label": {
"id": 272,
"title": "Sosync",
"color": "#110320",
"project_id": null, "project_id": null,
"created_at": "2019-11-20T17:27:41.118Z", "created_at": "2019-11-20T17:02:20.532Z",
"updated_at": "2019-11-20T17:27:41.118Z", "updated_at": "2020-02-06T15:44:52.057Z",
"name": "Board!", "template": false,
"milestone_id": 7638, "description": null,
"group_id": 4351, "group_id": 4351,
"weight": null, "type": "GroupLabel",
"priorities": []
},
"board": {
"id": 173,
"project_id": null,
"created_at": "2020-02-11T14:35:51.561Z",
"updated_at": "2020-02-11T14:35:51.561Z",
"name": "hi",
"milestone_id": null,
"group_id": 4351,
"weight": null
}
},
{
"id": 188,
"board_id": 173,
"label_id": null,
"list_type": "closed",
"position": null,
"created_at": "2020-02-11T14:35:51.593Z",
"updated_at": "2020-02-11T14:35:51.593Z",
"user_id": null,
"milestone_id": null,
"max_issue_count": 0,
"max_issue_weight": 0
}
],
"labels": [] "labels": []
} }
], ],
......
...@@ -39,8 +39,18 @@ describe Gitlab::ImportExport::GroupTreeRestorer do ...@@ -39,8 +39,18 @@ describe Gitlab::ImportExport::GroupTreeRestorer do
expect(@group.labels.count).to eq(10) expect(@group.labels.count).to eq(10)
end end
context 'issue boards' do
it 'has issue boards' do it 'has issue boards' do
expect(@group.boards.count).to eq(2) expect(@group.boards.count).to eq(1)
end
it 'has board label lists' do
lists = @group.boards.find_by(name: 'first board').lists
expect(lists.count).to eq(3)
expect(lists.first.label.title).to eq('TSL')
expect(lists.second.label.title).to eq('Sosync')
end
end end
it 'has badges' do it 'has badges' do
......
...@@ -95,6 +95,10 @@ describe Gitlab::ImportExport::GroupTreeSaver do ...@@ -95,6 +95,10 @@ describe Gitlab::ImportExport::GroupTreeSaver do
expect(saved_group_json['boards']).not_to be_empty expect(saved_group_json['boards']).not_to be_empty
end end
it 'has board label list' do
expect(saved_group_json['boards'].first['lists']).not_to be_empty
end
it 'has group members' do it 'has group members' do
expect(saved_group_json['members']).not_to be_empty expect(saved_group_json['members']).not_to be_empty
end end
...@@ -168,7 +172,8 @@ describe Gitlab::ImportExport::GroupTreeSaver do ...@@ -168,7 +172,8 @@ describe Gitlab::ImportExport::GroupTreeSaver do
create(:group_badge, group: group) create(:group_badge, group: group)
group_label = create(:group_label, group: group) group_label = create(:group_label, group: group)
create(:label_priority, label: group_label, priority: 1) create(:label_priority, label: group_label, priority: 1)
create(:board, group: group) board = create(:board, group: group)
create(:list, board: board, label: group_label)
create(:group_badge, group: group) create(:group_badge, group: group)
group group
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment