Sidehistorik
I erkendelse af at 1st forsøg var noget skralder, er vores Repeatable Task lavet om, så scheduleringen fungerer med almindelige cron Entries som i https://help.ubuntu.com/community/CronHowto
På alle Repeatable Tasks er felterne :
Indholdsfortegnelse |
---|
Make a custom Field
Make a custom field called "Cron Scheduling" - multiline. This will hold the scedules for the Issue:
Make the crontab script
The scripts makes and enables a crontab for the "jira" user.
Kodeblok |
---|
#!/bin/bash IFS=$(echo -en "\n\b") TransitionScript="/pack/jira-cron/jiraTransitionIssue.sh" JIRAFilter="issuetype = \"Repeatable Task\" AND status in (Frozen) and \"Cron Scheduling\" IS NOT NULL" FIELD="12821" CHAR="'" CRONTABUSER="jira" rm /tmp/crontab 2> /dev/null rm /tmp/value 2> /dev/null echo " --------- " >>/pack/jira-cron/jiraMakeCrontab.log issueList=`/pack/atlassian-cli/jira.sh --action getIssueList --search "$JIRAFilter" --outputFormat 200 | grep -v "issues" | grep -v "Created"` for issue in $issueList do issueKey=`echo $issue | awk '{print $1}' | sed 's/,//g'` CustomFieldValue=`/pack/atlassian-cli/jira.sh --action GetFieldValue --issue "$issueKey" --field "customfield_$FIELD" --file /tmp/value` if [ -f /tmp/value ] then crontabEntry=`cat /tmp/value | sed 's/'"$CHAR"'//g'` echo "#Crontabs for $issueKey" >> /tmp/crontab for cronEntry in $crontabEntry do echo "$cronEntry $TransitionScript $issueKey >> /pack/jira-cron/jiraTransitionIssue.log 2>&1" >> /tmp/crontab echo "Added: $cronEntry $TransitionScript $issueKey to /tmp/crontab" >> /pack/jira-cron/jiraMakeCrontab.log done echo "" >> /tmp/crontab fi rm /tmp/value 2> /dev/null done rm /tmp/value 2> /dev/null #Replace JIRA Users crontab su - jira -c "crontab /tmp/crontab" |
After running the script the /var/spool/cron/crontabs/JIRA (on Ubuntu LTS) should look like this:
Kodeblok |
---|
#Crontabs for SUPPORT-513
* * 1 * * /pack/jira-cron/jiraTransitionIssue.sh SUPPORT-513 >> /pack/jira-cron/jiraTransitionIssue.log 2>&1
#Crontabs for HOMEPAGE-3846
0 5 2 * * /pack/jira-cron/jiraTransitionIssue.sh HOMEPAGE-3846 >> /pack/jira-cron/jiraTransitionIssue.log 2>&1
#Crontabs for HOMEPAGE-2933
0 0 1 * * /pack/jira-cron/jiraTransitionIssue.sh HOMEPAGE-2933 >> /pack/jira-cron/jiraTransitionIssue.log 2>&1
#Crontabs for PROJECTTOOLS-2467
0 5 5 * * /pack/jira-cron/jiraTransitionIssue.sh PROJECTTOOLS-2467 >> /pack/jira-cron/jiraTransitionIssue.log 2>&1 |
Make the Transition Script
Kodeblok |
---|
#!/bin/bash # CLI Reference: https://bobswift.atlassian.net/wiki/display/JCLI/JIRA+Command+Line+Interface IFS=$(echo -en "\n\b") CHAR="'" OKSTATUS="Frozen (10003)" issueKey=$1 if [ $issueKey != '' ] then StatusFieldValue=`/pack/atlassian-cli/jira.sh --action GetFieldValue --issue "$issueKey" --field "Status" --file /tmp/value` if [ -f /tmp/value ] then Status=`cat /tmp/value | sed 's/'"$CHAR"'//g'` if [ $Status == $OKSTATUS ] then # Transition issue /pack/atlassian-cli/jira.sh --action progressIssue --issue "$issueKey" --step "Initiate" >> /pack/jira-cron/jiraTransitionIssue.log 2>&1 else echo "Issue $issueKey was not in $OKSTATUS State, but in $Status" fi fi else echo "No IssueKey as parameter" fi |
Kodeblok |
Alle Issues er lavet om.