{"id":36662442,"url":"https://github.com/uwu-tools/gh-jira-issue-sync","last_synced_at":"2026-01-12T10:30:08.660Z","repository":{"id":65029448,"uuid":"580934800","full_name":"uwu-tools/gh-jira-issue-sync","owner":"uwu-tools","description":"A tool for synchronizing issue tracking from GitHub to Jira","archived":false,"fork":false,"pushed_at":"2024-11-26T09:16:12.000Z","size":10337,"stargazers_count":3,"open_issues_count":34,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-11-26T09:25:59.184Z","etag":null,"topics":["github","jira"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/uwu-tools/gh-jira-issue-sync","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uwu-tools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-21T20:41:35.000Z","updated_at":"2024-11-26T09:09:26.000Z","dependencies_parsed_at":"2023-11-21T02:28:25.422Z","dependency_job_id":"aff3ac33-16a5-4036-a53a-4f222e1d61dd","html_url":"https://github.com/uwu-tools/gh-jira-issue-sync","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/uwu-tools/gh-jira-issue-sync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwu-tools%2Fgh-jira-issue-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwu-tools%2Fgh-jira-issue-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwu-tools%2Fgh-jira-issue-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwu-tools%2Fgh-jira-issue-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uwu-tools","download_url":"https://codeload.github.com/uwu-tools/gh-jira-issue-sync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwu-tools%2Fgh-jira-issue-sync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github","jira"],"created_at":"2026-01-12T10:30:07.685Z","updated_at":"2026-01-12T10:30:08.642Z","avatar_url":"https://github.com/uwu-tools.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [`gh-jira-issue-sync`](https://pkg.go.dev/github.com/uwu-tools/gh-jira-issue-sync)\n\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/uwu-tools/gh-jira-issue-sync)](https://pkg.go.dev/github.com/uwu-tools/gh-jira-issue-sync)\n[![Go Report Card](https://goreportcard.com/badge/github.com/uwu-tools/gh-jira-issue-sync)](https://goreportcard.com/report/github.com/uwu-tools/gh-jira-issue-sync)\n\n`gh-jira-issue-sync` is a tool for mirroring GitHub issues in Jira. It grew out\nof a desire to maintain a public GitHub repo while tracking private issues in a\nJira board; rather than require people to keep up with both sources, we decided\nto make *one* the single source of truth.\n\n_Note that `gh-jira-issue-sync` works only one way and will **NOT** mirror\nissues from Jira to GitHub._\n\n## Usage\n\n### Jira Configuration\n\nTo use, first ensure you have a Jira server with the project you want\nto track on it - it can be a cloud account, or self-hosted. Also make\nsure you have a user account that can access the project and create\nissues on it; it's recommended that you create an account specifically\nfor the tool.\n\nThe following custom fields must be configured AND associated to the\nappropriate project's screens:\n\n| Custom Field Name | Type |\n| --- | --- |\n| `github-id` | Number |\n| `github-number` | Number |\n| `github-status` | Short text (plain text only) |\n| `github-reporter` | Short text (plain text only) |\n| `github-labels` | Labels |\n| `github-last-sync` | Date Time Picker |\n\nIf you intend to use OAuth with Jira, you must create an inbound\napplication connection and add a public key. Instructions can be found\nin\n[OAuth for Rest APIs](https://developer.atlassian.com/cloud/jira/platform/jira-rest-api-oauth-authentication/).\n\n### Application Configuration\n\nArguments to the program may be passed on the command line or in a JSON\nconfiguration file.\n\nFor the command line arguments, run:\n\n```console\ngh-jira-issue-sync help\n```\n\nThe JSON format is a single, flat object, with the argument long\nnames as keys.\n\nConfiguration arguments are as follows:\n\n| Name | Value Type | Example Value | Required | Default |\n| --- | --- | --- | --- | --- |\n| log-level | string | \"warn\" | false | \"info\" |\n| confirm | bool | false | false | false |\n| github-token | string | | true | null |\n| jira-user | string | \"user@jira.example.com\" | false | null |\n| jira-pass | string | | false | null |\n| jira-token | string | | false | null |\n| jira-secret | string | | false | null |\n| jira-consumer-key | string | | false | null |\n| jira-private-key-path | string | | false | null |\n| repo-name | string | \"uwu-tools/gh-jira-issue-sync\" | true | null |\n| jira-uri | string | \"https://jira.example.com\" | true | null |\n| jira-project | string | \"SYNC\" | true | null |\n| jira-components | []string | [\"Core\",\"Payment\"] | false | null |\n| since | string | \"2017-07-01T13:45:00-0800\" | false | \"1970-01-01T00:00:00+0000\" |\n| timeout | duration | 500ms | false | 1m |\n\n### Configuration Key Descriptions\n\n`log-level` is the minimum level which will be logged; any output below\nthis value will be discarded.\n\n`confirm` is for confirming a production run, it must be explicitly set \nto `true`, otherwise it will be a dry run by default and no changes \nwill be executed in Jira\n\n`github-token` is a personal access token used to access GitHub as a\nspecific user.\n\n`jira-user` and `jira-pass` are the username (i.e. email) and password\nof the Jira user which will be authenticated. See `Authentication` for\nmore details.\n\n`jira-token` and `jira-secret` are OAuth access tokens which will be\nused to perform an OAuth connection to Jira. `jira-consumer-key` and\n`jira-private-key-path` are the RSA key used for OAuth. See\n`Authentication` for more details.\n\n`repo-name` is the GitHub repo from which issues will be retrieved. It\nmust be in the form `owner/repo`, for example `uwu-tools/gh-jira-issue-sync`.\n\n`jira-uri` is the base URL of the Jira instance. If the Jira instance\nlives at a non-root URL, the path must be included. For example,\n`https://example.com/jira`.\n\n`jira-project` is the key (not the name) of the project in Jira to\nwhich the issues will be synchronized.\n\n`jira-components` is the names of the components in Jira \nthat will be added to the issues when synchronized. If a component \nnot found on the project or the set value is otherwise invalid, \nan error will return. (optional)\n\n`since` is the cutoff date issue-sync will use when searching for issues\nto synchronize. If an issue was last updated before this time, it will\nnot be synchronized. Usually this is the last run of the tool. It is in\nISO-8601 format.\n\n`timeout` represents the duration of time for which an API request will\nbe retried in case of failure. Human-friendly strings such as `30s` are\naccepted as input, although the application will save it to the file\nin a number of nanoseconds.\n\n### Configuration File\n\nBy default, gh-jira-issue-sync looks for the configuration file at\n`$PWD/.issue-sync.json`. To override this location, use the `--config`\noption on the command line.\n\nIf both a configuration file and command line arguments are provided,\nthe command line arguments override the configuration file.\n\nAfter a successful run, the current configuration, with command line\narguments overwritten, is saved to the configuration file (either the\none provided, or `$PWD/.issue-sync.json`); the \"since\" date is updated\nto the current date when the tool is run, as well.\n\n### Authentication\n\nIf `jira-user` or `jira-pass` are provided, both are required, and the\napplication will connect to Jira via Basic Authentication.\n\nOtherwise, OAuth will be used. In this case, the `jira-consumer-key`, which is the\nname of the RSA public key on the Jira server, and the\n`jira-private-key`, which is the path to the RSA private key which\nmatches, must be provided.\n\nIf the `jira-token` and `jira-secret` are provided, they are used as the\nOAuth access token.\n\nIf they are not provided, an OAuth handshake occurs, and an authorization\nURL will be given. The user will need to open the URL in their browser,\nand receive the authorization code provided. Once the code is entered\ninto the application, an access token will be generated, and it will be\nadded to the configuration for future use.\n\n## Attribution\n\nThis project is a fork of https://github.com/coreos/issue-sync at [ea9d009](https://github.com/coreos/issue-sync/tree/ea9d009092f930d7e5e380d0ba534ceddc084439).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuwu-tools%2Fgh-jira-issue-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuwu-tools%2Fgh-jira-issue-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuwu-tools%2Fgh-jira-issue-sync/lists"}