#!/bin/sh # Jira Credentials JIRA_BASE_URL="https://diality.atlassian.net" JIRA_USER="bNematiPour@diality.com" # Get the api token from the following link after log in to your account: # https://id.atlassian.com/manage-profile/security/api-tokens JIRA_API_TOKEN="ATATT3xFfGF0TOvNF5ieQ3b-z9z5X8p3IrdeTbkjEPE_I4gMeSEllXc7abcdhXhN_r_t4xTN0UwR3DWSsn7Un21CASxWeXmrXvfjLZ3MMxO92zf1o0D9Zm2kynJj_haXxPGEwhIw_F9UECV7jf8X-Q41QQ9hrfbC_YgZL15Xgh6VPYcSbzzemHQ=491E1343" PROJECT_KEY="UI" # Story details ISSUE_TYPE_PARENT="Story" ISSUE_TYPE_CHILD="Sub-task" ERROR_KEY="errorMessages" ERROR_STR="ERROR:" SUBTASK_LIST=" dox: Update PRS/SSRS Requirement(s) dox: Update Sys Architecture dox: Update Sys Hazard Analysis dox: Update Sys Verification Test Case(s) dox: Update SRS Requirements dox: Update Software Verification Test Case(s) dox: Update Software Architecture dox: Update Software Hazard Analysis dox: Update Software Detailed Design (SDD) dev: Code Implementation dev: Diagnostics Screen investigation - optional - in-case dev: Modularization - optional - in-case dev: Update Simulator/Dialin dev: Update Software Integration Test Case(s) dev: Update Unit Test(s) dev: Code Review v&v: Dry Run Unit Test(s) v&v: Dry Run Software Verification Test(s) v&v: Dry Run Software Integration Test(s) v&v: Dry Run System Verification Test(s) " ERROR_INVALID_RESPONSE=1 ERROR_MISSING_SUMMARY=2 ERROR_MISSING_DESCRIPTION=3 ERROR_MISSING_PARENT=4 ERROR_MISSING_ISSUE_TYPE=5 ERROR_EXECUTION=6 createStroy() { if [ "$1" = "" ]; then echo "ERROR_MISSING_SUMMERY" exit $ERROR_MISSING_SUMMERY fi local SUMMARY="$1" if [ "$2" = "" ]; then echo "ERROR_MISSING_DESCRIPTION" exit $ERROR_MISSING_DESCRIPTION fi local DESCRIPTION="$2" # Create the Story using curl local RESPONSE="$( curl \ -s -X POST \ --url "$JIRA_BASE_URL/rest/api/2/issue/" \ --user "$JIRA_USER:$JIRA_API_TOKEN" \ --header "Content-Type: application/json" \ --data '{ "fields" : { "project" : {"key" : "'"$PROJECT_KEY"'" }, "summary" : "'"$SUMMARY"'" , "description" : "'"$DESCRIPTION"'" , "issuetype" : {"name" : "'"$ISSUE_TYPE_PARENT"'" } } }' )" local RESULT=$? if [ $RESULT -ne 0 ] ; then echo "EXEC $ERROR_STR $RESULT\n" echo "$COMMAND\n" exit $ERROR_EXECUTION fi # Extract Story Key using grep and sed if [ "$RESPONSE" != "${RESPONSE#*$ERROR_KEY}" ]; then # in case that cannot be parsed could mean that there is an error echo "$ERROR_STR $RESPONSE" exit "$ERROR_INVALID_RESPONSE" else KEY=$(echo "$RESPONSE" | grep -o '"key":"[^"]*' | sed 's/"key":"//') if [ "$KEY" = "" ]; then echo "$ERROR_STR $RESPONSE" exit "$ERROR_INVALID_RESPONSE" fi fi echo "$KEY" } createSubtask() { if [ "$1" = "" ]; then echo "ERROR_MISSING_PARENT" exit $ERROR_MISSING_PARENT fi local PARENT_KEY="$1" if [ "$2" = "" ]; then echo "ERROR_MISSING_SUMMERY" exit $ERROR_MISSING_SUMMERY fi local SUMMARY="$2" if [ "$3" = "" ]; then echo "ERROR_MISSING_DESCRIPTION" exit $ERROR_MISSING_DESCRIPTION fi local DESCRIPTION="$3" # Create the Story using curl local RESPONSE="$( curl \ -s -X POST \ --url "$JIRA_BASE_URL/rest/api/2/issue/" \ --user "$JIRA_USER:$JIRA_API_TOKEN" \ --header "Content-Type: application/json" \ --data '{ "fields" : { "project" : {"key" : "'"$PROJECT_KEY"'" }, "summary" : "'"$SUMMARY"'" , "description" : "'"$DESCRIPTION"'" , "issuetype" : {"name" : "'"$ISSUE_TYPE_CHILD"'" }, "parent" : {"key" : "'"$PARENT_KEY"'" } } }' )" local RESULT=$? if [ $RESULT -ne 0 ] ; then echo "EXEC $ERROR_STR $RESULT\n" echo "$COMMAND\n" exit $ERROR_EXECUTION fi # Extract Story Key using grep and sed if [ "$RESPONSE" != "${RESPONSE#*$ERROR_KEY}" ]; then # in case that cannot be parsed could mean that there is an error echo "$ERROR_STR $RESPONSE" exit "$ERROR_INVALID_RESPONSE" else KEY=$(echo "$RESPONSE" | grep -o '"key":"[^"]*' | sed 's/"key":"//') if [ "$KEY" = "" ]; then echo "$ERROR_STR $RESPONSE" exit "$ERROR_INVALID_RESPONSE" fi fi echo "$KEY" } createSubtaskList() { OLD_IFS=$IFS IFS=' ' local COUNT=0 local STORY="$1" local SUMMARY="$2" if [ "$2" = "" ]; then SUMMARY="$STORY" fi for TITLE in $SUBTASK_LIST; do local TASK="$( createSubtask "$STORY" "$SUMMARY - $TITLE" "$TITLE" )" echo "$ISSUE_TYPE_CHILD $TASK created in $ISSUE_TYPE_PARENT $STORY: $TITLE." COUNT=$(( COUNT + 1 )) done echo "Total number of $COUNT $ISSUE_TYPE_CHILD added to the $ISSUE_TYPE_PARENT $STORY" IFS=$OLD_IFS } echo "" SUMMARY="UI: $1" DESCRIPTION="$2" KEY="$( createStroy "$SUMMARY" "$DESCRIPTION" )" echo "$ISSUE_TYPE_PARENT $KEY created in project $PROJECT_KEY: $SUMMARY." createSubtaskList "$KEY" "$SUMMARY" sleep 0.1 echo "" exit 0