Conversation
|
/review |
|
/agentic_review |
|
/agentic_review |
Code Review by Qodo
1. Nil ConsoleSpec deref
|
Review Summary by QodoImplement Console component controller with database, API, and UI management
WalkthroughsDescription• Implements complete Console controller for managing console-ui, console-api, and console-db components within Securesign operator • Adds Console custom resource definition (CRD) with comprehensive spec and status types supporting TLS, external access, and resource configuration • Implements database component with secret management, PVC creation, TLS configuration, service, deployment, and initialization logic • Implements API component with TLS configuration, service, deployment, monitoring (ServiceMonitor), RBAC, and initialization logic • Implements UI component with service, deployment, ingress for external access, RBAC, and initialization logic • Integrates Console resource creation and status synchronization into Securesign controller via ensure_console action • Adds comprehensive test coverage for Console controller reconciliation including database, API, UI, and status condition verification • Updates RBAC configuration with Console resource permissions and viewer/editor ClusterRoles • Registers Console images (console-ui, console-api, console-db) in operator configuration and kustomization • Updates Securesign CRD with optional Console specification and status tracking • Provides sample Console configuration in Securesign manifest File Changes1. internal/controller/console/actions/db/deployment.go
|
PR Reviewer Guide 🔍(Review updated until commit bda35a1)Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Latest suggestions up to bda35a1
Previous suggestionsSuggestions up to commit bda35a1
|
||||||||||||||||||||||||||||||||||||||||||||
|
/review |
|
Persistent review updated to latest commit bda35a1 |
| func(object *rhtasv1alpha1.Console) error { | ||
| object.Spec = *instance.Spec.Console | ||
| return nil | ||
| }, |
There was a problem hiding this comment.
1. Nil consolespec deref 🐞 Bug ⛯ Reliability
consoleAction.Handle dereferences instance.Spec.Console without a nil-check even though SecuresignSpec.Console is optional, causing a panic when spec.console is omitted. This crashes reconciliation for Securesign resources.
Agent Prompt
### Issue description
`internal/controller/securesign/actions/ensure_console.go` dereferences `instance.Spec.Console` without checking for nil even though the field is optional, which can panic the controller.
### Issue Context
`SecuresignSpec.Console` is `*ConsoleSpec` with `json:"console,omitempty"`, so manifests may omit it.
### Fix Focus Areas
- internal/controller/securesign/actions/ensure_console.go[35-66]
### Implementation notes
- Change `CanHandle` to `return instance.Spec.Console != nil` (and optionally also check `instance.Spec.Console.Enabled`).
- Or in `Handle`, add:
- `if instance.Spec.Console == nil { /* set ConsoleCondition NotDefined/Disabled and Continue */ }`
- only assign `object.Spec = *instance.Spec.Console` when non-nil.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| func (i consoleAction) CopyStatus(ctx context.Context, object *rhtasv1alpha1.Console, instance *rhtasv1alpha1.Securesign) *action.Result { | ||
| objectStatus := meta.FindStatusCondition(object.Status.Conditions, constants.ReadyCondition) | ||
| if objectStatus == nil { | ||
| // not initialized yet, wait for update | ||
| return i.Continue() | ||
| } | ||
| if meta.FindStatusCondition(instance.Status.Conditions, ConsoleCondition).Reason != objectStatus.Reason { | ||
| meta.SetStatusCondition(&instance.Status.Conditions, v1.Condition{ | ||
| Type: ConsoleCondition, | ||
| Status: objectStatus.Status, | ||
| Reason: objectStatus.Reason, | ||
| }) | ||
| return i.StatusUpdate(ctx, instance) | ||
| } |
There was a problem hiding this comment.
2. Nil condition deref 🐞 Bug ⛯ Reliability
consoleAction.CopyStatus dereferences meta.FindStatusCondition(...).Reason without a nil-check, which can panic if ConsoleCondition is missing from Securesign status. This can crash reconciliation while syncing Console status.
Agent Prompt
### Issue description
`CopyStatus` can panic by accessing `.Reason` on a nil condition pointer returned by `meta.FindStatusCondition`.
### Issue Context
`meta.FindStatusCondition` returns `*Condition` and may return nil when the condition is absent.
### Fix Focus Areas
- internal/controller/securesign/actions/ensure_console.go[84-97]
### Implementation notes
- Replace the direct deref with:
- `current := meta.FindStatusCondition(instance.Status.Conditions, ConsoleCondition)`
- if `current == nil` then set the condition (or treat as different) and `StatusUpdate`.
- otherwise compare `current.Reason`.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| initContainer := kubernetes.FindInitContainerByNameOrCreate(&template.Spec, "wait-for-console-db-tuf") | ||
| initContainer.Image = images.Registry.Get(images.ConsoleDb) | ||
|
|
||
| initContainer.Command = []string{ | ||
| "/bin/sh", | ||
| "-c", | ||
| fmt.Sprintf(` | ||
| echo "Waiting for rekor-server..."; | ||
| until mysqladmin ping -h%s --silent > /dev/null 2>&1; do | ||
| echo "Waiting for the console database to be ready..."; | ||
| sleep 5; | ||
| done; | ||
| echo "Waiting for TUF server..."; | ||
| until curl %s > /dev/null 2>&1; do | ||
| echo "TUF server not ready..."; | ||
| sleep 5; | ||
| done; | ||
| echo "tuf-init completed." | ||
| `, actions.DbDeploymentName, tufServerHost), | ||
| } |
There was a problem hiding this comment.
3. Tuf url shell injection 🐞 Bug ⛨ Security
Console API deployment initContainer builds a /bin/sh -c script by interpolating spec.api.tuf.address into a curl command, enabling shell command injection via crafted addresses. This allows arbitrary command execution in the initContainer when a user can create/patch the Console resource.
Agent Prompt
### Issue description
The initContainer uses `/bin/sh -c` with a `fmt.Sprintf` script that directly embeds `spec.api.tuf.address`, allowing shell injection.
### Issue Context
`resolveTufUrl()` returns the raw user-provided address and it is inserted into `until curl %s ...`.
### Fix Focus Areas
- internal/controller/console/actions/api/deployment.go[112-131]
- internal/controller/console/actions/api/deployment.go[199-208]
### Implementation notes
Prefer one of:
1) Remove the shell and use an exec-form command that cannot be injected:
- e.g. run a small loop script where the URL is read from an env var but always referenced as `"$TUF_URL"`.
2) Strictly validate `spec.api.tuf.address` with `net/url` and reject anything not `http/https` and containing whitespace/control characters.
3) If keeping shell, pass URL via env var and always quote it: `curl -sf "${TUF_URL}"`.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| const ( | ||
| livenessCommand = "mariadb-admin -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ping" | ||
| readinessCommand = "mariadb -u ${MYSQL_USER} -p${MYSQL_PASSWORD} -e \"SELECT 1;\"" | ||
| ) |
There was a problem hiding this comment.
4. Unquoted password breaks probes 🐞 Bug ⛯ Reliability
DB readiness/liveness probes run bash -c commands that include unquoted ${MYSQL_PASSWORD}, while
generated passwords include shell metacharacters like '&' and '$'. This can make probes fail
unpredictably and keep the DB pod unready or restart-looping.
Agent Prompt
### Issue description
The DB probes execute `bash -c` with unquoted `${MYSQL_PASSWORD}`; since generated passwords include characters like `&` and `$`, probes can break and cause restart loops.
### Issue Context
`GeneratePassword()` includes `!@#$%&*`, and probes use `bash -c`.
### Fix Focus Areas
- internal/controller/console/actions/db/deployment.go[32-35]
- internal/controller/console/actions/db/deployment.go[194-212]
### Implementation notes
- Update probe command strings to quote variables, e.g. `-p"${MYSQL_PASSWORD}"`.
- Prefer using an exec-form probe without a shell if possible (e.g., `[]string{"mariadb-admin","-u","$(MYSQL_USER)","-p$(MYSQL_PASSWORD)","ping"}` is still expansion-dependent; the safest is a small wrapper script with strict quoting).
- Optionally, constrain generated passwords to a shell-safe charset if you must keep `bash -c` probes.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
|
/agentic_describe --pr_description.final_update_message=false |
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
|
/improve |
|
Persistent suggestions updated to latest commit bda35a1 |
PR Code Suggestions ✨Explore these optional code suggestions:
|
||||||||||||||||||||||||||||||||
|
/agentic_improve |
|
/config |
🛠️ Wiki configuration file settings:🛠️ Local configuration file settings: [config]
git_provider="github"
ignore_pr_authors =REDACTED
[jira]
jira_api_token =REDACTED
jira_base_url = "https://issues.redhat.com"
[github_app]
handle_pr_actions = ['opened', 'reopened', 'ready_for_review']
# What runs automatically when PR is opened
pr_commands = [
"/describe --pr_description.final_update_message=false",
"/review",
"/improve"
]
# Do NOT auto-trigger on push (avoid noise)
handle_push_trigger = false
# If you later want re-review on new commits, enable:
# handle_push_trigger = true
# push_commands = ["/review"]
[pr_reviewer] # /review #
persistent_comment = true
require_tests_review = false
require_security_review = true
require_ticket_analysis_review = true
require_estimate_effort_to_review = true
require_can_be_split_review = false
enable_review_labels_security = true
enable_review_labels_effort = true
final_update_message = true
[pr_description] # /describe #
publish_labels = true
add_original_user_description = false
generate_ai_title = false
use_bullet_points = true
enable_pr_type = true # Enhancement, Feature, Documentation,...
enable_pr_diagram = false
publish_description_as_comment = true
publish_description_as_comment_persistent = true
final_update_message = true
enable_help_text = false
[pr_code_suggestions]
commitable_code_suggestions = false
persistent_comment = true
[rag_arguments]
enable_rag=true
🛠️ Global configuration file settings:🛠️ PR-Agent final configurations:==================== CONFIG ====================
config.pr_compliance = {'ENABLE_RULES_PLATFORM': True}
config.model_reasoning = 'vertex_ai/gemini-2.5-pro'
config.model = 'openai/gpt-5.2'
config.model_turbo = 'anthropic/claude-haiku-4-5-20251001'
config.fallback_models = ['anthropic/claude-sonnet-4-6', 'openai/gpt-5.2', 'bedrock/us.anthropic.claude-sonnet-4-6']
config.second_model_for_exhaustive_mode = 'o4-mini'
config.git_provider = 'github'
config.publish_output = True
config.publish_output_no_suggestions = True
config.publish_output_progress = True
config.verbosity_level = 0
config.publish_logs = False
config.debug_mode = False
config.use_wiki_settings_file = True
config.use_repo_settings_file = True
config.use_global_settings_file = True
config.use_global_wiki_settings_file = False
config.disable_auto_feedback = False
config.ai_timeout = 150
config.response_language = 'en-US'
config.clone_repo_instead_of_fetch = True
config.always_clone = False
config.add_repo_metadata = True
config.clone_repo_time_limit = 300
config.publish_inline_comments_fallback_batch_size = 5
config.publish_inline_comments_fallback_sleep_time = 2
config.max_model_tokens = 32000
config.custom_model_max_tokens = -1
config.patch_extension_skip_types = ['.md', '.txt']
config.extra_allowed_extensions = []
config.allow_dynamic_context = True
config.allow_forward_dynamic_context = True
config.max_extra_lines_before_dynamic_context = 12
config.patch_extra_lines_before = 5
config.patch_extra_lines_after = 1
config.ai_handler = 'litellm'
config.cli_mode = False
config.fetch_github_apps_from_platform = False
config.trial_git_org_max_invokes_per_month = 30
config.trial_ratio_close_to_limit = 0.8
config.invite_only_mode = False
config.enable_request_access_msg_on_new_pr = False
config.check_also_invites_field = False
config.allowed_users = []
config.calculate_context = True
config.disable_checkboxes = False
config.output_relevant_configurations = False
config.large_patch_policy = 'clip'
config.seed = -1
config.temperature = 0.2
config.allow_dynamic_context_ab_testing = False
config.choose_dynamic_context_ab_testing_ratio = 0.5
config.ignore_pr_title = ['^\\[Auto\\]', '^Auto']
config.ignore_pr_target_branches = []
config.ignore_pr_source_branches = []
config.ignore_pr_labels = []
config.ignore_ticket_labels = []
config.allow_only_specific_folders = []
config.ignore_pr_authors = 'REDACTED'
config.ignore_repositories = []
config.ignore_language_framework = []
config.is_auto_command = False
config.is_new_pr = False
config.enable_ai_metadata = True
config.present_reasoning = True
config.max_tickets = 10
config.max_tickets_chars = 8000
config.prevent_any_approval = False
config.enable_comment_approval = False
config.enable_auto_approval = False
config.auto_approve_for_low_review_effort = -1
config.auto_approve_for_no_suggestions = False
config.ensure_ticket_compliance = False
config.new_diff_format = True
config.new_diff_format_add_external_references = True
config.tasks_queue_ttl_from_dequeue_in_seconds = 900
config.enable_custom_labels = False
==================== PR_REVIEWER ====================
pr_reviewer.require_score_review = False
pr_reviewer.require_tests_review = False
pr_reviewer.require_estimate_effort_to_review = True
pr_reviewer.require_can_be_split_review = False
pr_reviewer.require_security_review = True
pr_reviewer.require_todo_scan = False
pr_reviewer.require_ticket_analysis_review = True
pr_reviewer.require_ticket_labels = False
pr_reviewer.require_no_ticket_labels = False
pr_reviewer.check_pr_additional_content = False
pr_reviewer.persistent_comment = True
pr_reviewer.extra_instructions = ''
pr_reviewer.final_update_message = True
pr_reviewer.enable_review_labels_security = True
pr_reviewer.enable_review_labels_effort = True
pr_reviewer.enable_help_text = False
==================== PR_COMPLIANCE ====================
pr_compliance.enabled = True
pr_compliance.enable_rules_platform = True
pr_compliance.rule_providers = []
pr_compliance.enable_security_section = True
pr_compliance.enable_ticket_section = True
pr_compliance.enable_codebase_duplication_section = True
pr_compliance.enable_custom_compliance_section = True
pr_compliance.require_ticket_analysis_review = True
pr_compliance.allow_repo_pr_compliance = True
pr_compliance.enable_global_pr_compliance = True
pr_compliance.max_lines_allowed = 2000
pr_compliance.local_wiki_compliance_str = ''
pr_compliance.global_wiki_pr_compliance = ''
pr_compliance.local_repo_compliance_str = ''
pr_compliance.global_repo_pr_compliance_str = ''
pr_compliance.global_compliance_str = ''
pr_compliance.enable_generic_custom_compliance_checklist = True
pr_compliance.persist_generic_custom_compliance_checklist = False
pr_compliance.display_no_compliance_only = False
pr_compliance.enable_security_compliance = True
pr_compliance.enable_update_pr_compliance_checkbox = True
pr_compliance.enable_todo_scan = False
pr_compliance.enable_ticket_labels = False
pr_compliance.enable_no_ticket_labels = False
pr_compliance.check_pr_additional_content = False
pr_compliance.enable_compliance_labels_security = True
pr_compliance.enable_user_defined_compliance_labels = True
pr_compliance.enable_estimate_effort_to_review = True
pr_compliance.max_rag_components_to_analyze = 5
pr_compliance.min_component_size = 5
pr_compliance.persistent_comment = True
pr_compliance.enable_help_text = False
pr_compliance.extra_instructions = ''
==================== PR_DESCRIPTION ====================
pr_description.publish_labels = True
pr_description.add_original_user_description = False
pr_description.generate_ai_title = False
pr_description.extra_instructions = ''
pr_description.enable_pr_type = True
pr_description.final_update_message = True
pr_description.enable_help_text = False
pr_description.enable_help_comment = False
pr_description.bring_latest_tag = False
pr_description.enable_pr_diagram = False
pr_description.publish_description_as_comment = True
pr_description.publish_description_as_comment_persistent = True
pr_description.enable_semantic_files_types = True
pr_description.collapsible_file_list = 'adaptive'
pr_description.collapsible_file_list_threshold = 8
pr_description.inline_file_summary = False
pr_description.use_description_markers = False
pr_description.include_generated_by_header = True
pr_description.enable_large_pr_handling = True
pr_description.max_ai_calls = 4
pr_description.auto_create_ticket = False
pr_description.use_bullet_points = True
==================== PR_QUESTIONS ====================
pr_questions.aware_ai_handler = False
pr_questions.enable_help_text = False
==================== PR_CODE_SUGGESTIONS ====================
pr_code_suggestions.suggestions_depth = 'exhaustive'
pr_code_suggestions.commitable_code_suggestions = False
pr_code_suggestions.decouple_hunks = False
pr_code_suggestions.dual_publishing_score_threshold = -1
pr_code_suggestions.focus_only_on_problems = True
pr_code_suggestions.allow_thumbs_up_down = False
pr_code_suggestions.enable_suggestion_type_reuse = False
pr_code_suggestions.enable_more_suggestions_checkbox = True
pr_code_suggestions.high_level_suggestions_enabled = True
pr_code_suggestions.extra_instructions = ''
pr_code_suggestions.enable_help_text = False
pr_code_suggestions.show_extra_context = False
pr_code_suggestions.persistent_comment = True
pr_code_suggestions.max_history_len = 5
pr_code_suggestions.apply_suggestions_checkbox = True
pr_code_suggestions.enable_chat_in_code_suggestions = True
pr_code_suggestions.apply_limit_scope = True
pr_code_suggestions.suggestions_score_threshold = 0
pr_code_suggestions.new_score_mechanism = True
pr_code_suggestions.new_score_mechanism_th_high = 9
pr_code_suggestions.new_score_mechanism_th_medium = 7
pr_code_suggestions.discard_unappliable_suggestions = False
pr_code_suggestions.num_code_suggestions_per_chunk = 3
pr_code_suggestions.num_best_practice_suggestions = 2
pr_code_suggestions.max_number_of_calls = 3
pr_code_suggestions.final_clip_factor = 0.8
pr_code_suggestions.demand_code_suggestions_self_review = False
pr_code_suggestions.code_suggestions_self_review_text = '**Author self-review**: I have reviewed the PR code suggestions, and addressed the relevant ones.'
pr_code_suggestions.approve_pr_on_self_review = False
pr_code_suggestions.fold_suggestions_on_self_review = True
pr_code_suggestions.publish_post_process_suggestion_impact = True
pr_code_suggestions.wiki_page_accepted_suggestions = True
pr_code_suggestions.enable_local_self_reflect_in_large_prs = False
pr_code_suggestions.simplify_response = True
==================== PR_CUSTOM_PROMPT ====================
pr_custom_prompt.prompt = 'The code suggestions should focus only on the following:\n- ...\n- ...\n...\n'
pr_custom_prompt.suggestions_score_threshold = 0
pr_custom_prompt.num_code_suggestions_per_chunk = 4
pr_custom_prompt.self_reflect_on_custom_suggestions = True
pr_custom_prompt.enable_help_text = False
==================== PR_ADD_DOCS ====================
pr_add_docs.extra_instructions = ''
pr_add_docs.docs_style = 'Sphinx'
pr_add_docs.file = ''
pr_add_docs.class_name = ''
==================== PR_UPDATE_CHANGELOG ====================
pr_update_changelog.push_changelog_changes = False
pr_update_changelog.extra_instructions = ''
pr_update_changelog.add_pr_link = True
pr_update_changelog.skip_ci_on_push = True
==================== PR_ANALYZE ====================
pr_analyze.enable_help_text = False
==================== PR_TEST ====================
pr_test.enable = True
pr_test.extra_instructions = ''
pr_test.testing_framework = ''
pr_test.num_tests = 3
pr_test.avoid_mocks = True
pr_test.file = ''
pr_test.class_name = ''
pr_test.enable_help_text = False
==================== PR_IMPROVE_COMPONENT ====================
pr_improve_component.num_code_suggestions = 4
pr_improve_component.extra_instructions = ''
pr_improve_component.file = ''
pr_improve_component.class_name = ''
==================== REVIEW_AGENT ====================
review_agent.enabled = True
review_agent.publish_output = True
review_agent.enable_extended_mode = False
review_agent.enable_context_collector = False
review_agent.enable_issues_agent = True
review_agent.enable_compliance_agent = True
review_agent.enable_spec_agent = True
review_agent.enable_deduplication = True
review_agent.enable_conversion_agent = False
review_agent.enable_past_bugs_collector = False
review_agent.persistent_comment = True
review_agent.enable_database_persistence = False
review_agent.enable_incremental_review = True
review_agent.rules_enabled = True
review_agent.requirements_gap_enabled = True
review_agent.llm_call_timeout = 180
review_agent.context_collector_llm_model = 'turbo'
review_agent.llm_model = 'openai/gpt-5.2_thinking'
review_agent.ensemble_models = ['openai/gpt-5.2_thinking', 'anthropic/claude-opus-4-6_thinking']
review_agent.feedback_tool_llm_model = 'turbo'
review_agent.spec_llm_model = ''
review_agent.conversion_llm_model = 'openai/gpt-5.2'
review_agent.conversion_batching_mode = 'batch'
review_agent.conversion_batch_size = 10
review_agent.langsmith_project_name = 'review-agent'
review_agent.max_tokens_for_file = 'REDACTED'
review_agent.single_unified_diff_tokens_limit = 'REDACTED'
review_agent.max_llm_calls = 100
review_agent.context_collector_max_llm_calls = 6
review_agent.compliance_batch_size = 0
review_agent.past_bugs_max_results = 10
review_agent.past_bugs_dedup = True
review_agent.past_bugs_enable_similar_search = True
review_agent.deduplication_llm_max_tokens = 'REDACTED'
review_agent.publishing_action_level_rank_threshold = 0
review_agent.comments_location_policy = 'both'
review_agent.inline_comments_severity_threshold = 3
review_agent.prefer_single_line_comments = False
review_agent.issues_user_guidelines = ''
review_agent.compliance_user_guidelines = ''
review_agent.demand_self_review = False
review_agent.self_review_text = '**Author self-review**: I have reviewed the code review findings, and addressed the relevant ones.'
review_agent.approve_pr_on_self_review = False
==================== PR_HELP ====================
pr_help.force_local_db = False
pr_help.num_retrieved_snippets = 5
==================== PR_NEW_ISSUE ====================
pr_new_issue.label_to_prompt_part = {'general': 'general question', 'feature': 'feature request (may already be addressed in the documentation)', 'bug': 'possible bug report (may be a by design behavior)'}
pr_new_issue.supported_repos = ['qodo-ai/pr-agent']
==================== PR_HELP_DOCS ====================
pr_help_docs.repo_url = ''
pr_help_docs.repo_default_branch = 'main'
pr_help_docs.docs_path = 'docs'
pr_help_docs.exclude_root_readme = False
pr_help_docs.supported_doc_exts = ['.md', '.mdx', '.rst']
pr_help_docs.enable_help_text = False
==================== PR_SIMILAR_ISSUE ====================
pr_similar_issue.skip_comments = False
pr_similar_issue.force_update_dataset = False
pr_similar_issue.max_issues_to_scan = 500
pr_similar_issue.vectordb = 'pinecone'
==================== PR_FIND_SIMILAR_COMPONENT ====================
pr_find_similar_component.class_name = ''
pr_find_similar_component.file = ''
pr_find_similar_component.search_from_org = False
pr_find_similar_component.allow_fallback_less_words = True
pr_find_similar_component.number_of_keywords = 5
pr_find_similar_component.number_of_results = 5
==================== BEST_PRACTICES ====================
best_practices.auto_best_practices_str = ''
best_practices.wiki_best_practices_str = ''
best_practices.global_wiki_best_practices = ''
best_practices.local_repo_best_practices_str = ''
best_practices.global_repo_best_practices_str = ''
best_practices.global_best_practices_str = ''
best_practices.organization_name = ''
best_practices.max_lines_allowed = 2000
best_practices.enable_global_best_practices = True
best_practices.allow_repo_best_practices = True
best_practices.enabled = True
==================== AUTO_BEST_PRACTICES ====================
auto_best_practices.enable_auto_best_practices = True
auto_best_practices.utilize_auto_best_practices = True
auto_best_practices.extra_instructions = ''
auto_best_practices.min_suggestions_to_auto_best_practices = 10
auto_best_practices.number_of_days_to_update = 30
auto_best_practices.max_patterns = 5
auto_best_practices.minimal_date_to_update = '2025-01-26'
==================== JIRA ====================
jira.jira_client_id = 'REDACTED'
jira.jira_app_secret = 'REDACTED'
jira.jira_api_token = 'REDACTED'
jira.jira_base_url = 'https://issues.redhat.com'
==================== LINEAR ====================
linear.linear_client_id = 'REDACTED'
==================== PR_TO_TICKET ====================
pr_to_ticket.default_base_url = ''
pr_to_ticket.default_project_key = 'REDACTED'
pr_to_ticket.fallback_to_git_provider_issues = True
pr_to_ticket.direct_update_compliance = False
==================== github_app ====================
github_app.bot_user = 'github-actions[bot]'
github_app.override_deployment_type = True
github_app.handle_pr_actions = ['opened', 'reopened', 'ready_for_review']
github_app.pr_commands = ['/describe --pr_description.final_update_message=false', '/review', '/improve']
github_app.feedback_on_draft_pr = False
github_app.handle_push_trigger = False
github_app.push_commands = ['/agentic_review']
github_app.ignore_pr_title = []
github_app.ignore_bot_pr = True |
No description provided.