Collaboration basics

Gemfury's collaboration feature allows multiple individuals to collaborate on a team account. The team account can be another personal account, an organization account, or a Heroku add-on instance.

The overview of collaboration on Gemfury is:

  • Team account owner adds personal accounts as collaborators.
  • Collaborators are able to perform operations on behalf of the team account via impersonation
  • Those collaborator operations are restricted by owner-defined permissions.
  • Team account is paid based on usage, while individual accounts can stay free.

In this article, we will refer to the main account with shared packages as the team account, which is accessed by the collaborators described as personal accounts.

Managing collaborators

Adding, removing, and modifying collaborators on the account can only be performed by one of the owners of this account. You can manage collaborators either via the account Dashboard or through the command line.

On the dashboard, select the "Collaborate" tab and navigate to the section titled "Collaborators for this account". This section will list the collaborators and allows you to add others either by username or by email address. If a particular collaborator does not have a Gemfury account, don't fret, we will email them and you'll be notified when they sign up for one.

To remove or modify the permisisons for a particular collaborator, hover over their row in the UI and the appropriate action links will appear. Only certain account types and plans allow permission modification.

On the command line, you can manage collaborators with the sharing action of the Gemfury CLI. Use the following commands to list, add, or remove collaborators. Gemfury CLI does not currently support modification of permissions.

$ fury sharing                  # List
$ fury sharing:add EMAIL        # Add
$ fury sharing:remove USERNAME  # Remove

Impersonation

To collaborate on an account, you will stay logged into your personal account on both the Dashboard and the CLI, and use the impersonation capability to perform operations on the team account.

On the dashboard, select the "Collaborate" tab and navigate to the section titled "This account collaborates on". This section lists all the accounts for which you have been added as a collaborator. You can click "Switch to this account" for one of the listed accounts to enter its context.

Now you can use Gemfury as the team account. The dashboard will show the packages of that account, and allow you to perform permitted operations. To return to your own account, select the "Collaborate" tab and hit "Switch back to my account" button.

On the command line, use the --as switch to impersonate the team account. Most of the account operations described in the Gemfury CLI article can be modified with that switch to impersonate an account.

$ fury list --as TEAM-USERNAME                    # List packages
$ fury push package-1.0.0.gem --as TEAM-USERNAME  # Upload a package
$ fury yank package -v 1.0.0 --as TEAM-USERNAME   # Yank a package version

Repository access

Your Repository URL can be modified to access the team account while using your personal secret token. To access the team account, deploy with the following Repo-URL:

https://my-secret-token@gem.fury.io/team-username/

And if you need to push packages with cURL, POST to the following URL:

https://push.fury.io/<my-secret-token>/<team-username>/

Learn more about URL-based impersonation in the Repository URL and uploading packages articles.

Permissions

When adding collaborators to the team account, the individual collaborators' actions are restricted based on the permission level chosen by the owner. A collaborator is initially added with a default permission, and if the team account payment plan includes extended permission management, the owner can subsequently modify those permissions.

The permissions are:

  • Download only permission allows the personal account to list and install packages from the team account using appropriately crafted Repo URL. The dashboard will only allow the user to list and view metadata associated with each package.
  • Upload and download permission allows allows everything included in the Download only permission and adds ability to upload and delete package versions.
  • Owner has full access to the account. In addition to the Upload and download capabilities, the owner of an account can manage collaborators and modify account settings including billing information and payment plan.

Permissions can only be changed by the owner via the Dashboard "Collaborate" tab. The current permission level appears next to each collaborator in the "Collaborators for this account" section of the page.