Create Jira issues from RSS Feeds with optional labeling.
10K+
Create Jira issues from RSS Feeds with optional labelling. Created to monitor RSS feeds and bring posts to our attention (Security Releases, Product Updates etc)
We try to be as clever as is reasonably possible in terms of not duplicating RSS feed items into Jira. A Redis database is used to store the GUID/FeedID combination which is checked when assessing articles for synchronisation. Before synchronising an RSS item we run an issue search in the associated project, if we dont find the Title in any issue we assume its not already been created. This helps to guard against scenarios where you lose the Redis database and dont want RSS items reduplicating into Jira. If found in Jira it is marked as synchronised in the Redis database as well as printing an link to the existing issue(s) to stdout.
Each feed entry in the config file can have an "added_since" property set. This is used to only sync RSS items that have a Published/Updated date greater than the provided value. This can be useful on RSS feeds where you dont want to import historic items, just new posts going forward.
The config file MUST be named config.yaml, an example one is provided here. Below is a brief description of its contents.
interval: 300
feeds:
- id: test
feed_url: http://example.com/rss.xml
name: Test Feed
jira_project_id: TEST
added_since: "2019-03-27T15:00:00Z"
labels:
- TestLabel
- id: feed2
...
| Attribute | Type | Required | Description |
|---|---|---|---|
| interval | int | yes | The interval in seconds between feed checks |
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | yes | n/a | A feed ID that is used internally for duplicate detection. |
| feed_url | string | yes | n/a | The URL of the feed |
| name | string | yes | n/a | A User friendly display name. |
| jira_project_id | string | yes | n/a | The Jira project ID to create issues under. |
| added_since | string | no | null | For longer RSS feeds specify a ISO 8601 DateTime to exclude items published/updated earlier than this |
| labels | Array | no | [] | A list of labels to add to created Issues |
A Docker image is made available on DockerHub
REDIS_PASSWORD=docker run -e JIRA_URL=<INSERT_URL> -e JIRA_USERNAME=<INSERT_USERNAME> -e JIRA_API_TOKEN=<INSERT_TOKEN> -e CONFIG_DIR=/app -v REDIS_URL=<REDIS_URL> -v REDIS_PASSWORD=<REDIS_PASSWORD> -v ${PWD}:/config adamhf/rss-sync:latest
Populate the .env file with the appropriate real values.
docker-compose up
Two metrics (above and beyond what are exposed by the Go Prometheus library) are exposed on :8080/metrics
A /healthz endpoint is exposed on :8080/healthz which will fail if it is unable to connect to Redis.
Feed URL: https://cloud.google.com/feeds/kubernetes-engine-release-notes.xml

Feed URL: https://cloud.google.com/feeds/kubernetes-engine-security-bulletins.xml

Content type
Image
Digest
Size
365.8 MB
Last updated
over 4 years ago
docker pull mintel/jira-rss-sync