Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ AZUREDEVOPS_INSTANCE1_TOKEN=your_personal_access_token

AZUREDEVOPS_INSTANCE2_NAME=MyCompany2
AZUREDEVOPS_INSTANCE2_URL=https://dev.azure.com/mycompany
AZUREDEVOPS_INSTANCE2_TOKEN=your_personal_access_token2
AZUREDEVOPS_INSTANCE2_TOKEN=your_personal_access_token2

JIRA_INSTANCES='[{"name": "Jira Instance 1", "url": "https://your-domain.atlassian.net", "email": "your-email@example.com", "token": "your-api-token"}, {"name": "Jira Instance 2", "url": "https://another-domain.atlassian.net", "email": "your-email@example.com", "token": "another-api-token"}]'
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ env/
*.log
.temp*

tasks.json
tasks.json
tasks*.json
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- don't run http server (user run it by himself already)
70 changes: 70 additions & 0 deletions docs/MULTIJIRA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Multijira

## Setup

Install dependencies:
```bash
pip install -r requirements.txt
```

## Steps

1. Configure `.env` file with JIRA instances:
```
JIRA_INSTANCES='[{"name": "Jira Instance 1", "url": "https://your-domain.atlassian.net", "email": "your-email@example.com", "token": "your-api-token"}, {"name": "Jira Instance 2", "url": "https://another-domain.atlassian.net", "email": "your-email@example.com", "token": "another-api-token"}]'
```

2. `python fetch_jira.py` and by default output to `tasks.json`
- Check what we have in native Jira integration to try to match task_id pattern

```json
[
{
"name": "Jira Instance 1",
"task_id": "org_913310",
"parent_id": 0
},
{
"name": "Jira Project 1",
"task_id": "org_913310_proj_TCD",
"parent_id": "org_913310"
},
{
"name": "Bug 1",
"task_id": "org_913310_proj_TCD_TCD-12",
"parent_id": "org_913310_proj_TCD"
},
{
"name": "Epic 1",
"task_id": "org_913310_proj_TCD_TCD-13",
"parent_id": "org_913310_proj_TCD"
},
{
"name": "Task 1",
"task_id": "org_913310_proj_TCD_TCD-14",
"parent_id": "org_913310_proj_TCD_TCD-13"
},
{
"name": "SubTask 1",
"task_id": "org_913310_proj_TCD_TCD-15",
"parent_id": "org_913310_proj_TCD_TCD-14"
},
{
"name": "Jira Instance 2",
"task_id": "org_913311",
"parent_id": 0
},
{
"name": "Jira Project 1",
"task_id": "org_913311_proj_TCD",
"parent_id": "org_913311"
}
]
```

2. `python sync_project_new.py` (by default looks for `tasks.json`)

## Someday

- If there will be a need for S3 aim for `python fetch_jira.py | python upload_s3.py --folder jira/tasks.json`

Loading