https://github.com/googlecloudplatform/google-cloud-gemserver
CLI to deploy a private gem server to Google App Engine Flex
https://github.com/googlecloudplatform/google-cloud-gemserver
gcp gemserver ruby
Last synced: 4 months ago
JSON representation
CLI to deploy a private gem server to Google App Engine Flex
- Host: GitHub
- URL: https://github.com/googlecloudplatform/google-cloud-gemserver
- Owner: GoogleCloudPlatform
- License: apache-2.0
- Created: 2017-07-13T15:21:38.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-04-24T05:54:28.000Z (almost 2 years ago)
- Last Synced: 2025-10-07T19:06:13.738Z (5 months ago)
- Topics: gcp, gemserver, ruby
- Language: Ruby
- Homepage:
- Size: 143 KB
- Stars: 46
- Watchers: 28
- Forks: 14
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Google::Cloud::Gemserver
[](https://travis-ci.org/GoogleCloudPlatform/google-cloud-gemserver)
This gem is a tool that lets you manage, interact with, and deploy a [private gem
server](https://github.com/bundler/gemstash) to a Google Cloud Platform project.
The gemserver acts as a private gem repository for your gems similar
to how rubygems.org works with the exception that pushing and installing gems
are protected operations.
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'google-cloud-gemserver'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install google-cloud-gemserver
## Usage
### Basic Prerequisites
1) Create a Google Cloud Platform (GCP) project.
2) Install and setup the [gcloud SDK](https://cloud.google.com/sdk/downloads). Currently, versions 161+ are supported.
3) Authenticate gcloud by using a [service account](https://cloud.google.com/docs/authentication/getting-started) or [application default credentials](https://developers.google.com/identity/protocols/application-default-credentials).
Using a service account is the recommended method for authentication; application default credentials should only be used for development purporses. Read this [authentication guide](docs/authentication.md) for more information.
4) Running acceptance or performance tests requires you to have the Cloud SQL proxy running with your Cloud SQL instance. Visit this [link](https://cloud.google.com/sql/docs/mysql/connect-admin-proxy) to learn how to install and run it (steps 3 and 5 can be skipped).
### Typical Workflow
1) Deploy a gemserver by running: `google-cloud-gemserver create --use-proj YOUR_PROJECT_ID`. This deploys the gemserver in a Google App Engine project as the default service. It also creates a new Cloud SQL instance with machine type db-f1-micro. Note that this machine type is only recommended for development / testing and is not under the Cloud SQL SLA coverage.
2) Generate a key (referred to as my-key) by running `google-cloud-gemserver create-key --use-proj YOUR_PROJECT_ID` for your gemserver. By default, this generates a key with both read and write permissions. For more information about keys, read [this](docs/key.md).
3) Add this key to your bundle config by running `bundle config http://gemserver-url.com/private/ my-key` where gemserver-url is the same as your project's url, e.g. http://my-project.appspot.com/private/. This is necessary to download gems.
4) Add this key to your gem credentials as my-key (in ~/.gem/credentials): `:my-key: [KEY]` This is necessary to push gems (if the key has write permission).
5) Push private gems to the gemserver as described [below](#pushing-gems).
6) Download private gems by modifying your Gemfile as described
[below](#fetching-gems).
### Pushing gems
Note: ensure `my-key` has the read permission and is added in your gem
credentials file (~/.gem/credentials)
`gem push my-gem --key my-key --host http://my-gemserver.com/private/`
### Fetching gems
Note: ensure `my-key` has the read permission and is set in your bundle
config by running `bundle config http://my-gemserver.com/private/ my-key`
1) Add `source "http://my-gemserver.com"` to the top of your Gemfile
2) Add the following to your Gemfile:
```
source "http://my-gemserver.com/private" do
gem "my-private-gem1"
(other private gems here)
end
```
3) Run `bundle install`
### Yanking gems
Note: ensure `my-key` has the write permission and is added in your gem
credentials file (~/.gem/credentials)
`gem push my-gem --key my-key --host http://my-gemserver.com/private/`
1) Run `gem yank --key my-key [GEM_NAME] --host
http://my-gemserver.com/private`
Gems can not be "unyanked" so once a gem has been yanked it cannot be pushed
to the gemserver again with the same name and version. It can be pushed if the
version number is changed, however.
### Gemserver commands
* `google-cloud-gemserver config`
Usage:
google-cloud-gemserver config
Displays the config the current deployed gemserver is using (if one is running)
* `google-cloud-gemserver create`
Usage:
google-cloud-gemserver create
Options:
* -g, [--use-proj=USE_PROJ] # Existing project to deploy gemserver to
* -i, [--use-inst=USE_INST] # Existing project to deploy gemserver to
Creates and deploys the gem server then starts it
* `google-cloud-gemserver create-key`
Usage:
google-cloud-gemserver create-key
Options:
* -r, [--remote=REMOTE] # The gemserver URL, i.e. gemserver.com
* -p, [--permissions=PERMISSIONS] # Options: write, read, both. Default is
both.
* -g, [--use-proj=USE_PROJ] # The GCP project the gemserver was
deployed to.
Creates an authentication key
* `google-cloud-gemserver delete-key`
Usage:
google-cloud-gemserver delete-key
Options:
* -r, [--remote=REMOTE] # The gemserver URL, i.e. gemserver.com
* -k, [--key=KEY] # The key to delete
* -g, [--use-proj=USE_PROJ] # The GCP project the gemserver was
deployed to.
Deletes a given key
* `google-cloud-gemserver delete`
Usage:
google-cloud-gemserver delete
Options:
* -g, [--use-proj=USE_PROJ] # Project id of GCP project the gemserver was deployed to. Warning: parent project and CloudSQL instance will also be deleted
Delete a given gemserver
* `google-cloud-gemserver start`
Usage:
google-cloud-gemserver start
Starts the gem server. This will be run automatically after a deploy.
Running this locally will start the gemserver locally
* `google-cloud-gemserver stats`
Usage:
google-cloud-gemserver stats
Options:
* -r, [--remote=REMOTE] # The gemserver URL, i.e. gemserver.com
* -g, [--use-proj=USE_PROJ] # The GCP project the gemserver was
deployed to.
Displays statistics on the given gemserver
* `google-cloud-gemserver update`
Usage:
google-cloud-gemserver update
Redeploys the gemserver with the current config file and google-cloud-gemserver gem version (a deploy must have succeeded for 'update' to work)
* `google-cloud-gemserver gen-config`
Usage:
google-cloud-gemserver gen-config
Generates configuration files with default values
* `google-cloud-gemserver help`
Usage:
google-cloud-gemserver help [COMMAND]
Describe available commands or one specific command
More documentation can be found in the docs [directory](docs/).
## Contributing
Detailed information can be found in [CONTRIBUTING.md](CONTRIBUTING.md).