Jira
Our Jira integration allows you to import issues
and projects
from your Jira cloud account into Port, according to your mapping and definition.
This integration supports Jira Cloud at the moment, support for Jira Server is in development.
Common use casesโ
- Map issues and projects in your Jira organization environment.
- Watch for object changes (create/update/delete) in real-time, and automatically apply the changes to your entities in Port.
- Create/delete Jira objects using self-service actions.
Prerequisitesโ
To install the integration, you need a Kubernetes cluster that the integration's container chart will be deployed to.
Please make sure that you have kubectl
and helm
installed on your machine, and that your kubectl
CLI is connected to the Kubernetes cluster where you plan to install the integration.
installationโ
Choose one of the following installation methods:
- Real Time & Always On
- Scheduled
Using this installation option means that the integration will be able to update Port in real time using webhooks.
This table summarizes the available parameters for the installation. Set them as you wish in the script below, then copy it and run it in your terminal:
Parameter | Description | Example | Required |
---|---|---|---|
port.clientId | Your port client id (How to get the credentials) | โ | |
port.clientSecret | Your port client secret (How to get the credentials) | โ | |
integration.secrets.atlassianUserEmail | The email of the user used to query Jira | user@example.com | โ |
integration.secrets.atlassianUserToken | Jira API token generated by the user | โ | |
integration.config.jiraHost | The URL of your Jira | https://example.atlassian.net | โ |
integration.config.appHost | The host of the Port Ocean app. Used to set up the integration endpoint as the target for webhooks created in Jira | https://my-ocean-integration.com | โ |
Advanced configuration
Parameter | Description |
---|---|
integration.eventListener.type | The event listener type. Read more about event listeners |
integration.type | The integration to be installed |
scheduledResyncInterval | The number of minutes between each resync. When not set the integration will resync for each event listener resync event. Read more about scheduledResyncInterval |
initializePortResources | Default true, When set to true the integration will create default blueprints and the port App config Mapping. Read more about initializePortResources |
helm repo add --force-update port-labs https://port-labs.github.io/helm-charts
helm upgrade --install my-jira-integration port-labs/port-ocean \
--set port.clientId="PORT_CLIENT_ID" \
--set port.clientSecret="PORT_CLIENT_SECRET" \
--set port.baseUrl="https://api.getport.io" \
--set initializePortResources=true \
--set scheduledResyncInterval=120 \
--set integration.identifier="my-jira-integration" \
--set integration.type="jira" \
--set integration.eventListener.type="POLLING" \
--set integration.config.jiraHost="string" \
--set integration.secrets.atlassianUserEmail="string" \
--set integration.secrets.atlassianUserToken="string"
- GitHub
- Jenkins
This workflow will run the Jira integration once and then exit, this is useful for scheduled ingestion of data.
If you want the integration to update Port in real time using webhooks you should use the Real Time & Always On installation option.
Make sure to configure the following Github Secrets:
Parameter | Description | Example | Required |
---|---|---|---|
OCEAN__INTEGRATION__CONFIG__JIRA_HOST | The URL of your Jira | https://example.atlassian.net | โ |
OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_EMAIL | The email of the user used to query Jira | user@example.com | โ |
OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_TOKEN | Jira API token generated by the user | โ | |
OCEAN__PORT__CLIENT_ID | Your port client (How to get the credentials) id | โ | |
OCEAN__PORT__CLIENT_SECRET | Your port client (How to get the credentials) secret | โ | |
OCEAN__INITIALIZE_PORT_RESOURCES | Default true, When set to true the integration will create default blueprints and the port App config Mapping. Read more about initializePortResources | โ | |
OCEAN__INTEGRATION__IDENTIFIER | The identifier of the integration that will be installed | โ |
Here is an example for jira-integration.yml
workflow file:
name: Jira Exporter Workflow
# This workflow responsible for running Jira exporter.
on:
workflow_dispatch:
jobs:
run-integration:
runs-on: ubuntu-latest
steps:
- name: Run Jira Integration
run: |
# Set Docker image and run the container
integration_type="jira"
version="latest"
image_name="ghcr.io/port-labs/port-ocean-$integration_type:$version"
docker run -i --rm --platform=linux/amd64 \
-e OCEAN__EVENT_LISTENER='{"type":"ONCE"}' \
-e OCEAN__INITIALIZE_PORT_RESOURCES=true \
-e OCEAN__INTEGRATION__CONFIG__JIRA_HOST=${{ secrets.OCEAN__INTEGRATION__CONFIG__JIRA_HOST }} \
-e OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_EMAIL=${{ secrets.OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_EMAIL }} \
-e OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_TOKEN=${{ secrets.OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_TOKEN }} \
-e OCEAN__PORT__CLIENT_ID=${{ secrets.OCEAN__PORT__CLIENT_ID }} \
-e OCEAN__PORT__CLIENT_SECRET=${{ secrets.OCEAN__PORT__CLIENT_SECRET }} \
$image_name
exit $?
This pipeline will run the Jira integration once and then exit, this is useful for scheduled ingestion of data.
Your Jenkins agent should be able to run docker commands.
If you want the integration to update Port in real time using webhooks you should use the Real Time & Always On installation option.
Make sure to configure the following Jenkins Credentials of Secret Text
type:
Parameter | Description | Example | Required |
---|---|---|---|
OCEAN__INTEGRATION__CONFIG__JIRA_HOST | The URL of your Jira | https://example.atlassian.net | โ |
OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_EMAIL | The email of the user used to query Jira | user@example.com | โ |
OCEAN__INTEGRATION__CONFIG__ATLASSIAN_USER_TOKEN | Jira API token generated by the user | โ | |
OCEAN__PORT__CLIENT_ID | Your port client (How to get the credentials) id | โ | |
OCEAN__PORT__CLIENT_SECRET | Your port client (How to get the credentials) secret | โ | |
OCEAN__INITIALIZE_PORT_RESOURCES | Default true, When set to true the integration will create default blueprints and the port App config Mapping. Read more about initializePortResources |