#!/bin/sh #TODO # 1 - Add UI prefix # 2 - Description # 3 - Assignee # 4 - Summary max len 0f 20-25 [TBD] ## VAriables # 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" JIRA_API_TOKEN="ATATT3xFfGF0RFUld5-CIAjh75DnHIs9PTTsa-gyabVVlIpZIQdKylVWQ2ySaHIDzeSsJo4ygvg3Bmpp33ejTDl8Pya7xrC5QXQ3KGKL6WXYncsS2mQmMbDmrRFzG7dxIFCtLW24c8wUGa6UTWhPZL0ymLP0wetlzKds1gs2eC1ElkpyBNIP0vk=89EE1FC4" PROJECT_KEY="" STORY_PREFIX="LUIS" # Story details ISSUE_TYPE_PARENT="Story" ISSUE_TYPE_CHILD="Sub-task" ERROR_KEY="errorMessages" ERROR_STR="ERROR:" #TODO get list from jira USER_BEHROUZ="5d6f09ceab129d0c306d9ddb" USER_DARA="63bdca0294d18cbf67728f0c" USER_TIFFANY="60e7528f84c99200718a2beb" USER_AMIR="712020:18638c6b-26a8-4529-839a-172ac06ac020" ASSIGNEE="" #Sub-Tasks list of titles SUBTASK_LIST=" 01: SRS - Software Requirement Specifications 02: SDD - Design Diagram - plantuml 03: SDR - Design Review 04: DEV - Feature Implementation 05: DEV - Diagnostic - if needed 06: DEV - Modularize - if needed 07: DEV - Dialin Implementation 08: DEV - Simulator Implementation 09: BLD - Develop Build - version , release notes 10: SDD - Functionality - doxygen pdf 11: SCR - Code Review 12: BLD - Staging Build - version , release notes 13: SUT - Software Unit Tests - QtTest 14: SIT - Software Integration Tests - SquishQt 15: COC - Code Coverage - SquishCoco 16: CQR - Code Quality Report - SUIT+SIT+COC 17: BLD - Master Build - version , release notes " #Error codes ERROR_INVALID_RESPONSE=1 ERROR_MISSING_SUMMARY=2 ERROR_MISSING_DESCRIPTION=3 ERROR_MISSING_PARENT=4 ERROR_MISSING_ISSUE_TYPE=5 ERROR_EXECUTION=6 ERROR_MISSING_PROJECTKEY=7 ERROR_MISSING_USERNAME=8 ERROR_MISSING_ASSIGNEE=9 ##Functions # Creates story # $1 - Summary # $2 - Description # return the Created story ID createStroy() { if [ "$1" = "" ]; then echo "ERROR_MISSING_SUMMARY" exit $ERROR_MISSING_SUMMARY 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"'" } , "assignee" : { "accountId" : "'"$ASSIGNEE"'" } } }' )" 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" } # Creates Sub-task under the given parent ID # $1 - Parent Key/ID # $2 - Summary # $3 - Description # return the Created sub-task ID 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"'" }, "assignee" : { "accountId" : "'"$ASSIGNEE"'" } } }' )" 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" } # Creates the subtasks by SUBTASK_LIST list under the given parent ID # $1 - Parent ID # $2 - Summary of the parent ticket to be concatenated with the sub-task # return prints out each notification of each created sub-tasks, # and message of total created sub-tasks 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 if [ "$TITLE" = "" ]; then continue fi local TASK="$( createSubtask "$STORY" "$STORY_PREFIX: $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 } userInformation() { local USER_INFO="$( curl \ -X GET \ -u "$JIRA_USER:$JIRA_API_TOKEN" \ -H "Content-Type: application/json" \ "$JIRA_BASE_URL/rest/api/3/user/search?query=$1" )" local RESULT=$? echo $USER_INFO echo $RESULT } ## Main code echo "" SUMMARY="$1" DESCRIPTION="$2" PROJECT_KEY="$3" ASSIGNEE="$4" if [ "$1" = "-u" ]; then if [ "$2" = "" ]; then echo "ERROR_MISSING_USERNAME" exit $ERROR_MISSING_USERNAME fi userInformation $2 exit 0 fi if [ "$PROJECT_KEY" = "" ]; then echo "ERROR_MISSING_PROJECTKEY" exit $ERROR_MISSING_PROJECTKEY fi if [ "$ASSIGNEE" = "" ]; then echo "ERROR_MISSING_ASSIGNEE" exit $ERROR_MISSING_ASSIGNEE fi KEY="$( createStroy "$STORY_PREFIX: $SUMMARY" "$DESCRIPTION" )" echo "$ISSUE_TYPE_PARENT $KEY created in project $PROJECT_KEY: $SUMMARY." createSubtaskList "$KEY" "$SUMMARY" sleep 0.1 echo "" exit 0