gitlab-exporter 7.0.1 → 7.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +27 -9
- data/Gemfile.lock +1 -1
- data/lib/gitlab_exporter/database/ci_builds.rb +11 -14
- data/lib/gitlab_exporter/database/row_count.rb +7 -1
- data/lib/gitlab_exporter/version.rb +1 -1
- data/spec/database/ci_builds_spec.rb +4 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f44f68c2a2d894b29ec2c891e0b6af0248ddaa2cb2ffe2c972c5ce08dd8de2e
|
4
|
+
data.tar.gz: 44156a1741197ac6da5db3ddd9a85c839b0c969e73edde7e723edcdd6b9b5b3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f031bc1502b34f26690cd009d24f3d3f0c0e18cdd1167a21b9e8f6a135c24927f229ac0a7214cdd633943b8d9d588e8f1e8ff0cdba75a3b2f0474fdaf260d8ed
|
7
|
+
data.tar.gz: e267adae77f66e5470cc7d60485d249bc3bb692e54380b0cfd5dd6b552a769ec0ea9147ef4bcca8c3d27bba0e37027c367a5125d2e86c98b74419ad11c0dba34
|
data/.gitlab-ci.yml
CHANGED
@@ -1,13 +1,23 @@
|
|
1
|
-
|
1
|
+
default:
|
2
|
+
image: "ruby:2.3"
|
3
|
+
before_script:
|
4
|
+
- git config --global user.email "bot@gitlab.com"
|
5
|
+
- git config --global user.name "Bot User"
|
6
|
+
- bundle install -j $(nproc) --path vendor
|
7
|
+
cache:
|
8
|
+
paths:
|
9
|
+
- vendor
|
10
|
+
tags:
|
11
|
+
- gitlab-org
|
2
12
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
-
|
13
|
+
workflow:
|
14
|
+
rules:
|
15
|
+
# For merge requests, create a pipeline.
|
16
|
+
- if: '$CI_MERGE_REQUEST_IID'
|
17
|
+
# For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
|
18
|
+
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
19
|
+
# For tags, create a pipeline.
|
20
|
+
- if: '$CI_COMMIT_TAG'
|
11
21
|
|
12
22
|
rspec:
|
13
23
|
script:
|
@@ -16,3 +26,11 @@ rspec:
|
|
16
26
|
rubocop:
|
17
27
|
script:
|
18
28
|
- bundle exec rubocop
|
29
|
+
|
30
|
+
include:
|
31
|
+
- template: Security/DAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml
|
32
|
+
- template: Security/Container-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml
|
33
|
+
- template: Security/Dependency-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml
|
34
|
+
- template: Security/License-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/License-Scanning.gitlab-ci.yml
|
35
|
+
- template: Security/SAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
|
36
|
+
|
data/Gemfile.lock
CHANGED
@@ -21,8 +21,7 @@ module GitLab
|
|
21
21
|
ON namespaces.id = projects.namespace_id
|
22
22
|
LEFT JOIN namespace_statistics
|
23
23
|
ON namespace_statistics.namespace_id = namespaces.id
|
24
|
-
JOIN application_settings
|
25
|
-
ON application_settings.id = 1
|
24
|
+
JOIN application_settings ON (TRUE)
|
26
25
|
WHERE ci_builds.type = 'Ci::Build'
|
27
26
|
AND ci_builds.status = '%s'
|
28
27
|
-- The created_at filter has been introduced for performance reasons only
|
@@ -95,8 +94,7 @@ module GitLab
|
|
95
94
|
ON namespaces.id = projects.namespace_id
|
96
95
|
LEFT JOIN namespace_statistics
|
97
96
|
ON namespace_statistics.namespace_id = namespaces.id
|
98
|
-
JOIN application_settings
|
99
|
-
ON application_settings.id = 1
|
97
|
+
JOIN application_settings ON (TRUE)
|
100
98
|
WHERE ci_builds.type = 'Ci::Build'
|
101
99
|
AND ci_builds.status = 'running'
|
102
100
|
-- The created_at filter has been introduced for performance reasons only
|
@@ -144,9 +142,9 @@ module GitLab
|
|
144
142
|
ci_builds.trigger_request_id
|
145
143
|
SQL
|
146
144
|
|
147
|
-
|
145
|
+
EE_CHECK_QUERY =
|
148
146
|
<<~SQL.freeze
|
149
|
-
SELECT
|
147
|
+
SELECT COUNT(*) FROM licenses
|
150
148
|
SQL
|
151
149
|
|
152
150
|
REPEATED_COMMANDS_QUERY_EE =
|
@@ -175,8 +173,7 @@ module GitLab
|
|
175
173
|
ON namespaces.id = projects.namespace_id
|
176
174
|
LEFT JOIN namespace_statistics
|
177
175
|
ON namespace_statistics.namespace_id = namespaces.id
|
178
|
-
JOIN application_settings
|
179
|
-
ON application_settings.id = 1
|
176
|
+
JOIN application_settings ON (TRUE)
|
180
177
|
WHERE ci_builds.type = 'Ci::Build'
|
181
178
|
AND ci_builds.status IN ('running', 'pending')
|
182
179
|
-- The created_at filter has been introduced for performance reasons only
|
@@ -289,7 +286,7 @@ module GitLab
|
|
289
286
|
def builds(status)
|
290
287
|
results = []
|
291
288
|
|
292
|
-
query =
|
289
|
+
query = ee? ? BUILDS_QUERY_EE : BUILDS_QUERY_CE
|
293
290
|
query = query % [status] # rubocop:disable Style/FormatString
|
294
291
|
exec_query_with_custom_random_page_cost(query).each do |row|
|
295
292
|
results << transform_builds_row_to_values(row)
|
@@ -318,7 +315,7 @@ module GitLab
|
|
318
315
|
def per_runner_builds
|
319
316
|
results = []
|
320
317
|
|
321
|
-
query =
|
318
|
+
query = ee? ? PER_RUNNER_QUERY_EE : PER_RUNNER_QUERY_CE
|
322
319
|
exec_query_with_custom_random_page_cost(query).each do |row|
|
323
320
|
results << transform_per_runners_builds_row_to_values(row)
|
324
321
|
end
|
@@ -341,7 +338,7 @@ module GitLab
|
|
341
338
|
def repeated_commands
|
342
339
|
results = []
|
343
340
|
|
344
|
-
query =
|
341
|
+
query = ee? ? REPEATED_COMMANDS_QUERY_EE : REPEATED_COMMANDS_QUERY_CE
|
345
342
|
query = query % [allowed_repeated_commands_count] # rubocop:disable Style/FormatString
|
346
343
|
exec_query_with_custom_random_page_cost(query).each do |row|
|
347
344
|
results << transform_repeated_commands_row_to_values(row)
|
@@ -406,11 +403,11 @@ module GitLab
|
|
406
403
|
end
|
407
404
|
end
|
408
405
|
|
409
|
-
def
|
410
|
-
@
|
406
|
+
def ee?
|
407
|
+
@ee ||=
|
411
408
|
begin
|
412
409
|
with_connection_pool do |conn|
|
413
|
-
conn.exec(
|
410
|
+
conn.exec(EE_CHECK_QUERY)[0]["count"].to_i > 0 # rubocop:disable Style/NumericPredicate
|
414
411
|
end
|
415
412
|
rescue PG::UndefinedColumn
|
416
413
|
false
|
@@ -10,6 +10,11 @@ module GitLab
|
|
10
10
|
# #construct_query
|
11
11
|
# rubocop:disable Metrics/ClassLength
|
12
12
|
class RowCountCollector < Base
|
13
|
+
# We ignore mirrors with a next_execution_timestamp before
|
14
|
+
# 2020-03-28 because this is when we stopped processing mirrors
|
15
|
+
# for private projects on the free plan. Skipping those can
|
16
|
+
# significantly improve query performance:
|
17
|
+
# https://gitlab.com/gitlab-org/gitlab/-/issues/216252#note_334514544
|
13
18
|
WHERE_MIRROR_ENABLED = <<~SQL.freeze
|
14
19
|
projects.mirror = true
|
15
20
|
AND projects.archived = false
|
@@ -19,6 +24,7 @@ module GitLab
|
|
19
24
|
OR
|
20
25
|
plans.name IN ('early_adopter', 'bronze', 'silver', 'gold')
|
21
26
|
)
|
27
|
+
AND project_mirror_data.next_execution_timestamp > '2020-03-28'
|
22
28
|
SQL
|
23
29
|
|
24
30
|
MIRROR_QUERY = {
|
@@ -104,7 +110,7 @@ module GitLab
|
|
104
110
|
GROUP BY members.user_id
|
105
111
|
) AS u
|
106
112
|
ON users.id = u.user_id",
|
107
|
-
where: "
|
113
|
+
where: "user_type IS NULL",
|
108
114
|
fields: {
|
109
115
|
admin: {},
|
110
116
|
external: {},
|
@@ -9,7 +9,7 @@ describe GitLab::Exporter::Database do
|
|
9
9
|
let(:stale_builds_query) { "SELECT NOT UPDATED RUNNING" }
|
10
10
|
let(:per_runner_query_ee) { "SELECT ALL RUNNING PER RUNNER EE" }
|
11
11
|
let(:per_runner_query_ce) { "SELECT ALL RUNNING PER RUNNER CE" }
|
12
|
-
let(:
|
12
|
+
let(:ee_check_query) { "SELECT COUNT(*) FROM licenses" }
|
13
13
|
let(:repeated_commands_query_ee) { "SELECT EE REPEATED COMNANDS %d" }
|
14
14
|
let(:repeated_commands_query_ce) { "SELECT CE REPEATED COMNANDS %d" }
|
15
15
|
let(:unarchived_traces_query) { "SELECT UNARCHIVED TRACES %s LIST" }
|
@@ -22,11 +22,11 @@ describe GitLab::Exporter::Database do
|
|
22
22
|
let(:unarchived_traces_offset_minutes) { 60 }
|
23
23
|
|
24
24
|
def stub_ee
|
25
|
-
allow(connection).to receive(:exec).with(
|
25
|
+
allow(connection).to receive(:exec).with(ee_check_query).and_return([{ "count" => 1 }])
|
26
26
|
end
|
27
27
|
|
28
28
|
def stub_ce
|
29
|
-
allow(connection).to receive(:exec).with(
|
29
|
+
allow(connection).to receive(:exec).with(ee_check_query).and_return([{ "count" => 0 }])
|
30
30
|
end
|
31
31
|
|
32
32
|
def builds_query_row_ee(shared_runners_enabled, status, namespace_id, has_minutes, count)
|
@@ -86,7 +86,7 @@ describe GitLab::Exporter::Database do
|
|
86
86
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::STALE_BUILDS_QUERY", stale_builds_query)
|
87
87
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::PER_RUNNER_QUERY_EE", per_runner_query_ee)
|
88
88
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::PER_RUNNER_QUERY_CE", per_runner_query_ce)
|
89
|
-
stub_const("GitLab::Exporter::Database::CiBuildsCollector::
|
89
|
+
stub_const("GitLab::Exporter::Database::CiBuildsCollector::EE_CHECK_QUERY", ee_check_query)
|
90
90
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::REPEATED_COMMANDS_QUERY_EE", repeated_commands_query_ee)
|
91
91
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::REPEATED_COMMANDS_QUERY_CE", repeated_commands_query_ce)
|
92
92
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::UNARCHIVED_TRACES_QUERY", unarchived_traces_query)
|