curl -X POST 'https://api.newrelic.com/v2/applications/{application_id}/deployments.json' \
-H 'X-Api-Key:{api_key}' -i \
-H 'Content-Type: application/json' \
-d \
'{
"deployment" : {
"revision" : " string" ,
"changelog" : " string" ,
"description" : " string" ,
"user" : " string"
}
}'
Sample Script for Generating a data and Adding Deployment
#! /bin/sh
# Variables
WAR_FILE_V1=" petclinic-1.0.war"
WAR_FILE_V2=" petclinic-2.0.war"
HOST_NAME=" 13.234.21.228"
PORT=" 80"
AWS_KEY_FILE=" ./rajesh-mumbai.pem"
AWS_EC2_INSTANCE=" ubuntu@${HOST_NAME} "
APP_URL=" http://${HOST_NAME} :${PORT} /petclinic/"
NR_API_KEY=" NRRA-8be5d1f42ee92bcaccdce4675b6cdcc5842f0d0c3e"
NR_APP_ID=" 294580546"
NR_DEPLOY_CHANGELOG_V1=" Initial deploy"
NR_DEPLOY_CHANGELOG_V2=" Replaced dandelion datatables with jQuery, removed session state caching"
NR_DEPLOY_DESC_V1=" v1.0"
NR_DEPLOY_DESC_V2=" Upgrade to v2.0"
NR_DEPLOY_REVISION_V1=" 2738cbdcca"
NR_DEPLOY_REVISION_V2=" 3d2d67bbfb"
NR_DEPLOY_USER=" Rajesh Kumar"
JMETER_SCRIPT=" aws.jmx"
deployApp ()
{
# Copy WAR file to webapps folder
echo " \n--- Deploying" $1 " \n"
scp -i $AWS_KEY_FILE ./$1 $AWS_EC2_INSTANCE :~ /webapps/petclinic.war
# Set deployment marker
deploymentMarker " $2 " " $3 " " $4 "
# Restart Docker container
echo " \n--- Restarting petclinic container"
ssh -i $AWS_KEY_FILE $AWS_EC2_INSTANCE ' sudo docker restart petclinic'
# Wait for app restart
echo " \n--- Waiting for app restart"
sleep 30
while [ $( curl -s -o /dev/null -I -w " %{http_code}" $APP_URL ) -ne 200 ] ; do
printf " ."
done
echo
return
}
deploymentMarker ()
{
echo " \n--- Setting deployment marker\n"
curl -X POST " https://api.newrelic.com/v2/applications/${NR_APP_ID} /deployments.json" \
-H " X-Api-Key:${NR_API_KEY} " -i \
-H ' Content-Type: application/json' \
-d \
" {
\" deployment\" : {
\" revision\" : \" ${2} \" ,
\" changelog\" : \" ${3} \" ,
\" description\" : \" ${1} \" ,
\" user\" : \" ${NR_DEPLOY_USER} \"
}
}"
return
}
startJmeter ()
{
# Start JMeter script
/c/tools/apache-jmeter-5.3/bin/jmeter -n -JHOST=${HOST_NAME} -JPORT=${PORT} -t $1
return
}
deployApp " $WAR_FILE_V1 " " $NR_DEPLOY_DESC_V1 " " $NR_DEPLOY_REVISION_V1 " " $NR_DEPLOY_CHANGELOG_V1 "
echo " \n--- Starting Jmeter. Wait 10-15 minutes, then run thread profiler\n"
startJmeter " $JMETER_SCRIPT "
# After 10-15 minutes, start thread profiler
# When Jmeter script completes, deploy v2 and repeat
deployApp " $WAR_FILE_V2 " " $NR_DEPLOY_DESC_V2 " " $NR_DEPLOY_REVISION_V2 " " $NR_DEPLOY_CHANGELOG_V2 "
echo " \n--- Starting Jmeter. \n"
startJmeter " $JMETER_SCRIPT "