diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 466be6c..3372cdf 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,6 +1,6 @@ name: Bug Report description: File a bug report -labels: ["Type: Bug", "Status: Triage"] +labels: ["bug"] body: - type: markdown attributes: @@ -16,6 +16,25 @@ body: If applicable, add screenshots to help explain the problem you are facing. validations: required: true + - type: dropdown + id: impact + attributes: + label: Impact + description: How severe is the business impact of this bug? + options: + - Low (minor issue or cosmetic problem) + - Medium (functionality degraded, workaround exists) + - High (major functionality broken, no workaround) + - Critical (system down, data loss, affecting deployment in production) + validations: + required: true + - type: textarea + id: impact-rationale + attributes: + label: Impact Rationale + description: > + If impact is high or critical, please provide the rationale behind your assessment, impacted + project reference and any relevant project deadline dates which will be affected by this bug. - type: textarea id: reproduction attributes: @@ -46,7 +65,7 @@ body: description: > Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. Fetch the logs using `juju debug-log --replay` and `kubectl logs ...`. Additional details available in the juju docs - at https://juju.is/docs/olm/juju-logs + at https://documentation.ubuntu.com/juju/3.6/howto/manage-logs/#manage-logs render: shell validations: required: true @@ -54,4 +73,3 @@ body: id: additional-context attributes: label: Additional context - diff --git a/.github/ISSUE_TEMPLATE/enhancement_proposal.yml b/.github/ISSUE_TEMPLATE/enhancement_proposal.yml index b2348b9..df54155 100644 --- a/.github/ISSUE_TEMPLATE/enhancement_proposal.yml +++ b/.github/ISSUE_TEMPLATE/enhancement_proposal.yml @@ -1,6 +1,6 @@ name: Enhancement Proposal description: File an enhancement proposal -labels: ["Type: Enhancement", "Status: Triage"] +labels: ["enhancement"] body: - type: markdown attributes: @@ -15,3 +15,22 @@ body: Describe the enhancement you would like to see in as much detail as needed. validations: required: true + - type: dropdown + id: impact + attributes: + label: Impact + description: What is the impact of this feature? + options: + - Low (The feature is nice to have) + - Medium (The feature may be helpful in the future) + - High (The feature has short-term technical value) + - Critical (The feature has big short-term business value) + validations: + required: true + - type: textarea + id: impact-rationale + attributes: + label: Impact Rationale + description: > + If impact is high or critical, please provide the rationale behind your assessment with as + much context as possible. diff --git a/.trivyignore b/.trivyignore index 91d9d1c..a86c3d5 100644 --- a/.trivyignore +++ b/.trivyignore @@ -9,3 +9,4 @@ CVE-2025-58183 CVE-2025-58186 CVE-2025-58187 CVE-2025-58188 +CVE-2025-68121 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index cccdc1d..908e1a8 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Fixtures for the github-runner-webhook-router charm.""" + import os import random from collections import namedtuple diff --git a/tests/integration/test_app.py b/tests/integration/test_app.py index 748f658..309cb35 100644 --- a/tests/integration/test_app.py +++ b/tests/integration/test_app.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Integration tests for the charmed flask application.""" + import hashlib import hmac import itertools diff --git a/tests/unit/test_mq.py b/tests/unit/test_mq.py index 2d98bc2..9578ed7 100644 --- a/tests/unit/test_mq.py +++ b/tests/unit/test_mq.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """The unit tests for the mq module.""" + import secrets from unittest.mock import MagicMock diff --git a/tests/unit/test_parse.py b/tests/unit/test_parse.py index 66cd54d..5edfb44 100644 --- a/tests/unit/test_parse.py +++ b/tests/unit/test_parse.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Unit tests for the parse module.""" + from itertools import permutations import pytest diff --git a/tests/unit/test_router.py b/tests/unit/test_router.py index a387a9d..4ac2522 100644 --- a/tests/unit/test_router.py +++ b/tests/unit/test_router.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Unit tests for the router module.""" + import itertools from unittest.mock import MagicMock diff --git a/tests/unit/test_validation.py b/tests/unit/test_validation.py index 7514ab5..61bbd6d 100644 --- a/tests/unit/test_validation.py +++ b/tests/unit/test_validation.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """The unit tests for the validation module.""" + import secrets from typing import Callable diff --git a/tests/unit/test_webhook_redelivery.py b/tests/unit/test_webhook_redelivery.py index 62215ed..dfd3139 100644 --- a/tests/unit/test_webhook_redelivery.py +++ b/tests/unit/test_webhook_redelivery.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Unit tests for webhook redelivery script.""" + import secrets from collections import namedtuple from datetime import datetime, timedelta, timezone diff --git a/webhook_redelivery.py b/webhook_redelivery.py index 3a62ff8..7bafdc9 100644 --- a/webhook_redelivery.py +++ b/webhook_redelivery.py @@ -5,6 +5,7 @@ Only webhooks with action type queued are redelivered (as the others are not routable). """ + import argparse import json import logging diff --git a/webhook_router/app.py b/webhook_router/app.py index f4c03c5..9586c01 100644 --- a/webhook_router/app.py +++ b/webhook_router/app.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Flask application which receives GitHub webhooks and logs those.""" + import logging from collections import namedtuple diff --git a/webhook_router/mq.py b/webhook_router/mq.py index 9e36c2a..74b20c0 100644 --- a/webhook_router/mq.py +++ b/webhook_router/mq.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Module for interacting with the message queue.""" + import logging import os diff --git a/webhook_router/parse.py b/webhook_router/parse.py index 762da65..3432817 100644 --- a/webhook_router/parse.py +++ b/webhook_router/parse.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Module for parsing the webhook payload.""" + from collections import namedtuple from enum import Enum from typing import Collection diff --git a/webhook_router/router.py b/webhook_router/router.py index 2994d5e..7cc20c9 100644 --- a/webhook_router/router.py +++ b/webhook_router/router.py @@ -1,6 +1,7 @@ # Copyright 2026 Canonical Ltd. # See LICENSE file for licensing details. """Module for routing webhooks to the appropriate message queue.""" + import itertools import json import logging