[Release] Stage to Main #404
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: | |
- 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 }}"}' |