Deploy your code to Heroku. This step requires that you deploy to a Heroku
deploy target. By default this will create a new ssh-key for each deploy, see
Using wercker SSH key pair
.
These dependencies are required for this step. Make sure they are installed, and
available in $PATH
before running this step:
- git
- mktemp
The following dependencies are only required when using temporary keys (see:
Using wercker SSH key pair
):
- curl
- ssh-keygen
- Remove some changing of directories.
- Mark
source_dir
as deprecated. In a future version this will be replaced withcwd
, currently they however are not compatible.
key
(required) API key used to create a new SSH key. Alternatively you can use the global environment variable$HEROKU_KEY
.user
(required) User used to create a new SSH key. Alternatively you can use the global environment variable$HEROKU_USER
.app-name
(required) The name of the app that you are deploying. Alternatively you can use$HEROKU_APP_NAME
.key-name
(optional) Specify the name of the key that should be used for this deployment. If left empty, a temporary key will be created for the deployment.retry
(optional) When a deploy to Heroku fails, a new deploy is automatically performed after 5 seconds. If you want to disable this behavior, setretry
tofalse
.run
(optional) Run a command on heroku after the code is deployed succesfully. This option can be used to migrate the database for example.install-toolbelt
(optional). If set to 'true', the toolbelt will be installed. Note: specifying a run command will also install the toolbelt.keep-repository
(optional) This will allow a user to keep the original history of the repository, speeding up deployment. Important: changes made during the build will not be deployed. Also keep in mind that deploying an already up to date repo will not result in an application restart. Use therun
parameter to forcibly reload to achieve this. This feature is considered beta, expect issues. If you find one, please contact us.
deploy:
steps:
- heroku-deploy:
key-name: MY_DEPLOY_KEY
To push to Heroku we need to have an ssh key. We can dynamically generate a key, add the key to your repository and then remove it, during each build. But this results in an e-mail from Heroku on each deploy.
To prevent this you can generate a private/public key pair on wercker and manually add the public key to Heroku.
- Generate a new key in wercker in the
Key management
section (application
-settings
). - Copy the public key and add it on Heroku to the
SSH Keys section
section (account
). - In wercker edit the Heroku deploy target to which you would like to deploy,
and add an environment variable:
- Give the environment variable a name (remember this name, you will need it in the last step).
- Select
SSH Key pair
as the type and select the key pair which you created earlier.
- In the
heroku-deploy
step in yourwercker.yml
add thekey-name
property with the value you used earlier:
deploy:
steps:
- heroku-deploy:
key-name: MY_DEPLOY_KEY
In the above example the MY_DEPLOY_KEY
should match the environment variable
name you used in wercker. Note: you should not prefix it with a dollar sign or
post fix it with _PRIVATE
or _PUBLIC
.
- wernerb for fixing submodule support and allowing the repository to be reused.
The MIT License (MIT)
- Fix sending randomly generating SSH keys to Heroku
- Refactor
- fixed: ssh: connect to host git.heroku.com port 22: Connection timed out
- Remove some changing of directories
- Mark
source_dir
as deprecated. In a future version this will be replaced withcwd
, currently they however are not compatible.
- Check if API key is still valid.
- Check if app exists on Heroku.
- Suppress output of curl.
- fix: allow step to be run multiple times in a single deploy
- add install_toolbelt option
- Major refactor:
- Only install toolbelt if needed (currently only required for running a command).
- Fix security issue, where the host key was ignored.
- run.sh now uses functions.
- Add
keep-repository
parameter.
- Fix pushing submodules to heroku by flattening submodules if found.
- Make sure git-core is installed when heroku toolbelt.
- Fix bugs related to the
run
parameter.
- Update README, to clearify using a SSH Key pair.
- Fixed release that also works on ruby based boxes (always installs ruby 1.9.1)
- fix for apt-get bug: deb files are now included [broken]
- Bug fixes
- Adds
run
option.
- Retry on failure.
- Only call
heroku keys:remove
if a ephemeral key was used (wercker/step-heroku-deploy#2). - Update README.
- Fix wrong option check.
- Added validation to
key-name
option.
- Added
key-name
option.
- Initial release.