Why do we need this if Jira has automation already?
Could you able use this feature right now? Just right now, without requests to some admin/jira owner/submitting some tickets to someone/etc... I doubt. In a huge company that's almost impossible to change something special for you in short terms.
Let's assume that
- JQL for parent tickets for the propagation:
issue in parentsOf("project='PRJ' and 'External ID' is empty") and "External ID" is not empty and updated >-1d
. - you've saved this JQL as jira filter with id
222
.
For simplicity, we are using docker-compose:
-
Define yml file with
docker-compose
configuration inlazylead.yml
version: '2.3' services: lazylead: image: dgroup/lazylead:latest container_name: lazylead mem_limit: 128m environment: # The jira server details. # Please ensure that your jira filter(s) grants this user to see issues. # Sometimes jira filter(s) may be created with restricted visibility, thus # lazylead can't find the issues. jira_url: https://your.jira.com jira_user: theuser jira_password: thepass volumes: - ./:/lazylead/db # db/ll.db is sqlite file with jira related annoying tasks entrypoint: bin/lazylead --sqlite db/ll.db --trace --verbose
-
Create a container, using
docker-compose -f lazylead.yml up
The container will stop as there were no tasks provided:ll > docker-compose -f lazylead.yml up Creating lazylead ... done Attaching to lazylead lazylead | [2020-06-06T10:35:13] DEBUG Memory footprint at start is 52MB lazylead | [2020-06-06T10:35:13] DEBUG Database: '/lazylead/db/ll.db', sql migration dir: '/lazylead/upgrades/sqlite' lazylead | [2020-06-06T10:35:13] DEBUG Migration applied to /lazylead/db/ll.db from /lazylead/upgrades/sqlite lazylead | [2020-06-06T10:35:13] DEBUG Database connection established lazylead | [2020-06-06T10:35:13] WARN SMTP connection enabled in test mode. lazylead | [2020-06-06T10:35:13] WARN ll-001: No tasks found. lazylead | [2020-06-06T10:35:13] DEBUG Memory footprint at the end is 66MB lazylead exited with code 0 ll >
-
Define your team and tasks in database. The tables structure defined here. Modify you sqlite file(
ll.db
) using DB Browser or any similar tool.insert into teams (id, name, properties) values (1, 'Dream team with lazylead', '{}'); insert into systems(id, properties) values (1,'{"type":"Lazylead::Jira", "username":"${jira_user}", "password":"${jira_password}", "site":"${jira_url}", "context_path":""}'); insert into tasks (name, schedule, enabled, id, system, team_id, action, properties) values ('Propagate customfield_1 (External ID) to sub-tasks', 'cron:0 8 * * 1-5', 'true', 1, 1, 1, 'Lazylead::Task::PropagateDown', '{"jql":"filter=222", "propagate":"customfield_1"}');
Yes, for task scheduling we are using cron here, but you may use other scheduling types from rufus-scheduler.
-
Once you changed
./ll.db
, please restart the container usingdocker-compose -f .github/tasks.yml restart
ll > docker-compose -f .github/tasks.yml restart Restarting lazylead ... done
-
Once task completed, please check your sub-tasks, they should have
customfield_1
and comment likeThe following fields were propagated from <parent-ticket-key>: ||Field||Value|| |customfield_1|<parent-field-value>| Posted by [lazylead v0.0.0|https://bit.ly/2NjdndS]]
Logic | Tests |
---|---|
propagate_down.rb | propagate_down_test.rb |