Skms integration #52
This file contains 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
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}"::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":"${{ github.actor }}","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}"}' |