From 03d56c8af04d2982aff573b78f08192b07107c5b Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 9 Dec 2020 21:09:43 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/rules.gitlab-ci.yml | 2 - GITALY_SERVER_VERSION | 2 +- .../admin/users/components/app.vue | 7 +- .../admin/users/components/users_table.vue | 63 +++++ .../boards/components/board_column_new.vue | 8 +- .../boards/components/board_list_header.vue | 8 +- .../components/board_list_header_new.vue | 8 +- app/assets/javascripts/boards/constants.js | 5 - app/assets/javascripts/boards/index.js | 1 - .../javascripts/boards/stores/actions.js | 28 +-- .../javascripts/boards/stores/boards_store.js | 22 -- .../javascripts/boards/stores/mutations.js | 3 +- app/assets/javascripts/boards/stores/state.js | 1 - .../javascripts/import_projects/index.js | 7 - .../pipelines/charts/components/app.vue | 232 +++++++++++++++--- .../charts/components/app_legacy.vue | 151 ++++++++++++ .../charts/components/statistics_list.vue | 7 +- .../projects/pipelines/charts/constants.js | 6 + ...get_pipeline_count_by_status.query.graphql | 14 ++ ..._project_pipeline_statistics.query.graphql | 17 ++ .../projects/pipelines/charts/index.js | 63 ++++- app/assets/stylesheets/pages/tree.scss | 4 + app/assets/stylesheets/utilities.scss | 13 + .../jira_connect/app_descriptor_controller.rb | 71 ++++-- .../projects/pipelines_controller.rb | 1 + app/controllers/projects_controller.rb | 2 - .../resolvers/ci/runner_setup_resolver.rb | 5 +- app/models/application_setting.rb | 4 +- app/models/ci/pipeline.rb | 10 + app/models/concerns/issuable.rb | 6 +- app/models/label.rb | 2 +- app/models/todo.rb | 6 +- app/services/ci/create_pipeline_service.rb | 4 +- .../clusters/aws/fetch_credentials_service.rb | 9 +- app/services/git/base_hooks_service.rb | 5 +- app/services/jira_connect/sync_service.rb | 12 +- app/validators/json_schema_validator.rb | 11 +- .../admin/application_settings/_eks.html.haml | 5 + app/views/admin/users/index.html.haml | 8 +- app/views/projects/_files.html.haml | 3 + app/views/projects/pipelines/charts.html.haml | 13 +- app/workers/all_queues.yml | 12 +- .../jira_connect/sync_branch_worker.rb | 1 + .../jira_connect/sync_builds_worker.rb | 24 ++ .../jira_connect/sync_merge_request_worker.rb | 2 + ...er-importer-ignores-first-25-repositor.yml | 5 + ...497-add-validating-json-schema-draft-7.yml | 5 + ...ting-additional-boards-within-a-group-.yml | 5 + .../unreleased/sh-aws-sdk-use-iam-profile.yml | 5 + .../unreleased/tz-reduce-last-commit-cls.yml | 5 + .../graphql_pipeline_analytics.yml | 8 + .../development/jira_sync_builds.yml | 8 + doc/api/audit_events.md | 6 +- doc/development/README.md | 1 + .../documentation/styleguide/index.md | 4 +- doc/development/integrations/codesandbox.md | 140 +++++++++++ doc/development/product_analytics/snowplow.md | 11 + .../product_analytics/usage_ping.md | 5 +- doc/user/packages/package_registry/index.md | 9 +- .../img/issue_board_default_lists_v13_4.png | Bin 14866 -> 0 bytes .../protected_branches_deploy_keys_v13_5.png | Bin 0 -> 46325 bytes doc/user/project/issue_board.md | 29 ++- doc/user/project/protected_branches.md | 31 +++ lib/atlassian/jira_connect/client.rb | 75 ++++-- .../jira_connect/serializers/base_entity.rb | 6 + .../jira_connect/serializers/build_entity.rb | 94 +++++++ locale/gitlab.pot | 12 + spec/factories/merge_requests.rb | 8 + spec/factories/sequences.rb | 2 + spec/features/boards/boards_spec.rb | 4 +- .../admin/users/components/app_spec.js | 37 +++ .../users/components/users_table_spec.js | 61 +++++ spec/frontend/admin/users/mock_data.js | 2 +- spec/frontend/boards/boards_store_spec.js | 35 --- .../components/board_list_header_new_spec.js | 2 +- .../components/board_list_header_spec.js | 2 +- spec/frontend/boards/stores/actions_spec.js | 29 +-- spec/frontend/boards/stores/mutations_spec.js | 3 - .../statistics_list_spec.js.snap | 4 +- .../charts/components/app_legacy_spec.js | 72 ++++++ .../pipelines/charts/components/app_spec.js | 66 +++-- .../charts/components/statistics_list_spec.js | 2 +- .../projects/pipelines/charts/mock_data.js | 215 ++++++++++++++++ .../lib/atlassian/jira_connect/client_spec.rb | 163 ++++++++++-- .../serializers/build_entity_spec.rb | 52 ++++ spec/models/application_setting_spec.rb | 13 +- spec/models/ci/pipeline_spec.rb | 34 +++ .../aws/fetch_credentials_service_spec.rb | 54 ++++ .../jira_connect/sync_service_spec.rb | 33 ++- .../atlassian/jira_connect/schemata.rb | 83 +++++++ spec/support/helpers/after_next_helpers.rb | 6 +- spec/support/helpers/next_instance_of.rb | 15 +- spec/support/matchers/be_valid_json.rb | 32 +++ .../multiple_issue_boards_shared_examples.rb | 4 +- spec/validators/json_schema_validator_spec.rb | 30 +++ .../jira_connect/sync_branch_worker_spec.rb | 9 +- .../jira_connect/sync_builds_worker_spec.rb | 60 +++++ .../sync_merge_request_worker_spec.rb | 9 +- .../jira_connect/sync_project_worker_spec.rb | 10 +- 99 files changed, 2109 insertions(+), 394 deletions(-) create mode 100644 app/assets/javascripts/admin/users/components/users_table.vue create mode 100644 app/assets/javascripts/projects/pipelines/charts/components/app_legacy.vue create mode 100644 app/assets/javascripts/projects/pipelines/charts/graphql/queries/get_pipeline_count_by_status.query.graphql create mode 100644 app/assets/javascripts/projects/pipelines/charts/graphql/queries/get_project_pipeline_statistics.query.graphql create mode 100644 app/workers/jira_connect/sync_builds_worker.rb create mode 100644 changelogs/unreleased/262168-pagination-of-bitbucket-server-importer-ignores-first-25-repositor.yml create mode 100644 changelogs/unreleased/263497-add-validating-json-schema-draft-7.yml create mode 100644 changelogs/unreleased/270583-improve-efficiency-when-creating-additional-boards-within-a-group-.yml create mode 100644 changelogs/unreleased/sh-aws-sdk-use-iam-profile.yml create mode 100644 changelogs/unreleased/tz-reduce-last-commit-cls.yml create mode 100644 config/feature_flags/development/graphql_pipeline_analytics.yml create mode 100644 config/feature_flags/development/jira_sync_builds.yml create mode 100644 doc/development/integrations/codesandbox.md delete mode 100644 doc/user/project/img/issue_board_default_lists_v13_4.png create mode 100644 doc/user/project/img/protected_branches_deploy_keys_v13_5.png create mode 100644 lib/atlassian/jira_connect/serializers/build_entity.rb create mode 100644 spec/frontend/admin/users/components/app_spec.js create mode 100644 spec/frontend/admin/users/components/users_table_spec.js create mode 100644 spec/frontend/projects/pipelines/charts/components/app_legacy_spec.js create mode 100644 spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb create mode 100644 spec/support/atlassian/jira_connect/schemata.rb create mode 100644 spec/support/matchers/be_valid_json.rb create mode 100644 spec/workers/jira_connect/sync_builds_worker_spec.rb diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 62a1f76b301..271eec1b997 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -602,8 +602,6 @@ .rails:rules:detect-tests: rules: - - <<: *if-not-ee - when: never - <<: *if-default-refs changes: *code-backstage-patterns - <<: *if-merge-request-title-run-all-rspec diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 6bafd9452fa..b424faadd27 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -c0ea152ccad891cda5fd255c1fea78562aae5e4a +14b4e7cba593bccd9093fd231cdbd3f016688451 diff --git a/app/assets/javascripts/admin/users/components/app.vue b/app/assets/javascripts/admin/users/components/app.vue index 5ff2dbbfcb1..a3abd904a6b 100644 --- a/app/assets/javascripts/admin/users/components/app.vue +++ b/app/assets/javascripts/admin/users/components/app.vue @@ -1,5 +1,10 @@ + + diff --git a/app/assets/javascripts/boards/components/board_column_new.vue b/app/assets/javascripts/boards/components/board_column_new.vue index 8d01cbd9234..9ae9d4697d9 100644 --- a/app/assets/javascripts/boards/components/board_column_new.vue +++ b/app/assets/javascripts/boards/components/board_column_new.vue @@ -2,7 +2,6 @@ import { mapGetters, mapActions, mapState } from 'vuex'; import BoardListHeader from 'ee_else_ce/boards/components/board_list_header_new.vue'; import BoardList from './board_list_new.vue'; -import { ListType } from '../constants'; export default { components: { @@ -36,16 +35,11 @@ export default { listIssues() { return this.getIssuesByList(this.list.id); }, - shouldFetchIssues() { - return this.list.type !== ListType.blank; - }, }, watch: { filterParams: { handler() { - if (this.shouldFetchIssues) { - this.fetchIssuesForList({ listId: this.list.id }); - } + this.fetchIssuesForList({ listId: this.list.id }); }, deep: true, immediate: true, diff --git a/app/assets/javascripts/boards/components/board_list_header.vue b/app/assets/javascripts/boards/components/board_list_header.vue index 3e37fc0a1ac..3db5c2e0830 100644 --- a/app/assets/javascripts/boards/components/board_list_header.vue +++ b/app/assets/javascripts/boards/components/board_list_header.vue @@ -72,9 +72,7 @@ export default { return this.list?.label?.description || this.list.title || ''; }, showListHeaderButton() { - return ( - !this.disabled && this.listType !== ListType.closed && this.listType !== ListType.blank - ); + return !this.disabled && this.listType !== ListType.closed; }, showMilestoneListDetails() { return ( @@ -106,9 +104,6 @@ export default { this.listType !== ListType.backlog && this.showListHeaderButton && this.list.isExpanded ); }, - showBoardListAndBoardInfo() { - return this.listType !== ListType.blank; - }, uniqueKey() { // eslint-disable-next-line @gitlab/require-i18n-strings return `boards.${this.boardId}.${this.listType}.${this.list.id}`; @@ -286,7 +281,6 @@ export default {
+ + {{ failure.text }} + +

{{ s__('PipelineCharts|CI / CD Analytics') }}

-

{{ s__('PipelineCharts|Overall statistics') }}

+

{{ s__('PipelineCharts|Overall statistics') }}

- +
@@ -139,7 +295,7 @@ export default {

-

{{ __('Pipelines charts') }}

+

{{ __('Pipelines charts') }}

+import dateFormat from 'dateformat'; +import { GlColumnChart } from '@gitlab/ui/dist/charts'; +import { __, sprintf } from '~/locale'; +import { getDateInPast } from '~/lib/utils/datetime_utility'; +import StatisticsList from './statistics_list.vue'; +import PipelinesAreaChart from './pipelines_area_chart.vue'; +import { + CHART_CONTAINER_HEIGHT, + INNER_CHART_HEIGHT, + X_AXIS_LABEL_ROTATION, + X_AXIS_TITLE_OFFSET, + CHART_DATE_FORMAT, + ONE_WEEK_AGO_DAYS, + ONE_MONTH_AGO_DAYS, +} from '../constants'; + +export default { + components: { + StatisticsList, + GlColumnChart, + PipelinesAreaChart, + }, + props: { + counts: { + type: Object, + required: true, + }, + timesChartData: { + type: Object, + required: true, + }, + lastWeekChartData: { + type: Object, + required: true, + }, + lastMonthChartData: { + type: Object, + required: true, + }, + lastYearChartData: { + type: Object, + required: true, + }, + }, + data() { + return { + timesChartTransformedData: [ + { + name: 'full', + data: this.mergeLabelsAndValues(this.timesChartData.labels, this.timesChartData.values), + }, + ], + }; + }, + computed: { + areaCharts() { + const { lastWeek, lastMonth, lastYear } = this.$options.chartTitles; + + return [ + this.buildAreaChartData(lastWeek, this.lastWeekChartData), + this.buildAreaChartData(lastMonth, this.lastMonthChartData), + this.buildAreaChartData(lastYear, this.lastYearChartData), + ]; + }, + }, + methods: { + mergeLabelsAndValues(labels, values) { + return labels.map((label, index) => [label, values[index]]); + }, + buildAreaChartData(title, data) { + const { labels, totals, success } = data; + + return { + title, + data: [ + { + name: 'all', + data: this.mergeLabelsAndValues(labels, totals), + }, + { + name: 'success', + data: this.mergeLabelsAndValues(labels, success), + }, + ], + }; + }, + }, + chartContainerHeight: CHART_CONTAINER_HEIGHT, + timesChartOptions: { + height: INNER_CHART_HEIGHT, + xAxis: { + axisLabel: { + rotate: X_AXIS_LABEL_ROTATION, + }, + nameGap: X_AXIS_TITLE_OFFSET, + }, + }, + get chartTitles() { + const today = dateFormat(new Date(), CHART_DATE_FORMAT); + const pastDate = timeScale => + dateFormat(getDateInPast(new Date(), timeScale), CHART_DATE_FORMAT); + return { + lastWeek: sprintf(__('Pipelines for last week (%{oneWeekAgo} - %{today})'), { + oneWeekAgo: pastDate(ONE_WEEK_AGO_DAYS), + today, + }), + lastMonth: sprintf(__('Pipelines for last month (%{oneMonthAgo} - %{today})'), { + oneMonthAgo: pastDate(ONE_MONTH_AGO_DAYS), + today, + }), + lastYear: __('Pipelines for last year'), + }; + }, +}; + + diff --git a/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue b/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue index aa59717ddcd..94cecd2e479 100644 --- a/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue +++ b/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue @@ -1,7 +1,10 @@