Apache Airflow Atlassian Jira Provider
The `apache-airflow-providers-atlassian-jira` package is an Apache Airflow provider that enables seamless integration with Atlassian Jira. It offers operators, sensors, and hooks to interact with Jira for automating tasks like issue creation, updates, and monitoring. As a community-managed provider, it follows Apache Airflow's release cadence, typically releasing minor updates every 2-3 months. The current version is 3.3.3.
Warnings
- breaking The Jira provider migrated from the legacy `Atlassian Jira SDK` to the `atlassian-python-api` SDK in version 2.0.0. This significantly changed how interactions are structured. `JiraHook.get_conn` now returns an `atlassian.Jira` object instead of a `jira.Jira` object. `JiraOperator` now requires `jira_method` and `jira_method_args` arguments, aligning with the new SDK's method calls.
- breaking Minimum Airflow version compatibility has increased. Provider version 3.1.0 requires Airflow 2.10+, and provider version 3.3.0+ requires Airflow 2.11+.
- deprecated The `apache-airflow-providers-jira` package (note: without `atlassian` in the name) is deprecated as of version 3.1.0 in favor of `apache-airflow-providers-atlassian-jira`.
- gotcha Due to the SDK migration, the `validate` and `get_server_info` keys in the Jira connection's 'Extra' JSON field are no longer supported.
Install
-
pip install apache-airflow-providers-atlassian-jira
Imports
- JiraOperator
from airflow.providers.atlassian.jira.operators.jira import JiraOperator
- JiraHook
from airflow.providers.atlassian.jira.hooks.jira import JiraHook
- JiraSensor
from airflow.providers.atlassian.jira.sensors.jira import JiraSensor
Quickstart
from __future__ import annotations
import os
from datetime import datetime
from airflow.models.dag import DAG
from airflow.providers.atlassian.jira.operators.jira import JiraOperator
# Ensure you have an Airflow Connection named 'jira_default' configured.
# For a Jira API Token connection, use:
# Conn Id: jira_default
# Conn Type: Jira
# Host: https://your-jira-instance.atlassian.net
# Login: your_email@example.com
# Password: your_api_token
JIRA_CONN_ID = os.environ.get('AIRFLOW_JIRA_CONN_ID', 'jira_default')
JIRA_PROJECT_KEY = os.environ.get('AIRFLOW_JIRA_PROJECT_KEY', 'YOUR_PROJECT_KEY')
with DAG(
dag_id='jira_create_issue_example',
start_date=datetime(2023, 1, 1),
schedule=None,
catchup=False,
tags=['jira', 'example'],
) as dag:
create_jira_issue = JiraOperator(
task_id='create_jira_issue',
jira_conn_id=JIRA_CONN_ID,
jira_method='create_issue',
jira_method_args={
'fields': {
'project': {'key': JIRA_PROJECT_KEY},
'summary': 'Airflow Automated Issue: Task Completed',
'description': 'This issue was created by an Airflow DAG to log a completed task.',
'issuetype': {'name': 'Task'},
}
},
)