Skip to content

[Release] Stage to Main #395

[Release] Stage to Main

[Release] Stage to Main #395

Workflow file for this run

name: Create CMR in SKMS
on:
pull_request:
types:
- closed
branches:
- main
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@v4
# Runs a single command using the runners shell for shell validation
- name: Validate Shell
run: echo Starting CMR Action...
- 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"
- name: Set Maintenance Time Windows for CMR
run: |
echo "start_time=$(date -d "+60 minutes" '+%Y-%m-%d %H:%M')" >> $GITHUB_ENV
echo "end_time=$(date -d "+90 minutes" '+%Y-%m-%d %H:%M')" >> $GITHUB_ENV
- name: Set Release Summary for CMR
run: |
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//(/"["}"
str="${str//)/"]"}"
str="${str//$'\r'/"\r"}"
str="${str//$'\n'/"\n"}"
str="${str//$'\t'/"\t"}"
str="${str//\\//}"
str="${str////"\/"}"
echo "$str"
}
release_title=$(sanitizeStr "${{ github.event.pull_request.title }}")
release_details=$(sanitizeStr "${{ github.event.pull_request.body }}")
release=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<<RS_EOF" >> $GITHUB_ENV
echo "$release" >> $GITHUB_ENV
echo "RS_EOF" >> $GITHUB_ENV
- name: Create CMR in SKMS
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
}
skms_request '${{ secrets.SKMS_USER }}' '${{ secrets.SKMS_PASS }}' CmrDao createCmrFromPreapprovedChangeModel '{"change_executor":"${{ secrets.SKMS_CHANGE_EXECUTOR }}","maintenance_window_end_time":"${{ env.end_time }}","maintenance_window_start_time":"${{ env.start_time }}","preapproved_change_model_id":"${{ secrets.SKMS_CHANGE_MODEL_ID }}","summary":"${{ env.release_summary }}"}'