Skip to main content

Gantt chart generator from Jira to Confluence

Project description

Jira to Confluence gantt chart generator

Lint Unit tests

Table of Contents

Overview

This module has the objective to create a gantt chart from Jira data and publish and publish the resulting chart and status on Confluence. It provides different render engines, but it is easy to add its own custom engine : Confluence engine PlantUML engine

Installation

From PyPI (Recommended)

You can install the exporter easily with the following command or insert into your requirements file :

pip install jira2confluence-gantt

From sources

It is recommended to use a virtual environment :

python -m venv venv

To install the module and the main script, simply do :

pip install .

For the developers, it is useful to install extra tools like :

These tools can be installed with the following command :

pip install .[dev]

The Git hooks can be installed with :

pre-commit install

The hooks can be run manually at any time :

pre-commit run --all-file

Usage

The script with required argument can be started by executing the following command :

./jira2confluence-gantt my_config.yaml

The full list of arguments supported can be displayed with the following helper :

./jira2confluence-gantt.exe -h
usage: jira2confluence-gantt [-h] [-v] [--user ATLASSIAN_USER]
                             [--password ATLASSIAN_PASSWORD]
                             [config.yaml]

positional arguments:
  config.yaml           Configuration file

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Verbose mode
  --user ATLASSIAN_USER
                        Define the user to connect to Atlassian server
  --password ATLASSIAN_PASSWORD
                        Define the password to connect to Atlassian server

Configuration

The configuration file support 2 formats :

In the configuration file, there are 2 main sections required :

  • Server
  • Projects

Server configuration

The Server node will configure the URL of the Jira and Confluence server. For the moment, only the username/password authentication is supported but only in the command line for security reason.

In Yaml :

Server:
  Jira: "https://my.jira.server.com"
  Confluence: "https://my.confluence.server.com"

In Json :

{
  "Server": {
    "Jira": "https://my.jira.server.com",
    "Confluence": "https://my.confluence.server.com"
  }
}

Server

Main configuration node for server.
It is a mandatory field.

Jira

Define the Jira server URL to retrieve tickets information to construct Gantt chart.
It is a mandatory field.

Confluence

Define the Confluence server URL to publish the report.
It is an optional field. If the confluence server isn't set, only the gantt chart will be generated if the engine permit it.

Project configuration

The Projects node will provide the configuration for each project.

In Yaml :

Projects:
  <Project name>:
    JQL: "project = TEST"
    Report:
      Engine: "PlantUML" # Confluence
      Model: "report.jinja2"
    Fields:
      Start date: "Start date (WBSGantt)"
      End date: "Finish date (WBSGantt)"
      Progress: "Progress (WBSGantt)"

In Json :

{
  "Projects": {
    "<Project name>": {
      "JQL": "project = TEST",
      "Report": {
        "Engine": "PlantUML",
        "Model": "report.jinja2"
      },
      "Fields": {
        "Start date": "Start date (WBSGantt)",
        "End date": "Finish date (WBSGantt)",
        "Progress": "Progress (WBSGantt)"
      }
    }
  }
}

Projects

Main configuration node for all projects.
It is a mandatory field.

<Project name>

Must be replaced by the name of the project. It is a mandatory field. This name will be used as a title in the Gantt chart and also as a name in Snake case format for the output gantt file.

For example, the following configuration could produce an output file My_important_project.svg :

In Yaml :

Projects:
  My important project:
    JQL: "project = TEST"
  # ...

In Json :

{
  "Projects": {
    "My important project": {
      "JQL": "project = TEST"
    }
  }
}

JQL

In order to retrieve the list of tickets to construct the Gantt chart, Jira provides a convenient syntax the JQL.
It is a mandatory field.

Some fields could use double quotes to preserve space in their names. The YAML syntax provides a solution by replacing with simple quote or escaping like JSON :

In Yaml :

JQL: 'project = "MY TEST"'

In Json :

{
  "JQL": "project = \"MY TEST\""
}

Report

For each project, the Report node must be defined to defined how it is generated. It is a mandatory field.

Engine

There are several engines available to produce Gantt chart :

  • Confluence chart macro : Produce a chart with a builtin macro. The graph will not include the dependency link.
  • PlantUML macro : Produce a PlantUML graph which will be included in the Confluence page with the PlantUML macro.

It is an optional field. The Confluence engine will be used by default.

In Yaml :

Report:
  Engine: "PlantUML"

In Json :

{
  "Report": {
    "Engine": "PlantUML"
  }
}

Space

The Space attribute is used to defined the Confluence destination space. It is a mandatory field.

In Yaml :

Report:
  Space: "SPACE"

In Json :

{
  "Report": {
    "Space": "SPACE"
  }
}

Parent page

The Parent page attribute is used to define the Confluence parent page of the report page. It is a mandatory field.

In Yaml :

Report:
  Parent page: "My Parent Page"

In Json :

{
  "Report": {
    "Parent page": "My Parent Page"
  }
}

Model (Not implemented yet)

The Model template is a filename written with Jinja2. It will define how the Confluence page will be rendered. The template uses Confluence Wiki Markup.

It is an optional field. the template contains only the Gantt chart.

In Yaml :

Report:
  Engine: "PlantUML"
  Model: "report.jinja2"

In Json :

{
  "Report": {
    "Engine": "PlantUML",
    "Model": "report.jinja2"
  }
}

Fields

Configuration node for all Jira fields used to construct Gantt chart.
It is a mandatory field.

In Yaml :

These fields are most of the time the same for all projects and like all others fields they could be aliased to avoid redefinition.
In the following example, we define an anchor WbsFields :

Server:
  # ...

Fields: &WbsFields
  Start date: "Start date (WBSGantt)"
  End date: "Finish date (WBSGantt)"
  Progress: "Progress (WBSGantt)"

Projects:
  Project name:
    JQL: "project = TEST"
    Fields: *WbsFields
  Second project name:
    JQL: "project = TEST2"
    Fields: *WbsFields

In Json :

{
  "Projects": {
    "Project name": {
      "Fields": {
        "Start date": "Start date (WBSGantt)",
        "End date": "Finish date (WBSGantt)",
        "Progress": "Progress (WBSGantt)",
      }
    }
  }
}

Start date

Define the Jira field to use as a start date for task in Gantt chart.
It is a mandatory field.

End date

Define the Jira field to use as a start date for task in Gantt chart.
It is a mandatory field.

Progress

Define the Jira field to use as a percent of work done for task in Gantt chart.
It is an optional field.

Link

Define the Jira inward link to use in order to define how the tasks could be blocked by others tasks task in Gantt chart. It is an optional field. By default, the link used is "is blocked by"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jira2confluence-gantt-0.1.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

jira2confluence_gantt-0.1.0-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file jira2confluence-gantt-0.1.0.tar.gz.

File metadata

  • Download URL: jira2confluence-gantt-0.1.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for jira2confluence-gantt-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6055e8cba0148f6a23ca9d951bcfb2cb53be47ec3ea5244187d6da226de444a9
MD5 15d6540b6950e9511d3c30ad64dcaeec
BLAKE2b-256 0c28c5cf2d77116394a19ac10e077dca09402649397fa20b3cbe5e9314bc1c6c

See more details on using hashes here.

Provenance

File details

Details for the file jira2confluence_gantt-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jira2confluence_gantt-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for jira2confluence_gantt-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5793db72b8c14e284fe92fcd7a21134d2d42bd5e52fe5284c10c310a974ddcbd
MD5 aa0663ae0179c0713aa8fda7859223fb
BLAKE2b-256 7879d1d32faeb57e9c97df26a548a2660028bd76d248407f9fb8b5dadd15795b

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page