-
-
Save RomiC/7232293 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
usage() { | |
echo " | |
Usage: wti [-h?] [-l LOGIN] ISSUE... | |
wti = \"(W)hat (T)he (I)ssue?\". Script tries to get description of the specified | |
ISSUE(es) from jira. For each ISSUE in list script will ouput the line in | |
the following format: ISSUE_ID — ISSUE_DESC | |
options: | |
-h -? Print this message and exit | |
-l LOGIN Jira-user login. Will be promted if not specified." | |
} | |
shortusage() { | |
echo " | |
Usage: wti [-h?] [-l LOGIN] ISSUE... | |
See wti -h for help" | |
} | |
error() { | |
if [[ -n $1 ]]; | |
then | |
echo -e "\nERROR: $1" | |
if [[ -n $2 ]]; | |
then | |
shortusage | |
fi | |
exit 1 | |
fi | |
} | |
JIRA_URL="https://jira.atlassian.com" | |
JIRA_AUTH_URI="/rest/auth/latest/session" | |
JIRA_API_URI="/rest/api/latest/" | |
OPTIND=1 | |
# Parsing flags | |
while getopts "h?l:" opt | |
do | |
case $opt in | |
h|\?) | |
usage | |
exit 0 | |
;; | |
l) | |
JIRA_LOGIN=$OPTARG | |
;; | |
esac | |
done | |
# getting list of braches | |
if [[ -z ${!OPTIND} ]]; then | |
error "You must specified at least one issue!" 1 | |
else | |
for ((ARG=$OPTIND, NUM=0; ARG>0; ARG++)); | |
do | |
if [[ -z ${!ARG} ]]; | |
then | |
break | |
fi | |
ISSUES[$NUM]=${!ARG} | |
NUM=$[NUM+1] | |
done | |
fi | |
# getting login fo JIRA | |
if [[ -z $JIRA_LOGIN ]]; then | |
read -p "Enter your login for JIRA: " JIRA_LOGIN | |
fi | |
# getting password for JIRA | |
read -sp "Enter your password for JIRA: " JIRA_PASSWORD | |
echo "" | |
# authentication in JIRA | |
JIRA_SESSION_ID=`curl -s -H "Content-Type: application/json" -d "{\"username\":\"${JIRA_LOGIN}\",\"password\":\"${JIRA_PASSWORD}\"}" -X POST ${JIRA_URL}${JIRA_AUTH_URI} | sed -r 's/^.+JSESSIONID","value":"([^"]+).+$/\1/ig'` | |
if [[ -n $(echo $JIRA_SESSION_ID | grep error) ]] | |
then | |
error "Wrong login or password!" | |
fi | |
# getting info about branches | |
for ((I=0; I<${#ISSUES[@]}; I++)); | |
do | |
SED=`curl -s -H "Content-Type: application/json" -b JSESSIONID=${JIRA_SESSION_ID} ${JIRA_URL}${JIRA_API_URI}issue/${ISSUES[$I]}?fields=summary | sed -n -re 's@\\\["]([^\\\]+)\\\["]@«\1»@ig' -e 's/^.+key":"([^"]+)".+summary":"([^"]+).+$/\1 - \2\n/igp'` | |
if [[ -z $SED ]] | |
then | |
echo "Issue \"${ISSUES[$I]}\" not found or unknown error has occured!" | |
else | |
echo $SED | |
fi | |
done |
@felipe1982, in case you've already have the access token, than try to add auth header below instead of JESSESIONID
:
Authorization: Bearer {access_token}
always I am getting Issue "BOLT-13360" not found or unknown error has occured!
what are the depended library required for running this bash script?
How to check restAPI is available or not? looks like below two things are related to restAPI.
How to install it?
JIRA_AUTH_URI="/rest/auth/latest/session"
JIRA_API_URI="/rest/api/latest/"
@SwarnalataPanda, the script doesn't have any dependencies. You should just download it, change JIRA_URL
to your own and it should work. To validate an API, just open in your browser, which has an authorized session, the following: https://YOUR_JIRA_DOMAIN/rest/api/latest/issue/BOLT-13360
@RomiC,
API is "https://${JIRA_URL}/browse/BOLT-13360," according to this, I have updated the authorization command is
JIRA_SESSION_ID=curl -s -H "Content-Type: application/json" -d "{\"username\":\"${JIRA_LOGIN}\",\"password\":\"${JIRA_PASSWORD}\"}" -X POST ${JIRA_URL} | sed -r 's/^.+JSESSIONID","value":"([^"]+).+$/\1/ig'
and to getting info from branch
SED=curl -s -H "Content-Type: application/json" -b JSESSIONID=${JIRA_SESSION_ID} ${JIRA_URL}/browse/${ISSUES[$I]}?fields=summary | sed -n -re 's@\\\["]([^\\\]+)\\\["]@«\1»@ig' -e 's/^.+key":"([^"]+)".+summary":"([^"]+).+$/\1 - \2\n/igp'
Even I am getting same error as Issue "BOLT-13360" not found or unknown error has occured!
@SwarnalataPanda, you don't need to touch anything except JIRA_URL
-value on line 37. Let's say, your Jira hostname is https://myjira.com
, then you need to change line 37 to the following:
JIRA_URL="https://myjira.com"
That's actually everything you need to change in the script. Pls, try this way.
To obtain the list of the attachments, you may use something like this one:
curl -H "Authorization: Basic $JIRA_AUTH" -H "Content-Type: application/json" https://YOUR_JIRA_HOST/rest/api/2/issue/JIRA_ITEM_KEY\?fields\=attachment | jq '.fields.attachment[].content'
Pay attention, that it requires jq
utility to be installed on your machine.
Hi RomiC, But after changing the JIRA_URL in the script, I am getting same error "Issue "BOLT-13360" not found or unknown error has occured!" https://JIRA_URL/browse/BOLT-13360( here, i can able to access the issue) Regards Swarna
…
On Fri, May 14, 2021 at 4:23 PM Roman Charugin @.***> wrote: @RomiC commented on this gist. ------------------------------ @SwarnalataPanda https://github.com/SwarnalataPanda, you don't need to touch anything except JIRA_URL -value on line 37. Let's say, your Jira hostname is https://myjira.com, then you need to change line 37 to the following: JIRA_URL="https://myjira.com" That's actually everything you need to change in the script. Pls, try this way. To obtain the list of the attachments, you may use something like this one: curl -H "Authorization: Basic $JIRA_AUTH" -H "Content-Type: application/json" https://YOUR_JIRA_HOST/rest/api/2/issue/JIRA_ITEM_KEY?fields=attachment | jq '.fields.attachment[].content' Pay attention, that it requires jq utility to be installed on your machine. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://gist.github.com/7232293#gistcomment-3742569, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJPVW2T523PDUTUBUMQZF3LTNT6KZANCNFSM44VG5ONA .
-- Regards, Swarna
make sure you don't have '/' at the end of JIRA_URL.
@RomiC its very slow as it tries to login every time I run it, is there anyway that it can store the session id and use it so not to login again.
UPDATE - I observed that even if we use the existing session ID its still slow, it has something to parse issue description.
@SwarnalataPanda, in order to debug add you need to add the following string echo $JIRA_SESSION_ID
into line 82. Than make a request and store the output session ID somewhere. After that try the following command in your console: curl -H "Content-Type: application/json" -b JSESSIONID=JIRA_SESSION_ID https://JIRA_URL/rest/api/latest/issue/BOLT-13360?fields=summary
.
@DineshSolanki you may request several items per time: wti JIRA-1 JIRA-2 JIRA-3
. To be honest, never had performance issues to start investigating the problem.
@SwarnalataPanda, in order to debug add you need to add the following string
echo $JIRA_SESSION_ID
into line 82. Than make a request and store the output session ID somewhere. After that try the following command in your console:curl -H "Content-Type: application/json" -b JSESSIONID=JIRA_SESSION_ID https://JIRA_URL/rest/api/latest/issue/BOLT-13360?fields=summary
.@DineshSolanki you may request several items per time:
wti JIRA-1 JIRA-2 JIRA-3
. To be honest, never had performance issues to start investigating the problem.
yeah might have to do something with my work vpn, but it's helping, thanks a lot,
how can one use
curl + oauth
for Jira?