## Propagate fields from parent Jira ticket to sub-tasks #### Why? 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. #### How to use lazylead for this Let's assume that 1. 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`. 2. you've saved this JQL as jira filter with id `222`. For simplicity, we are using [docker-compose](https://docs.docker.com/compose/): 1. Define yml file with `docker-compose` configuration in `lazylead.yml` ```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 ``` 2. Create a container, using `docker-compose -f lazylead.yml up` The container will stop as there were no tasks provided: ```bash 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 > ``` 3. Define your team and tasks in database. The tables structure defined [here](../upgrades/sqlite/001-install-main-lazylead-tables.sql). Modify you [sqlite](https://sqlite.com/index.html) file(`ll.db`) using [DB Browser](https://sqlitebrowser.org/) or any similar tool. ```sql 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](https://crontab.guru) here, but you may use other scheduling types from [rufus-scheduler](https://github.com/jmettraux/rufus-scheduler). 4. Once you changed `./ll.db`, please restart the container using `docker-compose -f .github/tasks.yml restart` ```bash ll > docker-compose -f .github/tasks.yml restart Restarting lazylead ... done ``` 5. Once task completed, please check your sub-tasks, they should have `customfield_1` and comment like ```text The following fields were propagated from : ||Field||Value|| |customfield_1|| Posted by [lazylead v0.0.0|https://bit.ly/2NjdndS]] ``` #### Where is the code? | Logic | Tests | | :-----: | :------: | | [propagate_down.rb](../lib/lazylead/task/propagate_down.rb)| [propagate_down_test.rb](../test/lazylead/task/propagate_down_test.rb) |