Index: Jira/Jira_Create_Story.sh =================================================================== diff -u --- Jira/Jira_Create_Story.sh (revision 0) +++ Jira/Jira_Create_Story.sh (revision fecb3b4ea0ab60f175cdadacc0c5502a76d3e79c) @@ -0,0 +1,186 @@ +#!/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=" +Update PRS/SSRS Requirement(s) +Update Sys Architecture +Update Sys Hazard Analysis +Update Sys Verification Test Case(s) +Update SRS Requirements +Update Software Verification Test Case(s) +Update Software Architecture +Update Software Hazard Analysis +Update Software Detailed Design (SDD) +Update Software Integration Test Case(s) +Update Unit Test(s) +Implement Code +Dry Run Unit Test(s) +Dry Run Software Verification Test(s) +Dry Run Software Integration Test(s) +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="$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 \ No newline at end of file