Command line tool for jira, templatizable.
This utility has been tested with Python 3.6, but it's very possible that it's compatible with previous Python versions as well. The supported Jira versions are the ones providing the /rest/api/2 endpoint.
Clone this repository and install its dependencies:
git clone https://github.com/mbrt/jira-template.git cd jira-template pip install -r requirements.txt I recommend creating an alias for the command, something like:
alias jtmp='~/jira-template/jiratemplate/cli.py' The command line is available with:
jira-template/jiratemplate/cli.py The idea is pretty simple. After you configure two files: template.json and conf.yaml, the utility can be used to create and get tickets from Jira.
Whenever you create a ticket, you have to specify the summary in the command line. You can edit the ticket description via the editor that is fired up afterwards.
Start from the example in examples/conf.yaml:
mkdir -m 700 -p ~/.jira-template cp jira-template/conf.yaml ~/.jira-template/ Edit it and provide the following informations:
- the server address
- the username
- the password encoded in base64 (you can encode it by using
echo MYPWD | base64 -)
You can leave the rest as is for the moment.
After you've done this, try to access a ticket number, by using:
jtmp get <ticket-id> The result should be a json encoded object that describes the ticket. Starting from that you can create your own ticket template, like the one provided in jira-template/examples/template.json. I recommend starting from that example and add only the mandatory fields for your issue types in Jira:
cp jira-template/template.json ~/.jira-template/ The rules are pretty simple:
- everything that is hardcoded will be sent as is to Jira;
- every value starting with a dollar sign is a variable;
- variables can be templated by a value inside
conf.yaml; if no matches are found, the key-value pair will be left out from the resulting json. This can be used for optional fields.
More details on the templating rules are provided in the next section.
A template is simply a section in conf.yaml with a certain id:
sections: - id: kube-bug-80 issue_type: Bug versions: - id: "11314" You can add as many sections as you want. These will be selected by the create command with the -s <section-name> flag.
For example:
jtmp create --dry-run -s kube-bug-80 "this is an ugly bug" will use the section with id kube-bug-80 to replace the variables in the template.json and fire a request to Jira to create that ticket. Note that the --dry-run flag has been added to print the request without actually creating the ticket.
Since the configuration file is a yaml, you can leverage its pretty cool reference mechanism to avoid repeting yourself. For example, with this reference:
templates: me: &ME my-username you can avoid repeting your username over and over in all the sections, and start using the &ME reference instead:
sections: - id: kube-bug-80 assignee: *ME This is even more powerful, since you can template tickets hierarchically, like this:
templates: me: &ME REPLACEME dk-account: &KUBE-ACCOUNT 16 version-80: &VER-80 "11314" version-90: &VER-90 "11350" kube: &KUBE-ISSUE account_id: *KUBE-ACCOUNT labels: - kubernetes assignee: *ME And then provide various sections that reuse the common KUBE-ISSUE template:
sections: - <<: *KUBE-ISSUE id: kube-bug-80 issue_type: Bug versions: - id: *VER-80 - <<: *KUBE-ISSUE id: kube-bug-90 issue_type: Bug versions: - id: *VER-90 After the references are resolved, the result is:
sections: - account_id: 16 labels: - kubernetes assignee: my-username id: kube-bug-80 issue_type: Bug versions: - id: 11314 - account_id: 16 labels: - kubernetes assignee: my-username id: kube-bug-90 issue_type: Bug versions: - id: 11350 A very powerful mechanism.