Skip to content

CocoaPods Repository MVC

Problem to solve

Binary Repository Managers (https://en.wikipedia.org/wiki/Binary_repository_manager) allow easy access and management of artifacts created and consumed by projects. Software like JFrog Artifactory (https://www.jfrog.com/artifactory/) or Sonatype Nexus (https://www.sonatype.com/nexus-repository-oss) are examples of multi-protocol repositories.

We want to enhance our existing artifacts system, allowing access using the most common package managers. This issue focuses on CocoaPods

Proposal

The MVP will focus on:

Intended users

Further details

Proposal

A list of possible MRs for any given package system:

MVP MRs (system is not useable until all are completed)

  • Empty file structure (api file, base service for this package)
  • Authentication system for 'logging in' to the package manager
  • Identify metadata and create applicable tables
  • Endpoints required for upload/publish
  • Endpoints required for install/download
  • Endpoints required for remove

Possible post-MVP MRs (system is useable, but these may be desired before releasing for general use)

  • Endpoints required for search
  • Limits on file sizes
  • Tracking for metrics
  • Support building/updating deleting packages with CI
  • Group/sub-group support
  • Instance level support

Permissions and Security

Permissions and Security

The permissions should follow the same levels as NPM, Maven and Conan.

Project Permissions: UI

Action Guest Reporter Developer Maintainer Owner
Pull from Maven, NPM, Conan, NuGet x x x x
Publish to Maven, NPM, Conan, NuGet x x x

Project Permissions: API

Action Guest Reporter Developer Maintainer Owner
List project packages (5) x x
Get a project package x x
List package files x x
Delete a project package x x

Group Permissions: API

Action Guest Reporter Developer Maintainer Owner
List the packages of a group (coming soon) x x

Instance Level Permissions

Action Guest Reporter Developer Maintainer Owner
Enable the Packages feature x
Migrate local packages to object storage x
Disable the Packages feature x

Documentation

Testing

What does success look like, and how can we measure that?

What is the type of buyer?

Links / references