diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml index 1361f1fe412..d4a9582ded3 100644 --- a/.gitlab/ci/build-images.gitlab-ci.yml +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -34,7 +34,7 @@ build-gdk-image: - .base-image-build-buildx - .build-images:rules:build-gdk-image tags: - - high-cpu + - saas-linux-xlarge-amd64 stage: build-images needs: [] script: diff --git a/.gitlab/ci/qa-common/rules.gitlab-ci.yml b/.gitlab/ci/qa-common/rules.gitlab-ci.yml index 16440aa4cbc..c0a4e8d206f 100644 --- a/.gitlab/ci/qa-common/rules.gitlab-ci.yml +++ b/.gitlab/ci/qa-common/rules.gitlab-ci.yml @@ -43,6 +43,10 @@ .not-canonical-project: ¬-canonical-project if: '$CI_PROJECT_PATH != "gitlab-org/gitlab" && $CI_PROJECT_PATH != "gitlab-cn/gitlab"' +# If Schedule pipeline +.if-schedule-pipeline: &if-schedule-pipeline + if: '$CI_PIPELINE_SOURCE == "schedule"' + # Selective test execution against omnibus instance have following execution scenarios: # * only e2e spec files changed - runs only changed specs # * qa framework changes - runs full test suite @@ -149,6 +153,17 @@ when: never - !reference [.rules:test:qa, rules] +.rules:test:never-schedule-pipeline: + rules: + - <<: *if-schedule-pipeline + when: never + +.rules:test:gdk-load-balancer-changes: + rules: + - changes: + - ".gitlab/ci/test-on-gdk/**" + - "lib/gitlab/database/load_balancing/**/*" + .rules:test:qa-default-branch: rules: - *qa-run-all-e2e-label diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 3ccd5995531..9361563c1d9 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -923,16 +923,9 @@ - !reference [".qa:rules:package-and-test-never-run", rules] - <<: *if-default-branch-schedule-nightly # already executed in the 2-hourly schedule when: never - # Rebuild base only when relevant components change - - <<: *if-default-branch-refs - changes: *gdk-component-patterns - variables: - BUILD_GDK_BASE: "true" - <<: *if-default-branch-refs - <<: *if-merge-request changes: *gdk-component-patterns - variables: - BUILD_GDK_BASE: "true" # The rest are included to be consistent with .qa:rules:e2e:test-on-gdk - <<: *if-merge-request-targeting-stable-branch changes: *setup-test-env-patterns diff --git a/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml b/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml index 8f60a8505f3..8e94338bb68 100644 --- a/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml +++ b/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml @@ -146,9 +146,8 @@ gdk-qa-smoke-with-load-balancer: reports: dotenv: "" rules: - - changes: - - ".gitlab/ci/test-on-gdk/**" - - "lib/gitlab/database/load_balancing/**/*" + - !reference [".rules:test:never-schedule-pipeline", rules] + - !reference [".rules:test:gdk-load-balancer-changes", rules] allow_failure: true gdk-qa-reliable: @@ -177,9 +176,8 @@ gdk-qa-reliable-with-load-balancer: reports: dotenv: "" rules: - - changes: - - ".gitlab/ci/test-on-gdk/**" - - "lib/gitlab/database/load_balancing/**/*" + - !reference [".rules:test:never-schedule-pipeline", rules] + - !reference [".rules:test:gdk-load-balancer-changes", rules] allow_failure: true gdk-qa-non-blocking: diff --git a/app/assets/javascripts/ci/pipeline_details/components/jobs_shared/action_component.vue b/app/assets/javascripts/ci/common/private/job_action_component.vue similarity index 98% rename from app/assets/javascripts/ci/pipeline_details/components/jobs_shared/action_component.vue rename to app/assets/javascripts/ci/common/private/job_action_component.vue index ffb6ab71b22..f649750ce8a 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/jobs_shared/action_component.vue +++ b/app/assets/javascripts/ci/common/private/job_action_component.vue @@ -5,7 +5,7 @@ import axios from '~/lib/utils/axios_utils'; import { BV_HIDE_TOOLTIP } from '~/lib/utils/constants'; import { dasherize } from '~/lib/utils/text_utility'; import { __ } from '~/locale'; -import { reportToSentry } from '../../utils'; +import { reportToSentry } from '~/ci/utils'; /** * Renders either a cancel, retry or play icon button and handles the post request diff --git a/app/assets/javascripts/ci/pipeline_details/components/graph_shared/links_layer.vue b/app/assets/javascripts/ci/common/private/job_links_layer.vue similarity index 88% rename from app/assets/javascripts/ci/pipeline_details/components/graph_shared/links_layer.vue rename to app/assets/javascripts/ci/common/private/job_links_layer.vue index ef24694e494..59260ca3f81 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/graph_shared/links_layer.vue +++ b/app/assets/javascripts/ci/common/private/job_links_layer.vue @@ -1,8 +1,8 @@ diff --git a/app/assets/javascripts/ci/pipeline_details/components/graph/constants.js b/app/assets/javascripts/ci/pipeline_details/graph/constants.js similarity index 100% rename from app/assets/javascripts/ci/pipeline_details/components/graph/constants.js rename to app/assets/javascripts/ci/pipeline_details/graph/constants.js diff --git a/app/assets/javascripts/ci/pipeline_details/components/graph/graph_component_wrapper.vue b/app/assets/javascripts/ci/pipeline_details/graph/graph_component_wrapper.vue similarity index 95% rename from app/assets/javascripts/ci/pipeline_details/components/graph/graph_component_wrapper.vue rename to app/assets/javascripts/ci/pipeline_details/graph/graph_component_wrapper.vue index b2cef7c37b9..bd7325f7925 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/graph/graph_component_wrapper.vue +++ b/app/assets/javascripts/ci/pipeline_details/graph/graph_component_wrapper.vue @@ -4,10 +4,10 @@ import getPipelineDetails from 'shared_queries/pipelines/get_pipeline_details.qu import getUserCallouts from '~/graphql_shared/queries/get_user_callouts.query.graphql'; import { __, s__ } from '~/locale'; import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue'; -import { DEFAULT, DRAW_FAILURE, LOAD_FAILURE } from '../../constants'; -import DismissPipelineGraphCallout from '../../graphql/mutations/dismiss_pipeline_notification.graphql'; -import getPipelineQuery from '../../graphql/queries/get_pipeline_header_data.query.graphql'; -import { reportToSentry, reportMessageToSentry } from '../../utils'; +import { DEFAULT, DRAW_FAILURE, LOAD_FAILURE } from '~/ci/pipeline_details/constants'; +import getPipelineQuery from '~/ci/pipeline_details/header/graphql/queries/get_pipeline_header_data.query.graphql'; +import { reportToSentry, reportMessageToSentry } from '~/ci/utils'; +import DismissPipelineGraphCallout from './graphql/mutations/dismiss_pipeline_notification.graphql'; import { ACTION_FAILURE, IID_FAILURE, @@ -16,8 +16,8 @@ import { STAGE_VIEW, VIEW_TYPE_KEY, } from './constants'; -import PipelineGraph from './graph_component.vue'; -import GraphViewSelector from './graph_view_selector.vue'; +import PipelineGraph from './components/graph_component.vue'; +import GraphViewSelector from './components/graph_view_selector.vue'; import { calculatePipelineLayersInfo, getQueryHeaders, diff --git a/app/assets/javascripts/ci/pipeline_details/graphql/mutations/dismiss_pipeline_notification.graphql b/app/assets/javascripts/ci/pipeline_details/graph/graphql/mutations/dismiss_pipeline_notification.graphql similarity index 100% rename from app/assets/javascripts/ci/pipeline_details/graphql/mutations/dismiss_pipeline_notification.graphql rename to app/assets/javascripts/ci/pipeline_details/graph/graphql/mutations/dismiss_pipeline_notification.graphql diff --git a/app/assets/javascripts/ci/pipeline_details/components/graph/perf_utils.js b/app/assets/javascripts/ci/pipeline_details/graph/perf_utils.js similarity index 96% rename from app/assets/javascripts/ci/pipeline_details/components/graph/perf_utils.js rename to app/assets/javascripts/ci/pipeline_details/graph/perf_utils.js index 3737a209f5c..511dcbe6889 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/graph/perf_utils.js +++ b/app/assets/javascripts/ci/pipeline_details/graph/perf_utils.js @@ -8,7 +8,7 @@ import { } from '~/performance/constants'; import { performanceMarkAndMeasure } from '~/performance/utils'; -import { reportPerformance } from '../graph_shared/api'; +import { reportPerformance } from './api_utils'; export const beginPerfMeasure = () => { performanceMarkAndMeasure({ mark: PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START }); diff --git a/app/assets/javascripts/ci/pipeline_details/components/graph/utils.js b/app/assets/javascripts/ci/pipeline_details/graph/utils.js similarity index 93% rename from app/assets/javascripts/ci/pipeline_details/components/graph/utils.js rename to app/assets/javascripts/ci/pipeline_details/graph/utils.js index c888c8a5537..9a8d6440d4d 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/graph/utils.js +++ b/app/assets/javascripts/ci/pipeline_details/graph/utils.js @@ -1,8 +1,9 @@ import { isEmpty } from 'lodash'; import { getIdFromGraphQLId, etagQueryHeaders } from '~/graphql_shared/utils'; -import { reportToSentry } from '../../utils'; -import { listByLayers } from '../parsing_utils'; -import { unwrapStagesWithNeedsAndLookup } from '../unwrapping_utils'; +import { reportToSentry } from '~/ci/utils'; + +import { listByLayers } from '~/ci/pipeline_details/utils/parsing_utils'; +import { unwrapStagesWithNeedsAndLookup } from '~/ci/pipeline_details/utils/unwrapping_utils'; import { beginPerfMeasure, finishPerfMeasureAndSend } from './perf_utils'; export { toggleQueryPollingByVisibility } from '~/graphql_shared/utils'; diff --git a/app/assets/javascripts/ci/pipeline_details/graphql/queries/get_pipeline_header_data.query.graphql b/app/assets/javascripts/ci/pipeline_details/header/graphql/queries/get_pipeline_header_data.query.graphql similarity index 100% rename from app/assets/javascripts/ci/pipeline_details/graphql/queries/get_pipeline_header_data.query.graphql rename to app/assets/javascripts/ci/pipeline_details/header/graphql/queries/get_pipeline_header_data.query.graphql diff --git a/app/assets/javascripts/ci/pipeline_details/components/pipeline_details_header.vue b/app/assets/javascripts/ci/pipeline_details/header/pipeline_details_header.vue similarity index 99% rename from app/assets/javascripts/ci/pipeline_details/components/pipeline_details_header.vue rename to app/assets/javascripts/ci/pipeline_details/header/pipeline_details_header.vue index 98798d3b8ad..4a15f5b581a 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/pipeline_details_header.vue +++ b/app/assets/javascripts/ci/pipeline_details/header/pipeline_details_header.vue @@ -30,8 +30,8 @@ import { import cancelPipelineMutation from '../graphql/mutations/cancel_pipeline.mutation.graphql'; import deletePipelineMutation from '../graphql/mutations/delete_pipeline.mutation.graphql'; import retryPipelineMutation from '../graphql/mutations/retry_pipeline.mutation.graphql'; -import getPipelineQuery from '../graphql/queries/get_pipeline_header_data.query.graphql'; -import { getQueryHeaders } from './graph/utils'; +import { getQueryHeaders } from '../graph/utils'; +import getPipelineQuery from './graphql/queries/get_pipeline_header_data.query.graphql'; const DELETE_MODAL_ID = 'pipeline-delete-modal'; const POLL_INTERVAL = 10000; diff --git a/app/assets/javascripts/ci/pipeline_details/components/jobs/failed_jobs_table.vue b/app/assets/javascripts/ci/pipeline_details/jobs/components/failed_jobs_table.vue similarity index 97% rename from app/assets/javascripts/ci/pipeline_details/components/jobs/failed_jobs_table.vue rename to app/assets/javascripts/ci/pipeline_details/jobs/components/failed_jobs_table.vue index f84ae13180d..98431bd1fcc 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/jobs/failed_jobs_table.vue +++ b/app/assets/javascripts/ci/pipeline_details/jobs/components/failed_jobs_table.vue @@ -6,7 +6,7 @@ import { createAlert } from '~/alert'; import Tracking from '~/tracking'; import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated import CiBadgeLink from '~/vue_shared/components/ci_badge_link.vue'; -import RetryFailedJobMutation from '../../graphql/mutations/retry_failed_job.mutation.graphql'; +import RetryFailedJobMutation from '../graphql/mutations/retry_failed_job.mutation.graphql'; import { DEFAULT_FIELDS, TRACKING_CATEGORIES } from '../../constants'; export default { diff --git a/app/assets/javascripts/ci/pipeline_details/components/jobs/failed_jobs_app.vue b/app/assets/javascripts/ci/pipeline_details/jobs/failed_jobs_app.vue similarity index 89% rename from app/assets/javascripts/ci/pipeline_details/components/jobs/failed_jobs_app.vue rename to app/assets/javascripts/ci/pipeline_details/jobs/failed_jobs_app.vue index c24862f828b..b946a40e590 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/jobs/failed_jobs_app.vue +++ b/app/assets/javascripts/ci/pipeline_details/jobs/failed_jobs_app.vue @@ -2,8 +2,8 @@ import { GlLoadingIcon } from '@gitlab/ui'; import { s__ } from '~/locale'; import { createAlert } from '~/alert'; -import GetFailedJobsQuery from '../../graphql/queries/get_failed_jobs.query.graphql'; -import FailedJobsTable from './failed_jobs_table.vue'; +import GetFailedJobsQuery from './graphql/queries/get_failed_jobs.query.graphql'; +import FailedJobsTable from './components/failed_jobs_table.vue'; export default { components: { diff --git a/app/assets/javascripts/ci/pipeline_details/graphql/mutations/retry_failed_job.mutation.graphql b/app/assets/javascripts/ci/pipeline_details/jobs/graphql/mutations/retry_failed_job.mutation.graphql similarity index 100% rename from app/assets/javascripts/ci/pipeline_details/graphql/mutations/retry_failed_job.mutation.graphql rename to app/assets/javascripts/ci/pipeline_details/jobs/graphql/mutations/retry_failed_job.mutation.graphql diff --git a/app/assets/javascripts/ci/pipeline_details/graphql/queries/get_failed_jobs.query.graphql b/app/assets/javascripts/ci/pipeline_details/jobs/graphql/queries/get_failed_jobs.query.graphql similarity index 100% rename from app/assets/javascripts/ci/pipeline_details/graphql/queries/get_failed_jobs.query.graphql rename to app/assets/javascripts/ci/pipeline_details/jobs/graphql/queries/get_failed_jobs.query.graphql diff --git a/app/assets/javascripts/ci/pipeline_details/graphql/queries/get_pipeline_jobs.query.graphql b/app/assets/javascripts/ci/pipeline_details/jobs/graphql/queries/get_pipeline_jobs.query.graphql similarity index 100% rename from app/assets/javascripts/ci/pipeline_details/graphql/queries/get_pipeline_jobs.query.graphql rename to app/assets/javascripts/ci/pipeline_details/jobs/graphql/queries/get_pipeline_jobs.query.graphql diff --git a/app/assets/javascripts/ci/pipeline_details/components/jobs/jobs_app.vue b/app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue similarity index 97% rename from app/assets/javascripts/ci/pipeline_details/components/jobs/jobs_app.vue rename to app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue index 61748860983..7a09dd27ad8 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/jobs/jobs_app.vue +++ b/app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue @@ -6,7 +6,7 @@ import { __ } from '~/locale'; import eventHub from '~/jobs/components/table/event_hub'; import JobsTable from '~/jobs/components/table/jobs_table.vue'; import { JOBS_TAB_FIELDS } from '~/jobs/components/table/constants'; -import getPipelineJobs from '../../graphql/queries/get_pipeline_jobs.query.graphql'; +import getPipelineJobs from './graphql/queries/get_pipeline_jobs.query.graphql'; export default { fields: JOBS_TAB_FIELDS, diff --git a/app/assets/javascripts/ci/pipeline_details/mixins/stage_column_mixin.js b/app/assets/javascripts/ci/pipeline_details/mixins/stage_column_mixin.js deleted file mode 100644 index 578ff498358..00000000000 --- a/app/assets/javascripts/ci/pipeline_details/mixins/stage_column_mixin.js +++ /dev/null @@ -1,14 +0,0 @@ -export default { - props: { - hasUpstream: { - type: Boolean, - required: false, - default: false, - }, - }, - methods: { - buildConnnectorClass(index) { - return index === 0 && (!this.isFirstColumn || this.hasUpstream) ? 'left-connector' : ''; - }, - }, -}; diff --git a/app/assets/javascripts/ci/pipeline_details/pipeline_details_header.js b/app/assets/javascripts/ci/pipeline_details/pipeline_details_header.js index c79aaef23e8..067ec3f305e 100644 --- a/app/assets/javascripts/ci/pipeline_details/pipeline_details_header.js +++ b/app/assets/javascripts/ci/pipeline_details/pipeline_details_header.js @@ -1,7 +1,7 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import { parseBoolean } from '~/lib/utils/common_utils'; -import PipelineDetailsHeader from './components/pipeline_details_header.vue'; +import PipelineDetailsHeader from './header/pipeline_details_header.vue'; Vue.use(VueApollo); diff --git a/app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js b/app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js index 8d4c9d1220a..0ca9a68e70d 100644 --- a/app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js +++ b/app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js @@ -4,10 +4,11 @@ import VueRouter from 'vue-router'; import Vuex from 'vuex'; import VueApollo from 'vue-apollo'; import { GlToast } from '@gitlab/ui'; -import PipelineTabs from 'ee_else_ce/ci/pipeline_details/components/pipeline_tabs.vue'; +import PipelineTabs from 'ee_else_ce/ci/pipeline_details/tabs/pipeline_tabs.vue'; +import { reportToSentry } from '~/ci/utils'; import { parseBoolean } from '~/lib/utils/common_utils'; import createTestReportsStore from './stores/test_reports'; -import { getPipelineDefaultTab, reportToSentry } from './utils'; +import { getPipelineDefaultTab } from './utils'; Vue.use(GlToast); Vue.use(VueApollo); diff --git a/app/assets/javascripts/ci/pipeline_details/pipelines_index.js b/app/assets/javascripts/ci/pipeline_details/pipelines_index.js index 20fd0915e28..86b565d7821 100644 --- a/app/assets/javascripts/ci/pipeline_details/pipelines_index.js +++ b/app/assets/javascripts/ci/pipeline_details/pipelines_index.js @@ -10,7 +10,7 @@ import { import { doesHashExistInUrl } from '~/lib/utils/url_utility'; import { __ } from '~/locale'; import Translate from '~/vue_shared/translate'; -import Pipelines from './components/pipelines_list/pipelines.vue'; +import Pipelines from './pipelines_list/pipelines.vue'; import PipelinesStore from './stores/pipelines_store'; Vue.use(Translate); diff --git a/app/assets/javascripts/ci/pipeline_details/components/pipelines_list/nav_controls.vue b/app/assets/javascripts/ci/pipeline_details/pipelines_list/components/nav_controls.vue similarity index 100% rename from app/assets/javascripts/ci/pipeline_details/components/pipelines_list/nav_controls.vue rename to app/assets/javascripts/ci/pipeline_details/pipelines_list/components/nav_controls.vue diff --git a/app/assets/javascripts/ci/pipeline_details/components/pipelines_list/pipeline_labels.vue b/app/assets/javascripts/ci/pipeline_details/pipelines_list/components/pipeline_labels.vue similarity index 98% rename from app/assets/javascripts/ci/pipeline_details/components/pipelines_list/pipeline_labels.vue rename to app/assets/javascripts/ci/pipeline_details/pipelines_list/components/pipeline_labels.vue index f8b4299485e..082ede60244 100644 --- a/app/assets/javascripts/ci/pipeline_details/components/pipelines_list/pipeline_labels.vue +++ b/app/assets/javascripts/ci/pipeline_details/pipelines_list/components/pipeline_labels.vue @@ -1,7 +1,7 @@