summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-17 03:09:00 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-17 03:09:00 +0000
commit56201db1dc66f3a2d598f6f8da0bec170dc26ba1 (patch)
tree8317b0a17c76866b981b497b13786dadceee5abf
parentce2a803dc413f289352deecbf2cfd32896c8b2ef (diff)
downloadgitlab-ce-56201db1dc66f3a2d598f6f8da0bec170dc26ba1.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--changelogs/unreleased/omit-previous-error-from-sidekiq-logs.yml5
-rw-r--r--config/webpack.vendor.config.js6
-rw-r--r--doc/topics/autodevops/index.md25
-rw-r--r--lib/gitlab/sidekiq_logging/structured_logger.rb4
-rw-r--r--lib/tasks/gitlab/assets.rake1
-rw-r--r--package.json1
-rw-r--r--spec/controllers/profiles/notifications_controller_spec.rb5
-rw-r--r--spec/finders/award_emojis_finder_spec.rb12
-rw-r--r--spec/finders/clusters_finder_spec.rb2
-rw-r--r--spec/finders/issues_finder_spec.rb16
-rw-r--r--spec/finders/jobs_finder_spec.rb14
-rw-r--r--spec/finders/members_finder_spec.rb22
-rw-r--r--spec/finders/merge_requests_finder_spec.rb4
-rw-r--r--spec/finders/resource_label_event_finder_spec.rb6
-rw-r--r--spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb7
-rw-r--r--spec/presenters/ci/bridge_presenter_spec.rb6
-rw-r--r--spec/presenters/ci/trigger_presenter_spec.rb6
-rw-r--r--spec/presenters/event_presenter_spec.rb10
-rw-r--r--spec/presenters/label_presenter_spec.rb4
-rw-r--r--spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb4
-rw-r--r--spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb12
-rw-r--r--spec/services/metrics/dashboard/clone_dashboard_service_spec.rb6
-rw-r--r--yarn.lock7
23 files changed, 117 insertions, 68 deletions
diff --git a/changelogs/unreleased/omit-previous-error-from-sidekiq-logs.yml b/changelogs/unreleased/omit-previous-error-from-sidekiq-logs.yml
new file mode 100644
index 00000000000..ab7c18b5833
--- /dev/null
+++ b/changelogs/unreleased/omit-previous-error-from-sidekiq-logs.yml
@@ -0,0 +1,5 @@
+---
+title: Omit error details from previous attempt in Sidekiq JSON logs
+merge_request: 25161
+author:
+type: changed
diff --git a/config/webpack.vendor.config.js b/config/webpack.vendor.config.js
index 8da4938191c..90736349d91 100644
--- a/config/webpack.vendor.config.js
+++ b/config/webpack.vendor.config.js
@@ -1,6 +1,7 @@
const path = require('path');
const webpack = require('webpack');
const vendorDllHash = require('./helpers/vendor_dll_hash');
+const { YarnCheck } = require('yarn-check-webpack-plugin');
const ROOT_PATH = path.resolve(__dirname, '..');
@@ -60,6 +61,11 @@ module.exports = {
path: path.join(dllCachePath, '[name].dll.manifest.json'),
name: '[name]_[hash]',
}),
+ new YarnCheck({
+ rootDirectory: ROOT_PATH,
+ exclude: /ts-jest/,
+ forceKill: true,
+ }),
],
node: {
diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md
index abd946e1f23..dcd822705f9 100644
--- a/doc/topics/autodevops/index.md
+++ b/doc/topics/autodevops/index.md
@@ -109,6 +109,7 @@ To make full use of Auto DevOps, you will need:
1. A [Kubernetes 1.12+ cluster](../../user/project/clusters/index.md) for the project. The easiest
way is to add a [new cluster using the GitLab UI](../../user/project/clusters/add_remove_clusters.md#add-new-cluster).
+ For Kubernetes 1.16+ clusters, there is some additional configuration for [Auto Deploy for Kubernetes 1.16+](#kubernetes-116).
1. NGINX Ingress. You can deploy it to your Kubernetes cluster by installing
the [GitLab-managed app for Ingress](../../user/clusters/applications.md#ingress),
once you have configured GitLab's Kubernetes integration in the previous step.
@@ -635,6 +636,30 @@ be pulled again, e.g. after pod eviction, Kubernetes will fail to do so
as it will be attempting to fetch the image using
`CI_REGISTRY_PASSWORD`.
+#### Kubernetes 1.16+
+
+> [Introduced](https://gitlab.com/gitlab-org/charts/auto-deploy-app/-/merge_requests/51) in GitLab 12.8.
+
+CAUTION: **Deprecation**
+The default value of `extensions/v1beta1` for the `deploymentApiVersion` setting is
+deprecated, and is scheduled to be changed to a new default of `apps/v1` in
+[GitLab 13.0](https://gitlab.com/gitlab-org/charts/auto-deploy-app/issues/47).
+
+In Kubernetes 1.16 onwards, a number of [APIs were removed](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/),
+including support for `Deployment` in the `extensions/v1beta1` version.
+
+To use Auto Deploy on a Kubernetes 1.16+ cluster, you must:
+
+1. Set the following in the [`.gitlab/auto-deploy-values.yaml` file](#customize-values-for-helm-chart):
+
+ ```yml
+ deploymentApiVersion: apps/v1
+ ```
+
+1. Set the `POSTGRES_ENABLED` variable to `false`. This will disable Auto Deploy's deployment of PostgreSQL.
+Support for enabling Auto Deploy's deployment of PostgreSQL in a Kubernetes 1.16+ cluster
+is [planned](https://gitlab.com/gitlab-org/charts/auto-deploy-app/issues/28).
+
#### Migrations
> [Introduced][ce-21955] in GitLab 11.4
diff --git a/lib/gitlab/sidekiq_logging/structured_logger.rb b/lib/gitlab/sidekiq_logging/structured_logger.rb
index 6dacca5529b..b45014d283f 100644
--- a/lib/gitlab/sidekiq_logging/structured_logger.rb
+++ b/lib/gitlab/sidekiq_logging/structured_logger.rb
@@ -77,7 +77,9 @@ module Gitlab
end
def parse_job(job)
- job = job.dup
+ # Error information from the previous try is in the payload for
+ # displaying in the Sidekiq UI, but is very confusing in logs!
+ job = job.except('error_backtrace', 'error_class', 'error_message')
# Add process id params
job['pid'] = ::Process.pid
diff --git a/lib/tasks/gitlab/assets.rake b/lib/tasks/gitlab/assets.rake
index 3aa1dc403d6..b398bbe403f 100644
--- a/lib/tasks/gitlab/assets.rake
+++ b/lib/tasks/gitlab/assets.rake
@@ -8,7 +8,6 @@ namespace :gitlab do
yarn:check
gettext:po_to_json
rake:assets:precompile
- gitlab:assets:vendor
webpack:compile
gitlab:assets:fix_urls
].each(&Gitlab::TaskHelpers.method(:invoke_and_time_task))
diff --git a/package.json b/package.json
index 4a0d2cde754..6078d7300c4 100644
--- a/package.json
+++ b/package.json
@@ -198,6 +198,7 @@
"timezone-mock": "^1.0.8",
"vue-jest": "^4.0.0-beta.2",
"webpack-dev-server": "^3.8.1",
+ "yarn-check-webpack-plugin": "^1.2.0",
"yarn-deduplicate": "^1.1.1"
},
"resolutions": {
diff --git a/spec/controllers/profiles/notifications_controller_spec.rb b/spec/controllers/profiles/notifications_controller_spec.rb
index ba85c781a93..47d6f11fecf 100644
--- a/spec/controllers/profiles/notifications_controller_spec.rb
+++ b/spec/controllers/profiles/notifications_controller_spec.rb
@@ -22,8 +22,9 @@ describe Profiles::NotificationsController do
end
context 'with groups that do not have notification preferences' do
- set(:group) { create(:group) }
- set(:subgroup) { create(:group, parent: group) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:subgroup) { create(:group, parent: group) }
+
before do
group.add_developer(user)
end
diff --git a/spec/finders/award_emojis_finder_spec.rb b/spec/finders/award_emojis_finder_spec.rb
index ccac475daad..bdfd2a9a3f4 100644
--- a/spec/finders/award_emojis_finder_spec.rb
+++ b/spec/finders/award_emojis_finder_spec.rb
@@ -3,14 +3,14 @@
require 'spec_helper'
describe AwardEmojisFinder do
- set(:issue_1) { create(:issue) }
- set(:issue_1_thumbsup) { create(:award_emoji, name: 'thumbsup', awardable: issue_1) }
- set(:issue_1_thumbsdown) { create(:award_emoji, name: 'thumbsdown', awardable: issue_1) }
+ let_it_be(:issue_1) { create(:issue) }
+ let_it_be(:issue_1_thumbsup) { create(:award_emoji, name: 'thumbsup', awardable: issue_1) }
+ let_it_be(:issue_1_thumbsdown) { create(:award_emoji, name: 'thumbsdown', awardable: issue_1) }
# Create a matching set of emoji for a second issue.
# These should never appear in our finder results
- set(:issue_2) { create(:issue) }
- set(:issue_2_thumbsup) { create(:award_emoji, name: 'thumbsup', awardable: issue_2) }
- set(:issue_2_thumbsdown) { create(:award_emoji, name: 'thumbsdown', awardable: issue_2) }
+ let_it_be(:issue_2) { create(:issue) }
+ let_it_be(:issue_2_thumbsup) { create(:award_emoji, name: 'thumbsup', awardable: issue_2) }
+ let_it_be(:issue_2_thumbsdown) { create(:award_emoji, name: 'thumbsdown', awardable: issue_2) }
describe 'param validation' do
it 'raises an error if `name` is invalid' do
diff --git a/spec/finders/clusters_finder_spec.rb b/spec/finders/clusters_finder_spec.rb
index 5dde616f679..3bad88573f7 100644
--- a/spec/finders/clusters_finder_spec.rb
+++ b/spec/finders/clusters_finder_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe ClustersFinder do
let(:project) { create(:project) }
- set(:user) { create(:user) }
+ let_it_be(:user) { create(:user) }
describe '#execute' do
let(:enabled_cluster) { create(:cluster, :provided_by_gcp, projects: [project]) }
diff --git a/spec/finders/issues_finder_spec.rb b/spec/finders/issues_finder_spec.rb
index 7a102cb479e..ff52e1b9d5f 100644
--- a/spec/finders/issues_finder_spec.rb
+++ b/spec/finders/issues_finder_spec.rb
@@ -29,7 +29,7 @@ describe IssuesFinder do
end
context 'filter by username' do
- set(:user3) { create(:user) }
+ let_it_be(:user3) { create(:user) }
before do
project2.add_developer(user3)
@@ -53,7 +53,7 @@ describe IssuesFinder do
end
it_behaves_like 'no assignee filter' do
- set(:user3) { create(:user) }
+ let_it_be(:user3) { create(:user) }
let(:expected_issuables) { [issue4] }
end
@@ -679,7 +679,7 @@ describe IssuesFinder do
end
context 'filtering by confidential' do
- set(:confidential_issue) { create(:issue, project: project1, confidential: true) }
+ let_it_be(:confidential_issue) { create(:issue, project: project1, confidential: true) }
context 'no filtering' do
it 'returns all issues' do
@@ -777,7 +777,7 @@ describe IssuesFinder do
it 'returns the number of rows for the default state' do
finder = described_class.new(user)
- expect(finder.row_count).to eq(5)
+ expect(finder.row_count).to eq(4)
end
it 'returns the number of rows for a given state' do
@@ -790,10 +790,10 @@ describe IssuesFinder do
describe '#with_confidentiality_access_check' do
let(:guest) { create(:user) }
- set(:authorized_user) { create(:user) }
- set(:project) { create(:project, namespace: authorized_user.namespace) }
- set(:public_issue) { create(:issue, project: project) }
- set(:confidential_issue) { create(:issue, project: project, confidential: true) }
+ let_it_be(:authorized_user) { create(:user) }
+ let_it_be(:project) { create(:project, namespace: authorized_user.namespace) }
+ let_it_be(:public_issue) { create(:issue, project: project) }
+ let_it_be(:confidential_issue) { create(:issue, project: project, confidential: true) }
context 'when no project filter is given' do
let(:params) { {} }
diff --git a/spec/finders/jobs_finder_spec.rb b/spec/finders/jobs_finder_spec.rb
index 675d170b90e..01f9ec03c79 100644
--- a/spec/finders/jobs_finder_spec.rb
+++ b/spec/finders/jobs_finder_spec.rb
@@ -3,13 +3,13 @@
require 'spec_helper'
describe JobsFinder, '#execute' do
- set(:user) { create(:user) }
- set(:admin) { create(:user, :admin) }
- set(:project) { create(:project, :private, public_builds: false) }
- set(:pipeline) { create(:ci_pipeline, project: project) }
- set(:job_1) { create(:ci_build) }
- set(:job_2) { create(:ci_build, :running) }
- set(:job_3) { create(:ci_build, :success, pipeline: pipeline) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:admin) { create(:user, :admin) }
+ let_it_be(:project) { create(:project, :private, public_builds: false) }
+ let_it_be(:pipeline) { create(:ci_pipeline, project: project) }
+ let_it_be(:job_1) { create(:ci_build) }
+ let_it_be(:job_2) { create(:ci_build, :running) }
+ let_it_be(:job_3) { create(:ci_build, :success, pipeline: pipeline) }
let(:params) { {} }
diff --git a/spec/finders/members_finder_spec.rb b/spec/finders/members_finder_spec.rb
index f7331f689ea..f6df727f7db 100644
--- a/spec/finders/members_finder_spec.rb
+++ b/spec/finders/members_finder_spec.rb
@@ -3,13 +3,13 @@
require 'spec_helper'
describe MembersFinder, '#execute' do
- set(:group) { create(:group) }
- set(:nested_group) { create(:group, parent: group) }
- set(:project) { create(:project, namespace: nested_group) }
- set(:user1) { create(:user) }
- set(:user2) { create(:user) }
- set(:user3) { create(:user) }
- set(:user4) { create(:user) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:nested_group) { create(:group, parent: group) }
+ let_it_be(:project, reload: true) { create(:project, namespace: nested_group) }
+ let_it_be(:user1) { create(:user) }
+ let_it_be(:user2) { create(:user) }
+ let_it_be(:user3) { create(:user) }
+ let_it_be(:user4) { create(:user) }
it 'returns members for project and parent groups' do
nested_group.request_access(user1)
@@ -128,10 +128,10 @@ describe MembersFinder, '#execute' do
context 'when include_invited_groups_members == true' do
subject { described_class.new(project, user2).execute(include_relations: [:inherited, :direct, :invited_groups_members]) }
- set(:linked_group) { create(:group, :public) }
- set(:nested_linked_group) { create(:group, parent: linked_group) }
- set(:linked_group_member) { linked_group.add_guest(user1) }
- set(:nested_linked_group_member) { nested_linked_group.add_guest(user2) }
+ let_it_be(:linked_group) { create(:group, :public) }
+ let_it_be(:nested_linked_group) { create(:group, parent: linked_group) }
+ let_it_be(:linked_group_member) { linked_group.add_guest(user1) }
+ let_it_be(:nested_linked_group_member) { nested_linked_group.add_guest(user2) }
it 'includes all the invited_groups members including members inherited from ancestor groups' do
create(:project_group_link, project: project, group: nested_linked_group)
diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb
index 849387b72bd..42211f7ac9d 100644
--- a/spec/finders/merge_requests_finder_spec.rb
+++ b/spec/finders/merge_requests_finder_spec.rb
@@ -214,13 +214,13 @@ describe MergeRequestsFinder do
merge_request3.assignees = [user2, user3]
end
- set(:user3) { create(:user) }
+ let_it_be(:user3) { create(:user) }
let(:params) { { assignee_username: [user2.username, user3.username] } }
let(:expected_issuables) { [merge_request3] }
end
it_behaves_like 'no assignee filter' do
- set(:user3) { create(:user) }
+ let_it_be(:user3) { create(:user) }
let(:expected_issuables) { [merge_request4, merge_request5] }
end
diff --git a/spec/finders/resource_label_event_finder_spec.rb b/spec/finders/resource_label_event_finder_spec.rb
index c894387100d..5068ea19d63 100644
--- a/spec/finders/resource_label_event_finder_spec.rb
+++ b/spec/finders/resource_label_event_finder_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
describe ResourceLabelEventFinder do
- set(:user) { create(:user) }
- set(:issue_project) { create(:project) }
- set(:issue) { create(:issue, project: issue_project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:issue_project) { create(:project) }
+ let_it_be(:issue) { create(:issue, project: issue_project) }
describe '#execute' do
subject { described_class.new(user, issue).execute }
diff --git a/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb b/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
index ac4cf1734a5..f294d7f7fcd 100644
--- a/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
+++ b/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
@@ -18,7 +18,10 @@ describe Gitlab::SidekiqLogging::StructuredLogger do
"jid" => "da883554ee4fe414012f5f42",
"created_at" => created_at.to_f,
"enqueued_at" => created_at.to_f,
- "correlation_id" => 'cid'
+ "correlation_id" => 'cid',
+ "error_message" => "wrong number of arguments (2 for 3)",
+ "error_class" => "ArgumentError",
+ "error_backtrace" => []
}
end
@@ -26,7 +29,7 @@ describe Gitlab::SidekiqLogging::StructuredLogger do
let(:clock_thread_cputime_start) { 0.222222299 }
let(:clock_thread_cputime_end) { 1.333333799 }
let(:start_payload) do
- job.merge(
+ job.except('error_backtrace', 'error_class', 'error_message').merge(
'message' => 'TestWorker JID-da883554ee4fe414012f5f42: start',
'job_status' => 'start',
'pid' => Process.pid,
diff --git a/spec/presenters/ci/bridge_presenter_spec.rb b/spec/presenters/ci/bridge_presenter_spec.rb
index 1c2eeced20c..2a4c40a7eaa 100644
--- a/spec/presenters/ci/bridge_presenter_spec.rb
+++ b/spec/presenters/ci/bridge_presenter_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
describe Ci::BridgePresenter do
- set(:project) { create(:project) }
- set(:pipeline) { create(:ci_pipeline, project: project) }
- set(:bridge) { create(:ci_bridge, pipeline: pipeline, status: :failed) }
+ let_it_be(:project) { create(:project) }
+ let_it_be(:pipeline) { create(:ci_pipeline, project: project) }
+ let_it_be(:bridge) { create(:ci_bridge, pipeline: pipeline, status: :failed) }
subject(:presenter) do
described_class.new(bridge)
diff --git a/spec/presenters/ci/trigger_presenter_spec.rb b/spec/presenters/ci/trigger_presenter_spec.rb
index ac3967f4f77..41cb436f928 100644
--- a/spec/presenters/ci/trigger_presenter_spec.rb
+++ b/spec/presenters/ci/trigger_presenter_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
describe Ci::TriggerPresenter do
- set(:user) { create(:user) }
- set(:project) { create(:project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project) }
- set(:trigger) do
+ let_it_be(:trigger) do
create(:ci_trigger, token: '123456789abcd', project: project)
end
diff --git a/spec/presenters/event_presenter_spec.rb b/spec/presenters/event_presenter_spec.rb
index 79f5e359141..eb94d838370 100644
--- a/spec/presenters/event_presenter_spec.rb
+++ b/spec/presenters/event_presenter_spec.rb
@@ -5,11 +5,11 @@ require 'spec_helper'
describe EventPresenter do
include Gitlab::Routing.url_helpers
- set(:group) { create(:group) }
- set(:project) { create(:project, group: group) }
- set(:target) { create(:milestone, project: project) }
- set(:group_event) { create(:event, :created, project: nil, group: group, target: target) }
- set(:project_event) { create(:event, :created, project: project, target: target) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, group: group) }
+ let_it_be(:target) { create(:milestone, project: project) }
+ let_it_be(:group_event) { create(:event, :created, project: nil, group: group, target: target) }
+ let_it_be(:project_event) { create(:event, :created, project: project, target: target) }
describe '#resource_parent_name' do
context 'with group event' do
diff --git a/spec/presenters/label_presenter_spec.rb b/spec/presenters/label_presenter_spec.rb
index e9f9657490d..9578d017af5 100644
--- a/spec/presenters/label_presenter_spec.rb
+++ b/spec/presenters/label_presenter_spec.rb
@@ -5,8 +5,8 @@ require 'spec_helper'
describe LabelPresenter do
include Gitlab::Routing.url_helpers
- set(:group) { create(:group) }
- set(:project) { create(:project, group: group) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, group: group) }
let(:label) { build_stubbed(:label, project: project).present(issuable_subject: project) }
let(:group_label) { build_stubbed(:group_label, group: group).present(issuable_subject: project) }
diff --git a/spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb b/spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb
index cfb68ffa585..b4071d1b0fe 100644
--- a/spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb
+++ b/spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Ci::CreatePipelineService, '#execute' do
- set(:project) { create(:project, :repository) }
- set(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:user) { create(:user) }
let(:ref_name) { 'master' }
let(:service) do
diff --git a/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb b/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb
index c29c56c2b04..b487730d07f 100644
--- a/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb
+++ b/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb
@@ -5,12 +5,12 @@ require 'spec_helper'
describe Ci::PipelineProcessing::AtomicProcessingService::StatusCollection do
using RSpec::Parameterized::TableSyntax
- set(:pipeline) { create(:ci_pipeline) }
- set(:build_a) { create(:ci_build, :success, name: 'build-a', stage: 'build', stage_idx: 0, pipeline: pipeline) }
- set(:build_b) { create(:ci_build, :failed, name: 'build-b', stage: 'build', stage_idx: 0, pipeline: pipeline) }
- set(:test_a) { create(:ci_build, :running, name: 'test-a', stage: 'test', stage_idx: 1, pipeline: pipeline) }
- set(:test_b) { create(:ci_build, :pending, name: 'test-b', stage: 'test', stage_idx: 1, pipeline: pipeline) }
- set(:deploy) { create(:ci_build, :created, name: 'deploy', stage: 'deploy', stage_idx: 2, pipeline: pipeline) }
+ let_it_be(:pipeline) { create(:ci_pipeline) }
+ let_it_be(:build_a) { create(:ci_build, :success, name: 'build-a', stage: 'build', stage_idx: 0, pipeline: pipeline) }
+ let_it_be(:build_b) { create(:ci_build, :failed, name: 'build-b', stage: 'build', stage_idx: 0, pipeline: pipeline) }
+ let_it_be(:test_a) { create(:ci_build, :running, name: 'test-a', stage: 'test', stage_idx: 1, pipeline: pipeline) }
+ let_it_be(:test_b) { create(:ci_build, :pending, name: 'test-b', stage: 'test', stage_idx: 1, pipeline: pipeline) }
+ let_it_be(:deploy) { create(:ci_build, :created, name: 'deploy', stage: 'deploy', stage_idx: 2, pipeline: pipeline) }
let(:collection) { described_class.new(pipeline) }
diff --git a/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb b/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb
index 20583ff77e9..5f7279ee550 100644
--- a/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb
+++ b/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb
@@ -7,9 +7,9 @@ describe Metrics::Dashboard::CloneDashboardService, :use_clean_rails_memory_stor
STAGES = ::Gitlab::Metrics::Dashboard::Stages
- set(:user) { create(:user) }
- set(:project) { create(:project, :repository) }
- set(:environment) { create(:environment, project: project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:environment) { create(:environment, project: project) }
describe '#execute' do
subject(:service_call) { described_class.new(project, user, params).execute }
diff --git a/yarn.lock b/yarn.lock
index c667eac957b..e614b6bb2af 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -12369,6 +12369,13 @@ yargs@^7.0.0:
y18n "^3.2.1"
yargs-parser "^5.0.0"
+yarn-check-webpack-plugin@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/yarn-check-webpack-plugin/-/yarn-check-webpack-plugin-1.2.0.tgz#0eb00cdcdb430f0494222a3eab1d2832737840cc"
+ integrity sha512-BKjFMmI2rsSxIVY6kXaYSpC/9rpfj/9Lm2armdJ+mYvCYuONfiK2+b9q6r8fYFEYJaB2Uv0hPuLvUvAwTVZ8Sg==
+ dependencies:
+ chalk "^2.4.2"
+
yarn-deduplicate@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/yarn-deduplicate/-/yarn-deduplicate-1.1.1.tgz#19b4a87654b66f55bf3a4bd6b153b4e4ab1b6e6d"