Builds and integrations

Builds are the results of running scenario; they are environment specific, they need to be defined on the Blackfire.io Environment page.

Blackfire starts builds periodically, provides a webhook for starting builds and supports integrations like Platform.sh, Logmatic.io, New Relic and Quanta Monitoring,

Caution

Scenarios are run from the Blackfire's servers. If the profiled application is behind a firewall, let the Blackfire servers access the application by allowing IP 46.51.168.2 and 54.75.240.245 in your configuration for the web ports (usually 80 and 443).

Periodic Builds

Note

Periodic builds are only available to our Premium and Enterprise users.

Periodic builds allows you to run your scenarios on a regular basis. That's a must on production servers.

Only public websites can be targeted by Blackfire to run scheduled scenarios. In general, if your environment is configured as a development environment, you will need to use our PHP SDK. Check your Endpoint and dev Environment configuration in the Dashboard's "Settings" tab of your environment.

Start Build using a Webhook

Starting a build with a webhook offers the most flexible way of triggering Blackfire scenarios based on third-party tool events. Thereby, you can add performance tests at any point of your tool-chain. For instance, you can:

  • Configure your tooling to trigger a new build after each deploy to the production servers. It enables you to check your production configuration and your code's behaviour on production machines, and validate the deployment.
  • Configure your continuous integration tooling to automatically test any branch you deployed on your testing environment. You can then decide if the code is ready to be merged.

Note

The webhook is only available to our Enterprise users.

1
2
3
4
curl -X POST https://blackfire.io/api/v1/build/env/ENV-UUID/webhook \
    --user "CLIENT-ID:CLIENT-TOKEN" \
    -d "endpoint=http://symfony.com/" \
    -d "title=Build title"

Replace ENV-UUID by your environment UUID (and CLIENT-ID:CLIENT-TOKEN by your personal credentials if needed).

The webhook endpoint accepts the following request parameters:

endpoint The endpoint to profile
title The title
metadata A hash of keys/values. For example with curl: -d "metadata[key1]=value1" -d "metadata[key2]=value2"
http_username The username for HTTP Basic authentication
http_password The password for HTTP Basic authentication
ip The IP for forcing DNS
ssl_no_verify Disable SSL certificates verification (this is unsecure)
external_id A unique identifier for the build; commonly, a unique reference from a third party service like the Git commit sha1 related to the build
external_parent_id The unique identifier of the parent build
external_url A URL related to the build, like a Pull Request

You can also trigger a build via the Blackfire CLI:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
blackfire build-trigger \
    http://example.com/ \
    --env=ENV-UUID \
    --title="Build PR 1234" \
    --external-id=`git log -1 --pretty=\"%H\"` \
    --external-parent-id=`git merge-base master HEAD` \
    --external-url="https://github.com/symfony/symfony/pull/11882" \
    --http-password="http-password" \
    --http-username="http-username" \
    --ip="127.0.0.1" \
    --ssl-no-verify

Note

If you are going to use the webhook from a shared service (like a Jenkins server), we recommend that you create a specific "bot" user to be used for automation like triggering webhooks from your continuous integration platform.

Tip

Blackfire environment pages provide a simple form (in the Dashboard Builds tab) that lets you configure a webhook payload and generate the corresponding cURL command. For your convenience, you can even trigger a build from there.

Start a New Build using a Native Integration

Blackfire supports a number of native integrations with third-party tools. Please check their dedicated documentation: