Using the Pulse CLI¶
To measure the performance of your team you must send information to Pulse about changes, deployments, and incidents whenever they happen in the software delivery workflow of your primary application or service.
To push information about these key events to Pulse using the CLI you must complete these main steps:
-
Installing the Pulse CLI
Download and set up the latest version of the Pulse CLI binary.
-
Pushing changes and deployments
Push information about changes and deployments when they happen on your software delivery workflow.
-
Pushing incidents
Push information about incidents when they're solved.
Note
The Pulse CLI is a simplified abstraction over the Pulse Ingestion API. If the CLI requirements below don't fit your use case, explore the Ingestion API docs for interacting directly with the API.
Before you begin¶
Consider the following before setting up the integration using the Pulse CLI:
-
Make sure that you have an API key provided by Pulse to identify your organization and authorize you to send data to Pulse.
-
When reporting events to Pulse you should use the field
system
to associate each event with the most granular unit that you will use to filter data on the Pulse dashboards, such as by application or service, product, or any other entity or group of entities in your organization.Important
Typically, the value of
system
should be the name of the CVS repository corresponding to the event.However, if you're using a monorepo the value of
system
should be the name of the component in the repository instead.Although the field
system
is optional, if you don't report this information you won't be able to filter the data on the Pulse dashboards. Events without a specifiedsystem
will be grouped under a special system called_unknown_
. -
When reporting deployments to Pulse you should use the field
teams
to associate each deployment with the list of teams that contributed with changes included in the deployment.
1. Installing the Pulse CLI¶
Download the latest version of the Pulse CLI for your operating system and make sure that you're able to run the binary.
Tip
If you're using GitHub but our one-click integration doesn't fit your requirements we recommend that you use our Pulse GitHub Action as a convenient way to report events directly from your GitHub Actions workflows.
The Pulse GitHub Action acts as a wrapper for the Pulse CLI and accepts the same fields as the Pulse CLI.
-
Run the command to download the correct binary for your operating system:
On 32-bit operating systems:
curl -fsSL -o pulse-event-cli https://artifacts.codacy.com/codacy/pulse/event-cli/latest/pulse-event-cli_linux_386/pulse-event-cli && \ chmod +x pulse-event-cli
On 64-bit operating systems:
curl -fsSL -o pulse-event-cli https://artifacts.codacy.com/codacy/pulse/event-cli/latest/pulse-event-cli_linux_amd64/pulse-event-cli && \ chmod +x pulse-event-cli
curl -fsSL -o pulse-event-cli https://artifacts.codacy.com/codacy/pulse/event-cli/latest/pulse-event-cli_darwin_amd64/pulse-event-cli && \ chmod +x pulse-event-cli
On 32-bit operating systems:
curl -fsSL -o pulse-event-cli.exe https://artifacts.codacy.com/codacy/pulse/event-cli/latest/pulse-event-cli_windows_386/pulse-event-cli.exe
On 64-bit operating systems:
curl -fsSL -o pulse-event-cli.exe https://artifacts.codacy.com/codacy/pulse/event-cli/latest/pulse-event-cli_windows_amd64/pulse-event-cli.exe
-
Test if you can run the CLI:
./pulse-event-cli help
pulse-event-cli.exe help
If you need a specific Pulse CLI use the commands above but replace latest
with the version you want.
2. Pushing changes and deployments¶
Report an event to Pulse whenever your team deploys code to production, including the list of code changes included in that deployment:
- For SaaS applications, report the event on each deployment to your production environment.
- For self-hosted applications, a better option is to report the event each time you make an artifact available to any user of your application, such as when you release new binaries or upload a new version to an app store.
Pulse uses these reports to calculate the metrics Lead time for changes and Deployment frequency.
Using Git¶
If you're using Git, send the following information when reporting changes and deployments to Pulse:
Field | Description | Format |
---|---|---|
previous-deployment-ref | Git reference of the previous deployment. This can be a tag or a commit identifier. |
String |
identifier | Version number or another unique identifier of the deployment. | String |
timestamp | Time when the deployment finished. | Number (Unix epoch timestamp in seconds) |
system | Optional. Repository or component to assign to this event. | String |
teams | Optional. Teams responsible for the changes in the deployment. | String (comma-separated list) |
Run the following command to report a deployment and its changes:
git clone <Git repository URL>
cd <local Git repository directory>
./pulse-event-cli push git deployment \
--api-key "<API key>" \
--previous-deployment-ref "<previous deployment ref>" \
--identifier "<deployment identifier>" \
--timestamp "$(date +%s)" \
[--system "<system>"] \
[--teams <comma-separated list of teams>]
git clone <Git repository URL>
cd <local Git repository directory>
event-cli.exe push git deployment \
--api-key "<API key>" \
--previous-deployment-ref "<previous deployment ref>" \
--identifier "<deployment identifier>" \
--timestamp "<timestamp>" \
[--system "<system>"] \
[--teams <comma-separated list of teams>]
The command automatically reports all commits done between the previous deployment and the HEAD
of the Git repository as changes that belong to the deployment being reported.
Without using Git¶
If you don't use Git or prefer to have more fine-grained control over the information that you send when reporting changes and deployments, send separate reports for each change and deployment as described below.
Tip
If you're using Git, it's simpler to report changes and deployments together.
-
Send the following information when reporting changes to Pulse:
Field Description Format identifier The commit identifier. String timestamp Time when the commit was first pushed to the repository. Number
(Unix epoch timestamp in seconds)system Optional. Repository or component to assign to this event. String Run the following command to report each change:
./pulse-event-cli push change \ --api-key "<API key>" \ --identifier "<change identifier>" \ --timestamp "$(date +%s)" \ [--system "<system>"]
event-cli.exe push change \ --api-key "<API key>" \ --identifier "<change identifier>" \ --timestamp "<timestamp>" \ [--system "<system>"]
-
Send the following information when reporting deployments to Pulse:
Field Description Format identifier Version number or another unique identifier of the deployment. String timestamp Time when the deployment finished. Number
(Unix epoch timestamp in seconds)system Optional. Repository or component to assign to this event. String teams Optional. Teams responsible for the changes in the deployment. String
(comma-separated list)Commit identifiers included in the deployment. String
(space-separated list)Run the following command to report each deployment:
./pulse-event-cli push deployment \ --api-key "<API key>" \ --identifier "<deployment identifier>" \ --timestamp "$(date +%s)" \ [--system "<system>"] \ [--teams <comma-separated list of teams>] \ <space-separated list of commit identifiers>
event-cli.exe push deployment \ --api-key "<API key>" \ --identifier "<deployment identifier>" \ --timestamp "<timestamp>" \ [--system "<system>"] \ [--teams <comma-separated list of teams>] \ <space-separated list of commit identifiers>
3. Pushing incidents¶
Report an event to Pulse whenever an incident resulting from a release or infrastructure configuration change to production is solved. Incidents are any form of degraded service that require remediation:
- The incident is created when you detect a service impairment or service outage in production.
- The incident is resolved when you apply a hotfix or patch, or when you rollback the changes to restore the service in production.
Typically, it's possible to keep track of this information using your monitoring infrastructure or your ticketing system.
Pulse uses these reports to calculate the metrics Time to recover and Change failure rate.
Send the following information when reporting incidents to Pulse:
Field | Description | Format |
---|---|---|
identifier | A unique identifier of the incident. | String |
timestampCreated | Time when the incident started or was detected. | Number (Unix epoch timestamp in seconds) |
timestampResolved | Time when the incident was resolved. | Number (Unix epoch timestamp in seconds) |
system | Optional. Repository or component to assign to this event. | String |
Run the following command to report each incident:
./pulse-event-cli push incident \
--api-key "<API key>" \
--identifier "<incident identifier>" \
--timestampCreated "<timestampCreated>" \
--timestampResolved "$(date +%s)" \
[--system "<system>"]
pulse-event-cli.exe push incident \
--api-key "<API key>" \
--identifier "<incident identifier>" \
--timestampCreated "<timestampCreated>" \
--timestampResolved "<timestampResolved>" \
[--system "<system>"]