Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
157a2212
Commit
157a2212
authored
Dec 02, 2020
by
Steve Abrams
Committed by
Ash McKenzie
Dec 02, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add dependency_proxy_manifests model
Create dependency_proxy_manifests Add group associations and fixtures
parent
4454cd3e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
163 additions
and
0 deletions
+163
-0
app/models/dependency_proxy/manifest.rb
app/models/dependency_proxy/manifest.rb
+14
-0
changelogs/unreleased/241639-manifest-caching-models.yml
changelogs/unreleased/241639-manifest-caching-models.yml
+5
-0
db/migrate/20201125030847_create_dependency_proxy_manifests.rb
...grate/20201125030847_create_dependency_proxy_manifests.rb
+33
-0
db/schema_migrations/20201125030847
db/schema_migrations/20201125030847
+1
-0
db/structure.sql
db/structure.sql
+34
-0
spec/factories/dependency_proxy.rb
spec/factories/dependency_proxy.rb
+7
-0
spec/fixtures/dependency_proxy/manifest
spec/fixtures/dependency_proxy/manifest
+38
-0
spec/models/dependency_proxy/manifest_spec.rb
spec/models/dependency_proxy/manifest_spec.rb
+31
-0
No files found.
app/models/dependency_proxy/manifest.rb
0 → 100644
View file @
157a2212
# frozen_string_literal: true
class
DependencyProxy::Manifest
<
ApplicationRecord
include
FileStoreMounter
belongs_to
:group
validates
:group
,
presence:
true
validates
:file
,
presence:
true
validates
:file_name
,
presence:
true
validates
:digest
,
presence:
true
mount_file_store_uploader
DependencyProxy
::
FileUploader
end
changelogs/unreleased/241639-manifest-caching-models.yml
0 → 100644
View file @
157a2212
---
title
:
Add dependency_proxy_manifests table and associations
merge_request
:
48535
author
:
type
:
added
db/migrate/20201125030847_create_dependency_proxy_manifests.rb
0 → 100644
View file @
157a2212
# frozen_string_literal: true
class
CreateDependencyProxyManifests
<
ActiveRecord
::
Migration
[
6.0
]
include
Gitlab
::
Database
::
MigrationHelpers
DOWNTIME
=
false
disable_ddl_transaction!
def
up
with_lock_retries
do
create_table
:dependency_proxy_manifests
,
if_not_exists:
true
do
|
t
|
t
.
timestamps_with_timezone
t
.
references
:group
,
index:
false
,
null:
false
,
foreign_key:
{
to_table: :namespaces
,
on_delete: :cascade
},
type: :bigint
t
.
bigint
:size
t
.
integer
:file_store
,
limit:
2
t
.
text
:file_name
,
null:
false
t
.
text
:file
,
null:
false
t
.
text
:digest
,
null:
false
t
.
index
[
:group_id
,
:digest
],
name:
'index_dependency_proxy_manifests_on_group_id_and_digest'
end
end
add_text_limit
:dependency_proxy_manifests
,
:file_name
,
255
add_text_limit
:dependency_proxy_manifests
,
:file
,
255
add_text_limit
:dependency_proxy_manifests
,
:digest
,
255
end
def
down
drop_table
:dependency_proxy_manifests
end
end
db/schema_migrations/20201125030847
0 → 100644
View file @
157a2212
e19c6d019f1478e5998b2a264c5327dc82da7fde7edd19b15da70a30c5779844
\ No newline at end of file
db/structure.sql
View file @
157a2212
...
@@ -11617,6 +11617,30 @@ CREATE SEQUENCE dependency_proxy_group_settings_id_seq
...
@@ -11617,6 +11617,30 @@ CREATE SEQUENCE dependency_proxy_group_settings_id_seq
ALTER
SEQUENCE
dependency_proxy_group_settings_id_seq
OWNED
BY
dependency_proxy_group_settings
.
id
;
ALTER
SEQUENCE
dependency_proxy_group_settings_id_seq
OWNED
BY
dependency_proxy_group_settings
.
id
;
CREATE
TABLE
dependency_proxy_manifests
(
id
bigint
NOT
NULL
,
created_at
timestamp
with
time
zone
NOT
NULL
,
updated_at
timestamp
with
time
zone
NOT
NULL
,
group_id
bigint
NOT
NULL
,
size
bigint
,
file_store
smallint
,
file_name
text
NOT
NULL
,
file
text
NOT
NULL
,
digest
text
NOT
NULL
,
CONSTRAINT
check_079b293a7b
CHECK
((
char_length
(
file
)
<=
255
)),
CONSTRAINT
check_c579e3f586
CHECK
((
char_length
(
file_name
)
<=
255
)),
CONSTRAINT
check_f5d9996bf1
CHECK
((
char_length
(
digest
)
<=
255
))
);
CREATE
SEQUENCE
dependency_proxy_manifests_id_seq
START
WITH
1
INCREMENT
BY
1
NO
MINVALUE
NO
MAXVALUE
CACHE
1
;
ALTER
SEQUENCE
dependency_proxy_manifests_id_seq
OWNED
BY
dependency_proxy_manifests
.
id
;
CREATE
TABLE
deploy_keys_projects
(
CREATE
TABLE
deploy_keys_projects
(
id
integer
NOT
NULL
,
id
integer
NOT
NULL
,
deploy_key_id
integer
NOT
NULL
,
deploy_key_id
integer
NOT
NULL
,
...
@@ -18014,6 +18038,8 @@ ALTER TABLE ONLY dependency_proxy_blobs ALTER COLUMN id SET DEFAULT nextval('dep
...
@@ -18014,6 +18038,8 @@ ALTER TABLE ONLY dependency_proxy_blobs ALTER COLUMN id SET DEFAULT nextval('dep
ALTER
TABLE
ONLY
dependency_proxy_group_settings
ALTER
COLUMN
id
SET
DEFAULT
nextval
(
'dependency_proxy_group_settings_id_seq'
::
regclass
);
ALTER
TABLE
ONLY
dependency_proxy_group_settings
ALTER
COLUMN
id
SET
DEFAULT
nextval
(
'dependency_proxy_group_settings_id_seq'
::
regclass
);
ALTER
TABLE
ONLY
dependency_proxy_manifests
ALTER
COLUMN
id
SET
DEFAULT
nextval
(
'dependency_proxy_manifests_id_seq'
::
regclass
);
ALTER
TABLE
ONLY
deploy_keys_projects
ALTER
COLUMN
id
SET
DEFAULT
nextval
(
'deploy_keys_projects_id_seq'
::
regclass
);
ALTER
TABLE
ONLY
deploy_keys_projects
ALTER
COLUMN
id
SET
DEFAULT
nextval
(
'deploy_keys_projects_id_seq'
::
regclass
);
ALTER
TABLE
ONLY
deploy_tokens
ALTER
COLUMN
id
SET
DEFAULT
nextval
(
'deploy_tokens_id_seq'
::
regclass
);
ALTER
TABLE
ONLY
deploy_tokens
ALTER
COLUMN
id
SET
DEFAULT
nextval
(
'deploy_tokens_id_seq'
::
regclass
);
...
@@ -19136,6 +19162,9 @@ ALTER TABLE ONLY dependency_proxy_blobs
...
@@ -19136,6 +19162,9 @@ ALTER TABLE ONLY dependency_proxy_blobs
ALTER
TABLE
ONLY
dependency_proxy_group_settings
ALTER
TABLE
ONLY
dependency_proxy_group_settings
ADD
CONSTRAINT
dependency_proxy_group_settings_pkey
PRIMARY
KEY
(
id
);
ADD
CONSTRAINT
dependency_proxy_group_settings_pkey
PRIMARY
KEY
(
id
);
ALTER
TABLE
ONLY
dependency_proxy_manifests
ADD
CONSTRAINT
dependency_proxy_manifests_pkey
PRIMARY
KEY
(
id
);
ALTER
TABLE
ONLY
deploy_keys_projects
ALTER
TABLE
ONLY
deploy_keys_projects
ADD
CONSTRAINT
deploy_keys_projects_pkey
PRIMARY
KEY
(
id
);
ADD
CONSTRAINT
deploy_keys_projects_pkey
PRIMARY
KEY
(
id
);
...
@@ -20876,6 +20905,8 @@ CREATE INDEX index_dependency_proxy_blobs_on_group_id_and_file_name ON dependenc
...
@@ -20876,6 +20905,8 @@ CREATE INDEX index_dependency_proxy_blobs_on_group_id_and_file_name ON dependenc
CREATE
INDEX
index_dependency_proxy_group_settings_on_group_id
ON
dependency_proxy_group_settings
USING
btree
(
group_id
);
CREATE
INDEX
index_dependency_proxy_group_settings_on_group_id
ON
dependency_proxy_group_settings
USING
btree
(
group_id
);
CREATE
INDEX
index_dependency_proxy_manifests_on_group_id_and_digest
ON
dependency_proxy_manifests
USING
btree
(
group_id
,
digest
);
CREATE
INDEX
index_deploy_key_id_on_protected_branch_push_access_levels
ON
protected_branch_push_access_levels
USING
btree
(
deploy_key_id
);
CREATE
INDEX
index_deploy_key_id_on_protected_branch_push_access_levels
ON
protected_branch_push_access_levels
USING
btree
(
deploy_key_id
);
CREATE
INDEX
index_deploy_keys_projects_on_deploy_key_id
ON
deploy_keys_projects
USING
btree
(
deploy_key_id
);
CREATE
INDEX
index_deploy_keys_projects_on_deploy_key_id
ON
deploy_keys_projects
USING
btree
(
deploy_key_id
);
...
@@ -24474,6 +24505,9 @@ ALTER TABLE ONLY user_permission_export_uploads
...
@@ -24474,6 +24505,9 @@ ALTER TABLE ONLY user_permission_export_uploads
ALTER
TABLE
ONLY
repository_languages
ALTER
TABLE
ONLY
repository_languages
ADD
CONSTRAINT
fk_rails_a750ec87a8
FOREIGN
KEY
(
project_id
)
REFERENCES
projects
(
id
)
ON
DELETE
CASCADE
;
ADD
CONSTRAINT
fk_rails_a750ec87a8
FOREIGN
KEY
(
project_id
)
REFERENCES
projects
(
id
)
ON
DELETE
CASCADE
;
ALTER
TABLE
ONLY
dependency_proxy_manifests
ADD
CONSTRAINT
fk_rails_a758021fb0
FOREIGN
KEY
(
group_id
)
REFERENCES
namespaces
(
id
)
ON
DELETE
CASCADE
;
ALTER
TABLE
ONLY
resource_milestone_events
ALTER
TABLE
ONLY
resource_milestone_events
ADD
CONSTRAINT
fk_rails_a788026e85
FOREIGN
KEY
(
issue_id
)
REFERENCES
issues
(
id
)
ON
DELETE
CASCADE
;
ADD
CONSTRAINT
fk_rails_a788026e85
FOREIGN
KEY
(
issue_id
)
REFERENCES
issues
(
id
)
ON
DELETE
CASCADE
;
...
...
spec/factories/dependency_proxy.rb
View file @
157a2212
...
@@ -6,4 +6,11 @@ FactoryBot.define do
...
@@ -6,4 +6,11 @@ FactoryBot.define do
file
{
fixture_file_upload
(
'spec/fixtures/dependency_proxy/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz'
)
}
file
{
fixture_file_upload
(
'spec/fixtures/dependency_proxy/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz'
)
}
file_name
{
'a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz'
}
file_name
{
'a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz'
}
end
end
factory
:dependency_proxy_manifest
,
class:
'DependencyProxy::Manifest'
do
group
file
{
fixture_file_upload
(
'spec/fixtures/dependency_proxy/manifest'
)
}
digest
{
'sha256:5ab5a6872b264fe4fd35d63991b9b7d8425f4bc79e7cf4d563c10956581170c9'
}
file_name
{
'manifest'
}
end
end
end
spec/fixtures/dependency_proxy/manifest
0 → 100644
View file @
157a2212
{
"schemaVersion": 1,
"name": "library/alpine",
"tag": "latest",
"architecture": "amd64",
"fsLayers": [
{
"blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
},
{
"blobSum": "sha256:188c0c94c7c576fff0792aca7ec73d67a2f7f4cb3a6e53a84559337260b36964"
}
],
"history": [
{
"v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\"],\"ArgsEscaped\":true,\"Image\":\"sha256:3543079adc6fb5170279692361be8b24e89ef1809a374c1b4429e1d560d1459c\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"container\":\"8c59eb170e19b8c3768b8d06c91053b0debf4a6fa6a452df394145fe9b885ea5\",\"container_config\":{\"Hostname\":\"8c59eb170e19\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) \",\"CMD [\\\"/bin/sh\\\"]\"],\"ArgsEscaped\":true,\"Image\":\"sha256:3543079adc6fb5170279692361be8b24e89ef1809a374c1b4429e1d560d1459c\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"created\":\"2020-10-22T02:19:24.499382102Z\",\"docker_version\":\"18.09.7\",\"id\":\"c5f1aab5bb88eaf1aa62bea08ea6654547d43fd4d15b1a476c77e705dd5385ba\",\"os\":\"linux\",\"parent\":\"dc0b50cc52bc340d7848a62cfe8a756f4420592f4984f7a680ef8f9d258176ed\",\"throwaway\":true}"
},
{
"v1Compatibility": "{\"id\":\"dc0b50cc52bc340d7848a62cfe8a756f4420592f4984f7a680ef8f9d258176ed\",\"created\":\"2020-10-22T02:19:24.33416307Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD file:f17f65714f703db9012f00e5ec98d0b2541ff6147c2633f7ab9ba659d0c507f4 in / \"]}}"
}
],
"signatures": [
{
"header": {
"jwk": {
"crv": "P-256",
"kid": "XOTE:DZ4C:YBPJ:3O3L:YI4B:NYXU:T4VR:USH6:CXXN:SELU:CSCC:FVPE",
"kty": "EC",
"x": "cR1zye_3354mdbD7Dn-mtXNXvtPtmLlUVDa5vH6Lp74",
"y": "rldUXSllLit6_2BW6AV8aqkwWJXHoYPG9OwkIBouwxQ"
},
"alg": "ES256"
},
"signature": "DYB2iB-XKIisqp5Q0OXFOBIOlBOuRV7pnZuKy0cxVB2Qj1VFRhWX4Tq336y0VMWbF6ma1he5A1E_Vk4jazrJ9g",
"protected": "eyJmb3JtYXRMZW5ndGgiOjIxMzcsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAyMC0xMS0yNFQyMjowMTo1MVoifQ"
}
]
}
\ No newline at end of file
spec/models/dependency_proxy/manifest_spec.rb
0 → 100644
View file @
157a2212
# frozen_string_literal: true
require
'spec_helper'
RSpec
.
describe
DependencyProxy
::
Manifest
,
type: :model
do
describe
'relationships'
do
it
{
is_expected
.
to
belong_to
(
:group
)
}
end
describe
'validations'
do
it
{
is_expected
.
to
validate_presence_of
(
:group
)
}
it
{
is_expected
.
to
validate_presence_of
(
:file
)
}
it
{
is_expected
.
to
validate_presence_of
(
:file_name
)
}
it
{
is_expected
.
to
validate_presence_of
(
:digest
)
}
end
describe
'file is being stored'
do
subject
{
create
(
:dependency_proxy_manifest
)
}
context
'when existing object has local store'
do
it_behaves_like
'mounted file in local store'
end
context
'when direct upload is enabled'
do
before
do
stub_dependency_proxy_object_storage
(
direct_upload:
true
)
end
it_behaves_like
'mounted file in object store'
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment