CocoaPods Repository

Cloudsmith provides public & private repositories for CocoaPods (Swift & Objective-C)

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects.
For more information on Cocoapods, please see:

  • Cocoapods.org: Official Cocoapods public repository and documentation
Contextual Documentation

The examples in this document are generic. Cloudsmith provides contextual setup instructions within each repository, complete with copy n' paste snippets (with your namespace/repo pre-configured).

In the following examples:

IdentifierDescription
OWNERYour Cloudsmith account name or organization name (namespace)
REPOSITORYYour Cloudsmith Repository name (also called "slug")
TOKENYour Cloudsmith Entitlement Token (see Entitlements for more details)
USERNAMEYour Cloudsmith username
PASSWORDYour Cloudsmith password
API-KEYYour Cloudsmith API Key
PACKAGE_NAMEThe name of your package
PACKAGE_VERSIONThe version number of your package

Upload a Package

Upload via the Cloudsmith CLI

For full details of how to install and setup the Cloudsmith CLI, see Command-Line Interface
The command to upload an (Objective-C or Swift) CocoaPods package via the Cloudsmith CLI is:

cloudsmith push cocoapods OWNER/REPOSITORY PACKAGE_NAME.tar.gz

Example:

cloudsmith push cocoapods org/repo your-package.tar.gz

Upload via Cloudsmith Website

Please see Upload a Package for details of how to upload via the Website UI.


Download / Install a Package

Setup

Before you can install packages from your Cloudsmith repository you'll need to add your repository to your project's Podfile. This can be done using the source keyword in your project's Podfile. The source keyword is a URL to a git repository with the metadata index of all of your repository's private pods.

To add the repository to your project's Podfile, add the following:

Public Repositories

source 'https://dl.cloudsmith.io/public/OWNER/REPOSITORY/cocoapods/index.git'

Private Repositories

📘

Private Cloudsmith repositories require authentication. You can choose between two types of authentication, Entitlement Token Authentication or HTTP Basic Authentication.

The setup method will differ depending on what authentication type you choose to use.

🚧

Entitlement Tokens, User Credentials and API-Keys should be treated as secrets and you should ensure that you do not commit them in configurations files along with source code, or expose them in any logs

🚧

When using HTTP basic authentication, you'll need to configure Git with the proper credentials. Git's standard authentication mechanisms are used by CocoaPods and can be configured in the normal way. For example, you could use git's per-user credential store like so:

git config --global credential.helper store
echo "https://USERNAME:[email protected]" > ~/.git-credentials

source 'https://dl.cloudsmith.io/TOKEN/OWNER/REPOSITORY/cocoapods/index.git'
source 'https://USERNAME:[email protected]/basic/OWNER/REPOSITORY/cocoapods/index.git'
source 'https://USERNAME:[email protected]/basic/OWNER/REPOSITORY/cocoapods/index.git'
source 'https://token:[email protected]/basic/OWNER/REPOSITORY/cocoapods/index.git'

Specifying Dependencies

Add the latest version of a package to your Podfile using the syntax outlined by CocoaPods:

Public Repositories

source 'https://dl.cloudsmith.io/public/OWNER/REPOSITORY/cocoapods/index.git'
target 'MyApp' do
  pod 'PACKAGE_NAME', '~> PACKAGE_VERSION'
end

Private Repositories

source 'https://dl.cloudsmith.io/TOKEN/OWNER/REPOSITORY/cocoapods/index.git'
target 'MyApp' do
  pod 'PACKAGE_NAME', '~> PACKAGE_VERSION'
end
source 'https://dl.cloudsmith.io/basic/OWNER/REPOSITORY/cocoapods/index.git'
target 'MyApp' do
  pod 'PACKAGE_NAME', '~> PACKAGE_VERSION'
end

Installing a Package

Once added, the cocoapods tool will download the dependency to the Pods directory in your project, and update the Podfile.lock after running following command:

pod install

🚧

When a dependency is added to the Podfile and retrieved via pod install, it gets the new dependency, along with any of its transitive dependencies. However, the cocoapods tool won’t change the versions of any already-acquired dependencies unless that’s necessary to get the new dependency.

The cocoapods tool also stores a cache of the index on your machine, so in order to receive the most up to date version of the index it may be necessary to use the --repo-update flag to force a repository update before installing your project's pods.


Configuration Example

Here is a complete (but minimal) Podfile using entitlement token authentication:

source 'https://dl.cloudsmith.io/abcedef1234567/org/repo/cocoapods/index.git'

workspace 'cocoapods-install-example.xcworkspace'

target 'cocoapods-install-example' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for cocoapods-install-example
  pod 'cloudsmith-cocoapods-example', '~> 1.0.158207047536418'

end

Upstream Proxying / Caching

Not Supported

Key Signing Support

Not Supported by Format

Troubleshooting

Please see the Troubleshooting page for further help and information.


Cloudsmith is the new standard in Package / Artifact Management and Software Distribution

With support for all major package formats, you can trust us to manage your software supply chain.


Start My Free Trial Now
Cookie Declaration (Manage Cookies)