Skip to content

Instantly share code, notes, and snippets.

@phillpafford
Created September 19, 2023 13:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phillpafford/ee8cf688ac3f95604d5c4387540ff1ba to your computer and use it in GitHub Desktop.
Save phillpafford/ee8cf688ac3f95604d5c4387540ff1ba to your computer and use it in GitHub Desktop.
atlasian compass deployment event
#!/usr/bin/env bash
set -e
# https://developer.atlassian.com/cloud/compass/rest/intro/#version
TIMESTAMP=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
COMPASS_CLOUD_INSTANCE=name-of-your-instance
COMPASS_REST_API_VERSION=v1
## create api token for your user https://id.atlassian.com/manage-profile/security
COMPASS_USER_EMAIL=your-atlassian-email@example.com
COMPASS_USER_TOKEN=your-super-secret-token
COMPASS_BASE_URL="https://$COMPASS_CLOUD_INSTANCE.atlassian.net/gateway/api/compass/$COMPASS_REST_API_VERSION/events"
## NOTE: need to create the metric in the UI first and get the GUID/UUID
COMPASS_CLOUD_ID="myuuid-1234-4321-abcd-1a2b3cd45e"
COMPASS_DEPLOYMENT_DISPLAY_NAME="my-deployment-metric-name"
COMPASS_DEPLOYMENT_URL="https://example-ci-cd.com/path-to-deployment-results"
COMPASS_DEPLOYMENT_DESCRIPTION="my-deployment-metric-description"
## this is the name you created
COMPASS_DEPLOYMENT_EXTERNAL_EVENT_SOURCE_ID="my-deployment-metric-external-source"
COMPASS_DEPLOYMENT_UPDATE_SEQUENCE_NUMBER=215
COMPASS_DEPLOYMENT_PROPERTIES_SEQUENCE_NUMBER=215
COMPASS_DEPLOYMENT_PROPERTIES_STATE="PENDING"
COMPASS_DEPLOYMENT_PROPERTIES_PIPELINE_PIPELINE_ID="PROJECT-123ID"
COMPASS_DEPLOYMENT_PROPERTIES_PIPELINE_URL="https://example-ci-cd.com/path-to-deployment-pipeline"
COMPASS_DEPLOYMENT_PROPERTIES_PIPELINE_DISPLAY_NAME="my-deployment-metric-display-name"
COMPASS_DEPLOYMENT_PROPERTIES_ENVIRONMENT_CATEGORY="PRODUCTION"
COMPASS_DEPLOYMENT_PROPERTIES_ENVIRONMENT_DISPLAY_NAME="my-deployment-metric-environment-display-name"
COMPASS_DEPLOYMENT_PROPERTIES_ENVIRONMENT_ENVIRONMENT_ID="my-deployment-metric-deployment-id"
# "cloudId": "<string>",
# "event": {
# "deployment": {
# "updateSequenceNumber": 57,
# "displayName": "<string>",
# "url": "<string>",
# "description": "<string>",
# "lastUpdated": "<string>",
# "externalEventSourceId": "<string>",
# "deploymentProperties": {
# "sequenceNumber": 39,
# "state": "PENDING",
# "pipeline": {
# "pipelineId": "<string>",
# "url": "<string>",
# "displayName": "<string>"
# },
# "environment": {
# "category": "PRODUCTION",
# "displayName": "<string>",
# "environmentId": "<string>"
# }
# }
# }
# }
# }
## data needs to be JSON, use JQ for this
COMPASS_EVENT_JSON_DATA=$( jq -n \
--arg cloudId "$COMPASS_CLOUD_ID" \
--arg dUpdateSequenceNumber "$COMPASS_DEPLOYMENT_UPDATE_SEQUENCE_NUMBER" \
--arg dDisplayName "$COMPASS_DEPLOYMENT_DISPLAY_NAME" \
--arg dUrl "$COMPASS_DEPLOYMENT_URL" \
--arg dDescription "$COMPASS_DEPLOYMENT_DESCRIPTION" \
--arg dLastUpdated "$TIMESTAMP" \
--arg dExternalEventSourceId "$COMPASS_DEPLOYMENT_EXTERNAL_EVENT_SOURCE_ID" \
--arg dSequenceNumber "$COMPASS_DEPLOYMENT_PROPERTIES_SEQUENCE_NUMBER" \
--arg dState "$COMPASS_DEPLOYMENT_PROPERTIES_STATE" \
--arg pPipelineId "$COMPASS_DEPLOYMENT_PROPERTIES_PIPELINE_PIPELINE_ID" \
--arg pUrl "$COMPASS_DEPLOYMENT_PROPERTIES_PIPELINE_URL" \
--arg pDisplayName "$COMPASS_DEPLOYMENT_PROPERTIES_PIPELINE_DISPLAY_NAME" \
--arg eCategory "$COMPASS_DEPLOYMENT_PROPERTIES_ENVIRONMENT_CATEGORY" \
--arg eDisplayName "$COMPASS_DEPLOYMENT_PROPERTIES_ENVIRONMENT_DISPLAY_NAME" \
--arg eEnvironmentId "$COMPASS_DEPLOYMENT_PROPERTIES_ENVIRONMENT_ENVIRONMENT_ID" \
'{"cloudId": $cloudId,"event": {"deployment": {"updateSequenceNumber": $dUpdateSequenceNumber,"displayName": $dDisplayName,"url": $dUrl,"description": $dDescription,"lastUpdated": $dLastUpdated,"externalEventSourceId": $dExternalEventSourceId,"eventType": "DEPLOYMENT", "deploymentProperties": {"sequenceNumber": $dSequenceNumber,"state": $dState,"pipeline": {"pipelineId": $pPipelineId,"url": $pUrl,"displayName": $pDisplayName},"environment": {"category": $eCategory,"displayName": $eDisplayName,"environmentId": $eEnvironmentId}}}}}'
)
echo ""
echo $COMPASS_EVENT_JSON_DATA
echo ""
COMPASS_EVENT=`curl -v --request POST \
--url $COMPASS_BASE_URL \
--user $COMPASS_USER_EMAIL:$COMPASS_USER_TOKEN \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data "$COMPASS_EVENT_JSON_DATA"`
echo "COMPASS_EVENT: $COMPASS_EVENT"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment