Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gusto/semantic-release-rubygem
A semantic-release plugin for publishing Ruby gems
https://github.com/gusto/semantic-release-rubygem
publish release rubygems semantic-release semantic-release-plugin version
Last synced: 11 days ago
JSON representation
A semantic-release plugin for publishing Ruby gems
- Host: GitHub
- URL: https://github.com/gusto/semantic-release-rubygem
- Owner: Gusto
- License: mit
- Created: 2020-06-25T21:41:38.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-07-18T22:39:24.000Z (over 1 year ago)
- Last Synced: 2024-12-08T21:44:23.252Z (13 days ago)
- Topics: publish, release, rubygems, semantic-release, semantic-release-plugin, version
- Language: JavaScript
- Homepage:
- Size: 1.64 MB
- Stars: 10
- Watchers: 10
- Forks: 12
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# semantic-release-rubygem
[**semantic-release**](https://github.com/semantic-release/semantic-release) plugin for publishing Ruby [gems](https://rubygems.org/).
| Step | Description | |
|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------|
| `verifyConditions` | Locate and validate a `.gemspec` file, locate and validate a `lib/**/version.rb` file, verify the presence of the `GEM_HOST_API_KEY` environment variable, and create a credentials file with the API key.| |
| `prepare` | Update the version in the `lib/**/version.rb` version file and [build](https://guides.rubygems.org/command-reference/#gem-build) the gem. | |
| `publish` | [Push the gem](https://guides.rubygems.org/command-reference/#gem-push) to the gem server. | |## Install
```bash
$ npm install semantic-release-rubygem -D
```## Usage
Add the plugin to the [**semantic-release** configuration file](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration):
```json
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"semantic-release-rubygem",
]
}
```## Configuration
### Gem server authentication
The gem server authentication configuration is **required**.
The API key must be set using the `GEM_HOST_API_KEY` environment variable. To retrieve the key, you can:
1. Login to [RubyGems.org](https://rubygems.org) and click on ['Edit Profile'](https://rubygems.org/profile/edit). You'll find the key in the 'API Access' section of the page.
2. Sign into your gem host using the [`gem signin`](https://guides.rubygems.org/command-reference/#gem-signin) command. After you enter your credentials, your API key will be stored as a YAML value in the `~/.gem/credentials` file under the `rubygems_api_key` key (or the hostname of your gem server).### gemspec file
This plugin requires exactly one valid `.gemspec` file to be present in the CWD.
### `lib/**/version.rb` file
This plugin requires the version of the published gem to be defined in a `version.rb` file somewhere in the `lib` folder (e.g. `lib/my/gem/version.rb`). The version itself must be defined as a constant named `VERSION` inside the file:
```ruby
module My
module Gem
VERSION = '0.0.0'
end
end```
### Options
| Options | Description | Default |
|--------------|---------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
| `gemHost` | The gem server to push the gem to. | `'https//rubygems.org'` |
| `updateGemfileLock` | Whether to update the version of the gem to publish in the `Gemfile.lock`. This is useful if you are using the [`@semantic-release/git`](https://github.com/semantic-release/git) plugin to keep the version up to date in your git repo. When set to `true` the plugin will run `bundle install` to update the version. If another command is desired, it can be set by passing a string (e.g. `bundle appraisal install`). | `false` |
| `gemPublish` | Whether to publish your gem to the gem server. | `true` |
| `gemFileDir` | Directory path in which to write the the built `.gem` file. If `false`, the `.gem` file will not be kept on the file system. | `false` |