• /
  • EnglishEspañol日本語한국어Português
  • Log inStart now

Record deployments with the Ruby agent

The New Relic Ruby agent allows you to send information about application deployments by using the REST API or a Capistrano recipe (versions 2.x and 3.x) distributed with the Ruby agent. You can then view deployments in the New Relic UI. By default, all deployment information is recorded in your production environment. You can also customize the rails_env variable for other environments, such as staging.

Assign an application name

To assign an application name:

  1. Download the latest version of the Ruby agent.
  2. Set the app_name in your newrelic.yml file to a meaningful name.

This will assign instances in the given environment the label given by app_name when browsing your data in the New Relic user interface. The deployment upload script will use that label to associate an app with the deployment.

Add your user key

Optionally, you can record deployments via the New Relic REST API v2. To do this, provide your user key to the agent configuration using api_key. When this configuration is present, the newrelic deployments command automatically uses the REST API v2 deployment endpoint.

Record with the command line

If you installed the Ruby agent as a gem, you can record deployments directly by using the newrelic executable:

bash
$
newrelic deployments

Depending on your environment, you may need to run:

bash
$
bundle exec newrelic deployment

You can use several optional values with newrelic. The description is short text.

bash
$
deployments [OPTIONS] [description]
$
OPTIONS:
$
-a, --appname=name Set the application name.
$
-i, --appid=ID Set the application ID
$
If not provided, will connect to the New Relic collector to get it
$
Default is app_name setting in newrelic.yml
$
-e, --environment=name Override the (RAILS|RUBY)_ENV setting
$
-u, --user=USER Specify the user deploying.
$
-r, --revision=REV Specify the revision being deployed
$
-c, --changes Read in a change log from the standard input
$
-h Print this help

When using the -c option, you can pipe the change log into the script. If not piping when using the -c option, select control-D to signify the end of file (EOF).

Record with Capistrano 3.x

The New Relic Ruby agent contains a Capistrano recipe that can record app deployments. After assigning your app name, edit your Capistrano files to communicate with the agent:

  1. At the top of your Capfile, add the following line:

    require 'new_relic/recipes'
  2. In your deploy.rb file, include:

    after "deploy:updated", "newrelic:notice_deployment"

Record with Capistrano 2.x

You can record Capistrano 2.x deployments with the New Relic agent:

  1. Tell Capistrano to load New Relic's recipes:

  2. Add the following hooks to your deploy.rb file:

    # Notify New Relic of deployments.
    # This goes out even if the deploy fails, sadly.
    after "deploy", "newrelic:notice_deployment"
    after "deploy:migrations", "newrelic:notice_deployment"
    after "deploy:cold", "newrelic:notice_deployment"

The next time you run cap deploy, the agent notifies New Relic of the deployment, and all time series charts will show the deployment event.

Customize your Capistrano configuration

If Capistrano is running the deployment notification recipe on a remote build machine,the build machine must have your . You can either copy a valid newrelic.yml file to the build machine (possibly using a Capistrano Before Hook) or call set :newrelic_license_key, 'YOUR_LICENSE_KEY' in your Capistrano configuration.

You can customize some deployment information by using Capistrano variables. If defined, these will override the defaults. These apply to both Capistrano 2 and 3.

Capistrano 2 and 3 variables

Description

newrelic_appname

The app where the deployment will appear. By default this comes from the definition in the newrelic.yml file for the given rails_env.

If you set this value from the command line, you can only specify one application name. If you set this value in newrelic.yml, only the first application name will be used.

newrelic_changelog

The change log, which is determined by running the svn/git log command from the local working directory where the Capistrano command was issued.

newrelic_desc

Descriptive text that appears with the deployment. Default is empty.

newrelic_license_key

The New Relic to use. By default this comes from the definition in the newrelic.yml file for the given rails_env. This is not the same as your REST API key.

newrelic_revision

The revision recorded for the deployment. Recommendation: If you are using Subversion, consider including the tag or branch name in addition to the revision.

newrelic_user

The user to associate with the deployment.

Override Capistrano settings

In any version of Capistrano, you can override settings in your deploy.rb:

set :newrelic_user, "username"

To override settings with Capistrano 2.x: From the command line:

bash
$
cap production deploy -Snewrelic_desc="Deploying beta Krakatau release"

This example will prompt for content that will appear in the deployment's change log:

set(:newrelic_changelog) do
Capistrano::CLI.ui.ask "Enter a summary of changes: "
end

Deploy to staging

By default, the newrelic_rpm gem comes with Capistrano tasks to record all deployments in your production environment. If you have a separate staging application, you can change the rails_env variable setting so that staging deployments are recorded in the staging app instead of the production app.

To identify deployments to your staging environment, use Capistrano or the command line.

Deploy to staging

Comments

Capistrano multistage

If you are using Capistrano multistage, add this line to config/deploy/staging.rb:

set :rails_env, "staging"

Capistrano 2.x

If you are using Capistrano 2.x, add this information from the command line:

bash
$
cap -s rails_env=staging deployment_task_name
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.