{"record":{"id":"270f0adef33c2105","repo":"infiniflow/ragflow","slug":"jira-base-url-must-be-provided-via-config-or-cli-a","errorCode":null,"errorMessage":"Jira base URL must be provided via config or CLI arguments.","messagePattern":"Jira base URL must be provided via config or CLI arguments\\.","errorType":"validation","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"common/data_source/jira/connector.py","lineNumber":960,"sourceCode":"            \"jql_query\": args.jql_query,\n            \"batch_size\": args.batch_size,\n            \"start_ts\": args.start_ts,\n            \"end_ts\": args.end_ts,\n            \"include_comments\": args.include_comments,\n            \"include_attachments\": args.include_attachments,\n            \"attachment_size_limit\": args.attachment_size_limit,\n            \"credentials\": {\n                \"jira_user_email\": args.user_email,\n                \"jira_api_token\": args.api_token,\n                \"jira_password\": args.password,\n            },\n        }\n\n    base_url = config.get(\"base_url\")\n    credentials = config.get(\"credentials\", {})\n\n    if not base_url:\n        raise RuntimeError(\"Jira base URL must be provided via config or CLI arguments.\")\n    if not (credentials.get(\"jira_api_token\") or ((credentials.get(\"jira_user_email\") or credentials.get(\"jira_username\")) and credentials.get(\"jira_password\"))):\n        raise RuntimeError(\"Provide either an API token or both email/password for Jira authentication.\")\n\n    connector_options = {\n        key: value\n        for key, value in (\n            (\"include_comments\", config.get(\"include_comments\")),\n            (\"include_attachments\", config.get(\"include_attachments\")),\n            (\"attachment_size_limit\", config.get(\"attachment_size_limit\")),\n            (\"labels_to_skip\", config.get(\"labels_to_skip\")),\n            (\"comment_email_blacklist\", config.get(\"comment_email_blacklist\")),\n            (\"scoped_token\", config.get(\"scoped_token\")),\n            (\"timezone_offset\", config.get(\"timezone_offset\")),\n        )\n        if value is not None\n    }\n\n    documents = test_jira(","sourceCodeStart":942,"sourceCodeEnd":978,"githubUrl":"https://github.com/infiniflow/ragflow/blob/554fb1133ac3861732235ad9c377eb5e0a770665/common/data_source/jira/connector.py#L942-L978","documentation":"A RuntimeError from the test/CLI entrypoint when the assembled config dict has no base_url after merging CLI args and any config source. base_url is mandatory because every Jira REST call (and the constructed jira client) is derived from it; without it the connector cannot even be built for a smoke test.","triggerScenarios":"Invoking the test_jira CLI flow without --base-url (or the config-file equivalent) so config.get('base_url') returns None or an empty string.","commonSituations":"Running the CLI smoke test and forgetting the URL flag; config file path wrong so the JSON/YAML never loads and defaults are empty; typo in the config key (url vs base_url); CI script missing the argument.","solutions":["Pass the Jira instance URL, e.g. --base-url https://yourorg.atlassian.net (or set base_url in the config file consumed by the test entrypoint).","If using a config file, verify the file is actually being read (path, JSON validity) and that the key is exactly 'base_url'.","For Cloud, use the full https://<site>.atlassian.net origin with no /rest suffix; for Data Center use the server root."],"exampleFix":"# before\npython -m common.data_source.jira.connector --project-key OPS ...   # missing URL\n\n# after\npython -m common.data_source.jira.connector --base-url https://yourorg.atlassian.net --project-key OPS --user-email you@org.com --api-token XXXX","handlingStrategy":"validation","validationCode":"if not (args.base_url or config.get(\"base_url\")):\n    raise SystemExit(\"--base-url is required for the Jira test CLI\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Fail fast in arg parsing with a clear usage message instead of deep RuntimeError.","Keep one canonical config key ('base_url') shared by CLI and config file."],"tags":["jira","configuration","cli","missing-argument","base-url"],"backgroundTag":null,"analyzedSha":"554fb1133ac3861732235ad9c377eb5e0a770665","analyzedAt":"2026-08-15T09:20:16.380Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}