-
Notifications
You must be signed in to change notification settings - Fork 28
Shell script to track Jira ticket status
AnatolyKolbasin edited this page Jul 14, 2021
·
2 revisions
- The curlFunction function sends a get request to get issue data in Jira and this data is stored in result.txt
- The functions parsingFunctionFirstMethod and parsingFunctionSecondMethod are parsing data functions (in different ways)
- The sendMailToSlack function sends a message about status change to the slack channel
- The sendMailToEmail function sends an issue status change message to an email
- The startApplication function starts the application if the issue status changes
- An infinite loop is started that checks the status and takes action
bash Script <baseJiraURL> <jiraUser> <jiraPassword> <issueID> <DirectoryForFile> slack <HookSlack>
<T01DWK7PKCY/B01D70VUBMH/BfjzoOeNm64NrtR6mLuVfLfe> part of hooks url passed as parameter
bash Script <baseJiraURL> <jiraUser> <jiraPassword> <issueID> <DirectoryForFile> email <EmailRecipient>
bash Script <baseJiraURL> <jiraUser> <jiraPassword> <issueID> <directoryForFile> app <NameScriptOrApplication>
baseJiraURL host name of the Jira server. For example: jira.test.by
JiraUser/JiraPassword auth information to connect to Jira
issueID key and number of the issue. For example: TEST-19
path path name where result.txt data stored
optionSendMail options: slack, email or app
Script
:
If needed, specify **EMAIL ADDRESS**
and **PASSWORD**
in the script
baseJiraURL=$1
jiraUser=$2
jiraPassword=$3
issueID=$4
path=$5
optionSendMail=$6
to=$7
from=**EMAIL ADDRESS**
emailPasswordForSendMail=**PASSWORD**
function curlFunction {
curl -L -D- -u $jiraUser:$jiraPassword -X GET -H "X-Atlassian-Token: nocheck" https://$baseJiraURL/rest/api/2/issue/$issueID?fields=status > /$path/result.txt
value=`cat result.txt`
}
function parsingFunctionFirstMethod {
value=`echo $value | sed 's/ /№/g'`
my_arr=($(echo $value | tr "," "\n"))
IFS='"' read -ra my_arr <<< "${my_arr[22]}"
a=`echo "${my_arr[3]}"`
status=`echo "${my_arr[3]}" | sed 's/№/ /g'`
}
function parsingFunctionSecondMethod {
if grep -q "To Do" <<< "$value"; then
status="To Do"
elif grep -q "In Progress" <<< "$value"; then
status="In Progress"
elif grep -q "Done" <<< "$value"; then
status="Done"
fi
}
function sendMailToSlack {
curl -X POST -H 'Content-type:application/json' --data "{\"text\":\"$msg\"}" https://hooks.slack.com/services/$to
}
function sendMailToEmail {
{
echo "From: \"Bot\" $from"
echo "To: \"Alex\" $to"
echo "Subject: Status has been changed"
echo
echo "$msg"
} > mail.txt
curl --ssl-reqd --url 'smtps://smtp.gmail.com:465' --user "$from:$emailPasswordForSendMail" --mail-from "$from" --mail-rcpt "$to" --upload-file mail.txt --insecure
}
function startApplication {
echo `bash "$to" "$msg"`
# Also it's possible to start different applications
# `libreoffice --writer`
}
for((;;))
do
curlFunction
parsingFunctionSecondMethod
previosSt="$status"
sleep 10
curlFunction
parsingFunctionSecondMethod
if [[ "$previosSt" != "$status" ]]; then
msg="Status of $issueID ticket was changed from '$previosSt' to '$status'"
# echo "$msg"
if [[ "$optionSendMail" == slack ]]; then
sendMailToSlack
elif [[ "$optionSendMail" == email ]]; then
sendMailToEmail
elif [[ "$optionSendMail" == app ]]; then
startApplication
fi
fi
done
SMP/E
- How do I check if the APAR or the PTF installation?
- JCL job to create SMP/e zones environment and user datasets
- JCL job to customize SMP/e distribution zone environment
- JCL job to customize SMP/e global zone environment
- JCL job to customize SMP/e target zone environment
- JCL job to load PTF information into global zone and SMP/e datasets
- JCL job to install PTF in the SMP/e target libraries
- JCL job to install PTF in the SMP/e distribution libraries
- JCL job for rejecting PTF to clean up the global zone
- JCL job for restoring PTF to clean up the target zone
- Automated build PTF via JCL + REXX template (IN PROGRESS)
- What should I do if RECEIVE ends with RC=12?
Mainframe automation solutions and best practices
- Mainframe DevOps tutorial – How We Bring DevOps and Automation to Mainframe
- Jenkins MF pipeline code example
- Mainframe integration with Jenkins using USS agent
- Jenkins plug in solution for running JCL jobs
- Mainframe troubleshooting platform - APPULSE
- Azure DevOps with MF (IN PROGRESS)
- Zigi
z/OS DevOps scripts
- Shell script for datasets to transfer from UNIX to the mainframe via ftp
- Shell script to run JCL jobs on the mainframe via ftp
- Shell script to transfer changed sources in git to the mainframe via ftp
RACF
REXX scripts
- REXX script to change parameters values in a config file
- REXX script to replace substring in some members of dataset
ISPF
HSM
- HSM dataset level commands
- HSM system commands
- How do I restore datasets anywhere where HSM is working?
Useful tricks
- How to include a library in the current LOGON session
- How to make IBM Java work for TEP file tep.jnlp
- How to migrate one or more data sets to migration volumes
- How to transfer file from Windows to zOS with command line ftp?
- How do I find out which data sets have used the most amount of space?
- How do I convert a hexadecimal date to a readable date on z/OS?
- How do I compare two data sets interactively?
- How do I use 3270 emulators with a larger screen size?
- How do I make some changes in each member of PDS?
- How do I copy data sets to other LPAR?
Batch jobs (JCLs)
- How to automate checking for normal completion of a job (counting the number of lines)?
- How do I create a Data Set or a Data Set member?
- How do I copy a Data Set or a Data Set member?
- How do I fill VSAM with records?
- How do I rename a Data Set in batch?
- How do I delete a Data Set or a Data Set member?
- How do I compress a Partitioned Data Set?
- How do I convert Partitioned Data Set PDS to Partitioned Data Set Extended PDSE and vice versa?
- How do I split a Sequential Data Set or PDS member?
- How do I copy first n records of Sequential Data Set or PDS member?
- How do I work with a Catalog?
- Replacing archaic JCL constructs
- Sample solution to transfer datasets from one system to another using XMIT and ADRDSSU
- JCL job template for evenly dividing the dataset into parts
- How to work with a Catalog?
z/OS System operating
- z/OS network commands
- JES commands
- SDSF commands
- XMIT
- WLM (COMING SOON, STAY TUNED)
- IPL and its maintenance
- Omegamon for Storage
- Omegamon for DB2
z/OS Subsystem operating