I'm loving New Relic so far, but I've always found its deployments hard to track, especially because I'm not using GitHub actions for my deployment pipeline.
o make things easier, I created a custom Laravel command that sends deployment information directly to New Relic. The beauty of this command is that I can run it every time I deploy code; it only requires the ability to execute php artisan app:deploy-mark and access to Git to retrieve the version. (Of course, we could swap Git out for something else almost unique, like the current date-time.)
Here's the Command (in Detail):
 $apikey,
                    ])->post($url, [
                        'query' => 'mutation {changeTrackingCreateDeployment(
                            deployment: {
                            version: "' . $dep_rev . '",
                            entityGuid: "' . $app_id . '" }
                            ) {
                                deploymentId
                                entityGuid
                        }}'
                    ]);
        } catch (\Exception $e) {
            $this->error("There was an error: " . $e->getMessage());
            return false;
        }
        if ($result->successful()) {
            $this->info("Newrelic result" . $result->body());
        } else {
            $this->warn("Newrelic result" . $result->body());
        }
        return $result->successful();
    }
}
To make it work, I first added an entry in the services.php config file:
'newrelic' => [
        'user_key' => env('NEWRELIC_USER_KEY', null),
        'app_id' => env('APP_ID_NEWRELIC', null),
]
Next, I added my values inside the .env file like this:
NEWRELIC_USER_KEY=
APP_ID_NEWRELIC=
Now, when I need to track a deployment, I simply add a final step that executes a simple php artisan app:deploy-mark.
This command is flexible enough to work across many different CI/CD pipeline stacks. If you end up using it, please leave a comment and share how.
I’m curious to see the different ways it can be applied.