KapostDeploy
Table of Contents
- Features
- Requirements
- Configuration Options
- Setup
- Tests
- Versioning
- Contributions
- License
- History
- Credits
Features
KapostDeploy::Task.define
creates the following rake tasks to aid in the pipeline promotion deployment of Heroku applications
[promote]
Promotes a source environment to production
[promote:before_promote]
Executes application-defined before promotion code as defined in task config (See below)
[promote:after_promote]
Executes application-defined after promotion code as defined in task config (See below)
Simple Example:
require "kapost_deploy/task"
KapostDeploy::Task.define do |config|
config.app = "cabbage-staging"
config.to = "cabbage-production"
config.pipeline = "cabbage"
config.heroku_api_token = "123"
config.after do
puts "It's Miller time"
end
end
A slightly more complex example which will create 6 rake tasks: stage:before_stage, stage, stage:after_stage, promote:before_promote, promote, promote:after_promote
require "kapost_deploy/task"
require "kapost_deploy/plugins/slack_after_promote"
require "kapost_deploy/plugins/slack_github_diff"
require "kapost_deploy/plugins/db_migrate"
CONFIG = {
slack_config: {
webhook_url: "https://hooks.slack.com/services/34326/FDSJFH127/68357sdhfjhHSJGFNMDngsd",
channel: "#danger",
icon_url: "http://yourcompany.s3.amazonaws.com/logo.png"
},
git_config: {
github_repo: "yourcompany/widget"
}
}.freeze
KapostDeploy::Task.define(:stage) do |config|
config.app = "cabbage-staging"
config.to = "cabbage-sandbox"
config.pipeline = "cabbage"
config.heroku_api_token = "123"
config.options = CONFIG
config.after do
sleep 60*2 wait for dynos to restart
slack.notify "The eagle has landed. [Go validate](https://testbed.sandbox.com/dashboard)!"
Launchy.open("https://testbed.sandbox.com/dashboard")
end
config.add_plugin(KapostDeploy::Plugins::DbMigrate)
end
KapostDeploy::Task.define do |config|
config.app = "cabbage-sandboxc"
config.to = "cabbage-production"
config.pipeline = "cabbage"
config.heroku_api_token = "123"
config.options = CONFIG
config.before do
puts "Are you sure you did x, y, and z? yes/no: "
confirm = gets.strip
exit(1) unless confirm.downcase == "yes"
end
config.add_plugin(KapostDeploy::Plugins::SlackGithubDiff)
config.add_plugin(KapostDeploy::Plugins::DbMigrate)
config.add_plugin(KapostDeploy::Plugins::SlackAfterPromote)
end
Requirements
- MRI 2.3.0
- Heroku Toolbelt installed
Configuration Options
-
pipeline
: The application pipeline to promote -
heroku_api_token
: Your platform api token. You can retrieve this usingheroku auth:token
-
app
: The application to be promoted -
to
: The downstream application(s) to receive the promotion. For multiple environments, use an array. -
options
: An options hash containing plugin options:-
git_config
: If using github plugins, an options hash containing the following keys:-
github_repo
: The owner/repo string, such askapost/kapost_deploy
-
-
slack_config
: If using slack plugins, an options hash containing the following keys:-
webhook_url
: The webhook URL you added to your slack integrations -
username
: The apparent username of the notifier defaults to "webhooks bot" -
channel
: The channel name to post the notification to defaults to "#general" -
icon_url
: A URL for the icon image optional -
icon_emoji
: Emoji name to use instead of an icon optional
-
-
Setup
To install, type the following:
gem install kapost_deploy
Add the following to your Gemfile:
gem "kapost_deploy"
Tests
To test, run:
bundle exec rake
Versioning
Read Semantic Versioning for details. Briefly, it means:
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
Contributions
Fork the project. Make your feature addition or bug fix. Do not bump the version number. Send me a pull request. Bonus points for topic branches.
License
MIT
Copyright (c) 2016 Kapost.
History
Read the CHANGELOG for details. Built with Gemsmith.
Credits
Developed by Brandon Croft at brandon@kapost.com.