Skip to content

Skms integration

Skms integration #54

Workflow file for this run

name: Create CMR in SKMS
on:
pull_request:
types:
- closed
branches:
- skms-release-test
jobs:
create-cmr:
# Only run this workflow on pull requests that have merged and not manually closed by user
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Runs a single command using the runners shell for shell validation
- name: Run a one-line script
run: echo Starting CMR Action...
# Validate dependencies before continuing CMR creation
- name: Check Dependencies
run: |
if ! type "jq" >/dev/null; then
echo "jq is required but not installed"
exit 1
fi
if ! type "curl" >/dev/null; then
echo "curl is required but not installed"
exit 1
fi
echo "Dependencies check was successful"
# Run command for creating CMR in SKMS system
- run: |
DEFAULT_SKMS_URL='api.skms.adobe.com'
function skms_request() {
local username=$1
local passkey=$2
local object=$3
local method=$4
local method_params=$5
local url=$6
if [ -z "$username" ]; then
echo "First parameter missing, must be SKMS username"
return 1
fi
if [ -z "$passkey" ]; then
echo "Second parameter missing, must be SKMS passkey"
return 1
fi
if [ -z "$object" ]; then
echo "Third parameter missing, must be an SKMS dao object"
return 1
fi
if [ -z "$method" ]; then
echo "Fourth parameter missing, must be SKMS dao method"
return 1
fi
if [ -z "$method_params" ]; then
method_params='{}'
fi
if [ -z "$url" ]; then
url=$DEFAULT_SKMS_URL
fi
local params="{\"_username\":\"${username}\",\"_passkey\":\"${passkey}\",\"_object\":\"${object}\",\"_method\": \"${method}\"}"
params=$(echo "$params $method_params" | jq -s add)
local response=$(curl --write-out "%{http_code}" --silent --output response.txt https://${url}/web_api --data-urlencode "_parameters=${params}")
if [ $response != "200" ]; then
echo "CURL call returned HTTP status code: $response"
exit 1
elif grep -q "\"status\":\"error\"" response.txt; then
echo "CMR creation failed with response: "
cat response.txt
exit 1
else
echo "CMR creation was successful"
fi
}
function sanitizeStr() {
local str=$1
if [ -z "$str" ]; then
echo "First parameter missing, must be a valid string"
return 1
fi
str="${str//\"/""}"
str="${str//\'/""}"
str="${str//$'\r\n\t'/ }"
echo "$str"
}
release_title=$(sanitizeStr "${{ github.event.pull_request.title }}")
release_details=$(sanitizeStr "${{ github.event.pull_request.body }}")
release_summary=Release_Title--"${release_title}"--Release_Details--"${release_details}"--Pull_Request_Number--"${{ github.event.pull_request.number }}"--Pull_Request_Created_At--"${{ github.event.pull_request.created_at }}"--Pull_Request_Merged_At--"${{ github.event.pull_request.merged_at }}"--
echo "{$release_summary}"
skms_request '${{ secrets.SKMS_USER }}' '${{ secrets.SKMS_PASS }}' CmrDao createCmrFromPreapprovedChangeModel '{"change_executor":"${{ secrets.SKMS_CHANGE_EXECUTOR }}","maintenance_window_end_time":"${{ github.event.pull_request.merged_at }}","maintenance_window_start_time":"${{ github.event.pull_request.created_at }}","preapproved_change_model_id":"${{ secrets.SKMS_CHANGE_MODEL_ID }}","summary":"${release_summary}"}'