Created
September 19, 2023 13:16
-
-
Save phillpafford/ee8cf688ac3f95604d5c4387540ff1ba to your computer and use it in GitHub Desktop.
atlasian compass deployment event
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 | |
[email protected] | |
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