Skip to content

GitLab Next

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • GitLab GitLab
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 39,511
    • Issues 39,511
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 1,221
    • Merge requests 1,221
  • Requirements
    • Requirements
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
    • Value stream
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GitLab.org
  • GitLabGitLab
  • Merge requests
  • !52639

Merged
Created Jan 26, 2021 by Steve Abrams@sabrams🔴Maintainer6 of 7 tasks completed6/7 tasks

RubyGems metadata

  • Overview 23
  • Commits 1
  • Pipelines 19
  • Changes 21

💎 Context

This MR is part of the implementation effort to support RubyGems with the GitLab package registry. This adds the supporting models and tables that will be used to store RubyGem specific data.

🔍 What does this MR do?

  • Adds Packages::Rubygems::Metadatum model and packages_rubygems_metadata table, which will be used to store gem metadata for gems uploaded to the GitLab package registry.

  • Adds :rubygems as a package type

  • Adds plan limits for the maximum RubyGems package file size (default is 3GB). This limit was determined by looking at what the limit is on the public RubyGems.org registry (500MB based on this thread), and then deciding to bump the limit to match what we do for other package types on GitLab.com.

  • Adds supporting test fixtures and factories

🐘 Database

Up migration
== 20210203221631 CreatePackagesRubygemsMetadata: migrating ===================
-- create_table(:packages_rubygems_metadata, {:id=>false})
-- quote_column_name(:authors)
   -> 0.0000s
-- quote_column_name(:files)
   -> 0.0000s
-- quote_column_name(:summary)
   -> 0.0000s
-- quote_column_name(:description)
   -> 0.0000s
-- quote_column_name(:email)
   -> 0.0000s
-- quote_column_name(:homepage)
   -> 0.0000s
-- quote_column_name(:licenses)
   -> 0.0000s
-- quote_column_name(:metadata)
   -> 0.0000s
-- quote_column_name(:author)
   -> 0.0000s
-- quote_column_name(:bindir)
   -> 0.0000s
-- quote_column_name(:cert_chain)
   -> 0.0000s
-- quote_column_name(:executables)
   -> 0.0000s
-- quote_column_name(:extensions)
   -> 0.0000s
-- quote_column_name(:extra_rdoc_files)
   -> 0.0000s
-- quote_column_name(:platform)
   -> 0.0000s
-- quote_column_name(:post_install_message)
   -> 0.0000s
-- quote_column_name(:rdoc_options)
   -> 0.0000s
-- quote_column_name(:require_paths)
   -> 0.0000s
-- quote_column_name(:required_ruby_version)
   -> 0.0000s
-- quote_column_name(:required_rubygems_version)
   -> 0.0000s
-- quote_column_name(:requrements)
   -> 0.0000s
-- quote_column_name(:rubygems_version)
   -> 0.0000s
-- quote_column_name(:signing_key)
   -> 0.0000s
   -> 0.0213s
-- quote_table_name("check_994b68eb64")
   -> 0.0000s
-- quote_table_name("check_b0f4f8c853")
   -> 0.0000s
-- quote_table_name("check_8be21d92e7")
   -> 0.0000s
-- quote_table_name("check_0154a18c82")
   -> 0.0000s
-- quote_table_name("check_22814c771b")
   -> 0.0000s
-- quote_table_name("check_946cb96acb")
   -> 0.0000s
-- quote_table_name("check_7cb01436df")
   -> 0.0000s
-- quote_table_name("check_ea02f4800f")
   -> 0.0000s
-- quote_table_name("check_b7b296b420")
   -> 0.0000s
-- quote_table_name("check_9824fc9efc")
   -> 0.0000s
-- quote_table_name("check_6ff3abe325")
   -> 0.0000s
-- quote_table_name("check_5988451714")
   -> 0.0000s
-- quote_table_name("check_242293030e")
   -> 0.0000s
-- quote_table_name("check_6ac7043c50")
   -> 0.0000s
-- quote_table_name("check_5f9c84ea17")
   -> 0.0000s
-- quote_table_name("check_3d1b6f3a39")
   -> 0.0000s
-- quote_table_name("check_bf16b21a47")
   -> 0.0000s
-- quote_table_name("check_f76bad1a9a")
   -> 0.0000s
-- quote_table_name("check_ca641a3354")
   -> 0.0000s
-- quote_table_name("check_545f7606f9")
   -> 0.0000s
-- quote_table_name("check_add74953fe")
   -> 0.0000s
-- quote_table_name("check_27619a7922")
   -> 0.0000s
-- quote_table_name("check_9d42fa48ae")
   -> 0.0000s
-- quote_table_name(:packages_rubygems_metadata)
   -> 0.0000s
-- execute("ALTER TABLE \"packages_rubygems_metadata\"\nADD CONSTRAINT \"check_994b68eb64\" CHECK (char_length(\"authors\") <= 255),\nADD CONSTRAINT \"check_b0f4f8c853\" CHECK (char_length(\"files\") <= 255),\nADD CONSTRAINT \"check_8be21d92e7\" CHECK (char_length(\"summary\") <= 1024),\nADD CONSTRAINT \"check_0154a18c82\" CHECK (char_length(\"description\") <= 1024),\nADD CONSTRAINT \"check_22814c771b\" CHECK (char_length(\"email\") <= 255),\nADD CONSTRAINT \"check_946cb96acb\" CHECK (char_length(\"homepage\") <= 255),\nADD CONSTRAINT \"check_7cb01436df\" CHECK (char_length(\"licenses\") <= 255),\nADD CONSTRAINT \"check_ea02f4800f\" CHECK (char_length(\"metadata\") <= 255),\nADD CONSTRAINT \"check_b7b296b420\" CHECK (char_length(\"author\") <= 255),\nADD CONSTRAINT \"check_9824fc9efc\" CHECK (char_length(\"bindir\") <= 255),\nADD CONSTRAINT \"check_6ff3abe325\" CHECK (char_length(\"cert_chain\") <= 255),\nADD CONSTRAINT \"check_5988451714\" CHECK (char_length(\"executables\") <= 255),\nADD CONSTRAINT \"check_242293030e\" CHECK (char_length(\"extensions\") <= 255),\nADD CONSTRAINT \"check_6ac7043c50\" CHECK (char_length(\"extra_rdoc_files\") <= 255),\nADD CONSTRAINT \"check_5f9c84ea17\" CHECK (char_length(\"platform\") <= 255),\nADD CONSTRAINT \"check_3d1b6f3a39\" CHECK (char_length(\"post_install_message\") <= 255),\nADD CONSTRAINT \"check_bf16b21a47\" CHECK (char_length(\"rdoc_options\") <= 255),\nADD CONSTRAINT \"check_f76bad1a9a\" CHECK (char_length(\"require_paths\") <= 255),\nADD CONSTRAINT \"check_ca641a3354\" CHECK (char_length(\"required_ruby_version\") <= 255),\nADD CONSTRAINT \"check_545f7606f9\" CHECK (char_length(\"required_rubygems_version\") <= 255),\nADD CONSTRAINT \"check_add74953fe\" CHECK (char_length(\"requrements\") <= 255),\nADD CONSTRAINT \"check_27619a7922\" CHECK (char_length(\"rubygems_version\") <= 255),\nADD CONSTRAINT \"check_9d42fa48ae\" CHECK (char_length(\"signing_key\") <= 255)\n")
   -> 0.0052s
== 20210203221631 CreatePackagesRubygemsMetadata: migrated (0.0360s) ==========
Down migration
== 20210203221631 CreatePackagesRubygemsMetadata: reverting ===================
-- drop_table(:packages_rubygems_metadata)
   -> 0.0134s
== 20210203221631 CreatePackagesRubygemsMetadata: reverted (0.0134s) ==========

Screenshots (strongly suggested)

Not Applicable

☑ Does this MR meet the acceptance criteria?

Conformity

  • Changelog entry
  • [-] Documentation (if required)
  • Code review guidelines
  • Merge request performance guidelines
  • Style guides
  • Database guides
  • [-] Separation of EE specific content

Availability and Testing

  • Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process.
  • [-] Tested in all supported browsers
  • Informed Infrastructure department of a default or new setting change, if applicable per definition of done

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • [-] Label as security and @ mention @gitlab-com/gl-security/appsec
  • [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • [-] Security reports checked/validated by a reviewer from the AppSec team

Related to #299263 (closed)

Edited Feb 08, 2021 by Steve Abrams
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: 299263-rubygems-metadata-migration

Enable Gitpod?

To use Gitpod you must first enable the feature in the integrations section of your user preferences.

Cancel Enable Gitpod