-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: can disable webhook in helm #1101
Conversation
Warning Rate limit exceeded@Rory-Z has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 14 minutes and 25 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (7)
WalkthroughThe pull request introduces webhook functionality for the EMQX Operator by adding configuration options and resources across multiple Kubernetes deployment templates. The changes enable conditional creation of webhook-related components, including a service, mutating and validating webhook configurations, and certificate management. The workflow deployment configuration is also updated to support more granular control over webhook and installation scenarios. Changes
Sequence DiagramsequenceDiagram
participant Cluster as Kubernetes Cluster
participant Operator as EMQX Operator
participant Webhook as Webhook Service
alt Webhook Enabled
Cluster->>Operator: Deploy with webhook.enabled=true
Operator->>Webhook: Create Webhook Service
Operator->>Cluster: Create Mutating/Validating Webhook Configurations
Cluster->>Webhook: Register Webhook Endpoints
else Webhook Disabled
Cluster->>Operator: Deploy with webhook.enabled=false
Operator->>Cluster: Skip Webhook Components
end
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
deploy/charts/emqx-operator/templates/crd.emqxenterprises.apps.emqx.io.yaml (1)
Line range hint
6-8
: Make cert-manager annotation conditionalThe cert-manager annotation should be conditional on
.Values.webhook.enabled
since it's only needed when webhooks are enabled.Apply this diff:
metadata: annotations: + {{- if .Values.webhook.enabled }} cert-manager.io/inject-ca-from: '{{ .Release.Namespace }}/{{ include "emqx-operator.fullname" . }}-serving-cert' + {{- end }} controller-gen.kubebuilder.io/version: v0.17.0
🧹 Nitpick comments (4)
deploy/charts/emqx-operator/templates/webhook-mutating-configuration.yaml (1)
Line range hint
1-73
: Consider adding timeoutSeconds and namespaceSelector.The webhook configuration could benefit from:
- Explicit
timeoutSeconds
to prevent default timeout issuesnamespaceSelector
whensingleNamespace
is false for better multi-tenant supportExample addition for each webhook:
sideEffects: None + timeoutSeconds: 10 + namespaceSelector: + matchExpressions: + - key: kubernetes.io/metadata.name + operator: In + values: + - {{ .Release.Namespace }}🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/values.yaml (1)
30-32
: Consider documenting webhook feature and defaulting to false.
- Add documentation comments explaining the webhook feature, its requirements, and implications
- Consider defaulting
webhook.enabled
tofalse
for safer installationsExample addition:
webhook: + # -- Enable webhook server for validation and mutation of EMQX resources + # Requires cert-manager or manual TLS certificate configuration + # When enabled, validates and mutates EMQX CRDs during CREATE and UPDATE operations - enabled: true + enabled: false.github/workflows/deploy.yaml (1)
41-47
: Consider adding test cases with webhook enabled.Current test matrix only includes cases with
enable_webhook: false
. Consider adding test cases withenable_webhook: true
to ensure both scenarios work correctly.include: - install: helm enable_webhook: false emqx: [EMQX, emqx, "config/samples/emqx/v2beta1/emqx-slim.yaml"] - install: helm enable_webhook: false emqx: [EMQX, emqx, "config/samples/emqx/v2beta1/emqx-full.yaml"] + - install: helm + enable_webhook: true + emqx: [EMQX, emqx, "config/samples/emqx/v2beta1/emqx-slim.yaml"] + - install: helm + enable_webhook: true + emqx: [EMQX, emqx, "config/samples/emqx/v2beta1/emqx-full.yaml"]deploy/charts/emqx-operator/templates/crd.emqxes.apps.emqx.io.yaml (1)
Line range hint
1-1
: Consider adding validation for skipCRDs.While the
skipCRDs
condition is a common pattern, consider adding validation in values.yaml to ensure it's a boolean.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (12)
.github/workflows/deploy.yaml
(1 hunks)deploy/charts/emqx-operator/templates/cert-manager.yaml
(2 hunks)deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml
(2 hunks)deploy/charts/emqx-operator/templates/controller-manager.yaml
(3 hunks)deploy/charts/emqx-operator/templates/crd.emqxbrokers.apps.emqx.io.yaml
(2 hunks)deploy/charts/emqx-operator/templates/crd.emqxenterprises.apps.emqx.io.yaml
(2 hunks)deploy/charts/emqx-operator/templates/crd.emqxes.apps.emqx.io.yaml
(2 hunks)deploy/charts/emqx-operator/templates/crd.emqxplugins.apps.emqx.io.yaml
(2 hunks)deploy/charts/emqx-operator/templates/crd.rebalances.apps.emqx.io.yaml
(2 hunks)deploy/charts/emqx-operator/templates/webhook-mutating-configuration.yaml
(2 hunks)deploy/charts/emqx-operator/templates/webhook-validating-configuration.yaml
(2 hunks)deploy/charts/emqx-operator/values.yaml
(1 hunks)
👮 Files not reviewed due to content moderation or server errors (4)
- deploy/charts/emqx-operator/templates/crd.emqxplugins.apps.emqx.io.yaml
- deploy/charts/emqx-operator/templates/controller-manager.yaml
- deploy/charts/emqx-operator/templates/crd.rebalances.apps.emqx.io.yaml
- deploy/charts/emqx-operator/templates/crd.emqxbrokers.apps.emqx.io.yaml
🧰 Additional context used
🪛 yamllint (1.35.1)
deploy/charts/emqx-operator/templates/webhook-validating-configuration.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/webhook-mutating-configuration.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/cert-manager.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
⏰ Context from checks skipped due to timeout of 90000ms (23)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2beta1/emqx-full.yaml, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2beta1/emqx-full.yaml, false)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml, false)
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-full.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-full.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-slim.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-slim.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-full.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-full.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-slim.yaml, ...
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2beta1/emqx-full.yaml, false)
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2beta1/emqx-slim.yaml, false)
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml, false)
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-slim.yaml, false)
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-full.yaml...
- GitHub Check: upgrade (EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml)
- GitHub Check: upgrade (EMQX, emqx, config/samples/emqx/v2alpha1/emqx-slim.yaml)
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-slim.yaml...
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-full.yaml...
- GitHub Check: upgrade (EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-slim.yaml)
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-slim.yaml...
- GitHub Check: upgrade (EmqxBroker, emqx, config/samples/emqx/v1beta3/emqxbroker-slim.yaml)
🔇 Additional comments (7)
deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml (1)
Line range hint
1-15
: LGTM! Service configuration follows best practices.The webhook service configuration is well-structured with appropriate port mapping (443:9443) and selector labels.
🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/cert-manager.yaml (2)
Line range hint
1-26
: LGTM! Certificate management is well-structured.The implementation correctly handles both webhook and cert-manager enabling conditions, with proper certificate configuration for the webhook service.
🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
Line range hint
17-21
: Consider validating namespace in DNS names for multi-tenant clusters.The DNS names in the certificate should be validated when
singleNamespace
is false to ensure proper operation in multi-tenant environments.Run this script to check namespace handling:
🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/webhook-validating-configuration.yaml (1)
Line range hint
1-94
: Same improvements needed as mutating webhook configuration.Please apply the same improvements suggested for the mutating webhook configuration regarding
timeoutSeconds
andnamespaceSelector
.🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/crd.emqxenterprises.apps.emqx.io.yaml (1)
Line range hint
12-23
: LGTM: Webhook configuration looks goodThe webhook configuration is properly structured with:
- Conditional inclusion based on
.Values.webhook.enabled
- Correct webhook strategy and service configuration
- Proper conversion review version support
deploy/charts/emqx-operator/templates/crd.emqxes.apps.emqx.io.yaml (2)
Line range hint
6-8
: Proper security configuration with cert-manager integration.The CRD correctly uses cert-manager annotations for CA injection, ensuring secure webhook communication.
Line range hint
12-23
: Well-structured webhook configuration with proper security considerations.The webhook configuration is properly structured with:
- Conditional inclusion based on
.Values.webhook.enabled
- Clear service configuration
- Proper versioning support
Let's verify the webhook service configuration:
✅ Verification successful
Webhook configuration is properly implemented and secure
The webhook configuration in the CRD is correctly aligned with:
- Matching service name and namespace templating
- Proper TLS configuration through cert-manager
- Secure HTTPS endpoint (port 443)
- Conditional enabling of all required components
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify webhook service configuration # Check if the webhook service template exists fd -t f "controller-manager-webhook-service.yaml" deploy/charts/emqx-operator/templates/ # Check if cert-manager resources are properly configured fd -t f "cert-manager.yaml" deploy/charts/emqx-operator/templates/Length of output: 289
Script:
#!/bin/bash # Check webhook service configuration echo "=== Webhook Service Configuration ===" cat deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml echo -e "\n=== Cert Manager Configuration ===" cat deploy/charts/emqx-operator/templates/cert-manager.yamlLength of output: 1579
4ac166b
to
98ab166
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (4)
deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml (1)
Line range hint
1-15
: Consider adding a port name for better observability.The service configuration looks good, following Kubernetes best practices. Consider adding a name to the port for better observability and potential future service mesh integration.
spec: ports: - - port: 443 + - name: webhook + port: 443 targetPort: 9443🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/webhook-mutating-configuration.yaml (1)
Line range hint
1-73
: Consider adding namespace selector for better control.The mutating webhook configuration is well-structured, but consider adding a namespace selector to limit the webhook's scope and prevent potential cluster-wide impact.
Add namespace selector to each webhook:
name: mutating.broker.emqx.io + namespaceSelector: + matchExpressions: + - key: kubernetes.io/metadata.name + operator: NotIn + values: ["kube-system"] rules:🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/webhook-validating-configuration.yaml (1)
Line range hint
1-94
: Maintain consistency with mutating webhook configuration.The validating webhook configuration follows the same pattern as the mutating webhook. Consider applying the same namespace selector recommendation here for consistency.
Apply the same namespace selector pattern to each webhook as suggested in the mutating webhook configuration.
🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/controller-manager.yaml (1)
54-58
: Consider adding webhook readiness probe.The webhook port is correctly configured, but consider adding a readiness probe for the webhook endpoint to ensure it's properly initialized.
ports: - containerPort: 9443 name: webhook-server protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: 9443 + initialDelaySeconds: 5 + periodSeconds: 10
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
.github/workflows/deploy.yaml
(1 hunks)deploy/charts/emqx-operator/templates/cert-manager.yaml
(2 hunks)deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml
(2 hunks)deploy/charts/emqx-operator/templates/controller-manager.yaml
(3 hunks)deploy/charts/emqx-operator/templates/webhook-mutating-configuration.yaml
(2 hunks)deploy/charts/emqx-operator/templates/webhook-validating-configuration.yaml
(2 hunks)deploy/charts/emqx-operator/values.yaml
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- deploy/charts/emqx-operator/values.yaml
- .github/workflows/deploy.yaml
🧰 Additional context used
🪛 yamllint (1.35.1)
deploy/charts/emqx-operator/templates/cert-manager.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/webhook-mutating-configuration.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/webhook-validating-configuration.yaml
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
⏰ Context from checks skipped due to timeout of 90000ms (31)
- GitHub Check: deployment (false, helm, true, EMQX, emqx, config/samples/emqx/v2beta1/emqx-full.yaml)
- GitHub Check: deployment (false, helm, true, EMQX, emqx, config/samples/emqx/v2beta1/emqx-slim.yaml)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2beta1/emqx-full.yaml, true, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2beta1/emqx-full.yaml, false, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2beta1/emqx-slim.yaml, true, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2beta1/emqx-slim.yaml, false, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml, true, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml, false, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-slim.yaml, true, true)
- GitHub Check: deployment (helm, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-slim.yaml, false, true)
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-full.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-full.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-slim.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-slim.yaml, ...
- GitHub Check: upgrade (EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml)
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-full.yaml, ...
- GitHub Check: upgrade (EMQX, emqx, config/samples/emqx/v2alpha1/emqx-slim.yaml)
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-full.yaml, ...
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-slim.yaml, ...
- GitHub Check: upgrade (EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-slim.yaml)
- GitHub Check: upgrade (EmqxBroker, emqx, config/samples/emqx/v1beta3/emqxbroker-slim.yaml)
- GitHub Check: deployment (helm, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-slim.yaml, ...
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2beta1/emqx-full.yaml, false, true)
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2beta1/emqx-slim.yaml, false, true)
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-full.yaml, false, true)
- GitHub Check: deployment (static, EMQX, emqx, config/samples/emqx/v2alpha1/emqx-slim.yaml, false, true)
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-full.yaml...
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta4/emqxenterprise-slim.yaml...
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-full.yaml...
- GitHub Check: deployment (static, EmqxEnterprise, emqx-ee, config/samples/emqx/v1beta3/emqxenterprise-slim.yaml...
- GitHub Check: unit-test
🔇 Additional comments (3)
deploy/charts/emqx-operator/templates/cert-manager.yaml (1)
Line range hint
1-26
: LGTM! Secure certificate configuration for webhook.The certificate configuration is well-structured with appropriate DNS names and self-signed issuer. The double conditional ensures proper dependency management.
Let's verify the cert-manager CRD availability in the cluster:
✅ Verification successful
Certificate configuration is properly integrated with webhook components
The certificate configuration is verified to be correct and properly integrated:
- Service name in certificate's DNS names matches the actual webhook service
- Cert-manager CA injection is properly configured in webhook configurations
- All components are consistently templated and conditionally enabled
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check if cert-manager CRDs are available kubectl get crd certificates.cert-manager.io issuers.cert-manager.ioLength of output: 168
Script:
#!/bin/bash # Check webhook service and related configurations echo "=== Checking webhook service template ===" fd "service.yaml" deploy/charts/emqx-operator/templates/ echo -e "\n=== Checking values.yaml for cert-manager config ===" cat deploy/charts/emqx-operator/values.yaml echo -e "\n=== Searching for webhook configurations ===" rg -l "webhook" deploy/charts/emqx-operator/Length of output: 3334
Script:
#!/bin/bash echo "=== Checking webhook service configuration ===" cat deploy/charts/emqx-operator/templates/controller-manager-webhook-service.yaml echo -e "\n=== Checking webhook configurations ===" cat deploy/charts/emqx-operator/templates/webhook-validating-configuration.yamlLength of output: 2954
🧰 Tools
🪛 yamllint (1.35.1)
[error] 1-1: syntax error: expected the node content, but found '-'
(syntax)
deploy/charts/emqx-operator/templates/controller-manager.yaml (2)
30-32
: LGTM! Environment variable properly configured.The ENABLE_WEBHOOKS environment variable is correctly added and quoted.
76-81
: LGTM! Secure certificate mounting configuration.The certificate volume and mount configuration follow security best practices with appropriate read-only access and file permissions.
Also applies to: 86-92
98ab166
to
66c4757
Compare
Signed-off-by: Rory Z <[email protected]>
66c4757
to
d7d7655
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #1101 +/- ##
==========================================
+ Coverage 76.16% 76.24% +0.08%
==========================================
Files 69 69
Lines 6246 6246
==========================================
+ Hits 4757 4762 +5
+ Misses 1249 1246 -3
+ Partials 240 238 -2 ☔ View full report in Codecov by Sentry. |
Summary by CodeRabbit
New Features
Configuration Changes