Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
d979796
Update versions in application files
Mar 23, 2026
b7c7175
Release: Merge back 2.56.3 into bugfix from: master-into-bugfix/2.56.…
Maffooch Mar 24, 2026
ccb4021
feat: Add JFrog Xray API Summary Artifact Scan configuration (#14548)
Arthur-DTAG Mar 24, 2026
340eb7e
chore(deps): bump pyopenssl from 25.3.0 to 26.0.0 (#14578)
dependabot[bot] Mar 26, 2026
44d9b28
chore(deps): bump picomatch in /docs (#14595)
dependabot[bot] Mar 26, 2026
3f0cf95
add semi large sample for jfrog xray unified and acunetix 360 (#14570)
valentijnscholten Mar 26, 2026
807e8b3
chore(deps): bump requests from 2.32.5 to 2.33.0 (#14598)
dependabot[bot] Mar 27, 2026
0ecee01
Standardize CI tests on Debian AMD64 and document supported image var…
Maffooch Mar 27, 2026
0359bba
fix: handle missing status_finding_non_special prefetch in reimporter…
seantechco Mar 27, 2026
54dfaf3
feat: add PluggableContextTask for settings-based celery task context…
valentijnscholten Mar 27, 2026
f0f0f7f
fix: remove django-linear-migrations (#14571)
valentijnscholten Mar 27, 2026
d61da2c
perf: replace per-object async delete with SQL cascade walker (#14566)
valentijnscholten Mar 27, 2026
876ff9c
Add scan_date to import settings if overridden (#14502)
Maffooch Mar 27, 2026
fa5de85
fix(dedupe): prevent duplicate test processing in batch dedupe command
valentijnscholten Mar 28, 2026
367d9f8
Merge pull request #14601 from valentijnscholten/fix/dedupe-batch-dup…
rossops Mar 30, 2026
fbedadd
Update versions in application files
Mar 30, 2026
f5fe4ba
Merge pull request #14607 from DefectDojo/release/2.56.4
rossops Mar 30, 2026
7085c53
Update versions in application files
Mar 30, 2026
075a1b2
Merge branch 'dev' into master-into-dev/2.56.4-2.57.0-dev
Maffooch Mar 30, 2026
37dd82c
Remove deprecated method get_non_special_endpoint_statuses from Endpo…
Maffooch Mar 30, 2026
95effe9
Refactor get_non_special_endpoint_statuses method for clarity and eff…
Maffooch Mar 30, 2026
9051f17
Remove unused import of Q from django.db.models in endpoint_manager.py
Maffooch Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
# "tests/import_scanner_test.py",
# "tests/zap.py",
]
os: [alpine, debian]
os: [debian]
v3_feature_locations: [true, false]
exclude:
# standalone create endpoint page is gone in v3
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/performance-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ jobs:
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: built-docker-image
pattern: built-docker-image-django-alpine-linux-amd64
pattern: built-docker-image-django-debian-linux-amd64
merge-multiple: true

- name: Load docker images
timeout-minutes: 10
run: |
docker load -i built-docker-image/django-alpine-linux-amd64_img
docker load -i built-docker-image/django-debian-linux-amd64_img
docker images

- name: Set unit-test mode
Expand All @@ -45,7 +45,7 @@ jobs:
-f docker/docker-compose.override.performance_tests_cicd.yml \
up -d --no-deps uwsgi
env:
DJANGO_VERSION: alpine
DJANGO_VERSION: debian

- name: Run performance tests (auto-update counts)
timeout-minutes: 15
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rest-framework-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
runs-on: ${{ inputs.platform == 'linux/arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
strategy:
matrix:
os: [alpine, debian]
os: [debian]

steps:
# Replace slashes so we can use this in filenames
Expand Down
17 changes: 17 additions & 0 deletions docs/content/get_started/open_source/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,23 @@ See instructions in [DOCKER.md](<https://github.com/DefectDojo/django-DefectDojo

[SaaS link](https://defectdojo.com/platform)

---
## **Docker Image Variants**
---

DefectDojo publishes Docker images in multiple variants:

| | AMD64 | ARM64 |
|---|---|---|
| **Debian** | ✅ Supported | ⚠️ Unit tested |
| **Alpine** | ⚠️ Community | ⚠️ Community |

**Debian on AMD64** is the officially supported and tested configuration. All CI tests (unit, integration, and performance) run against this combination.

**Debian on ARM64** is built and covered by unit tests in CI, but integration and performance tests are not run against it.

The **Alpine** variants are built and published but are not covered by any automated testing. Use them at your own risk.

---
## **Options for the brave (not officially supported)**
---
Expand Down
11 changes: 11 additions & 0 deletions docs/content/releases/os_upgrading/2.56.4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: 'Upgrading to DefectDojo Version 2.56.4'
toc_hide: true
weight: -20260319
description: JFrog Xray API Summary Artifact parser deduplication
---

## JFrog Xray API Summary Artifact parser deduplication
Deduplication of JFrog Xray API Summary Artifact findings is improved for newly imported findings.

To apply this on existing data, you need to recompute the hashes for this specific parser [see docs](https://docs.defectdojo.com/triage_findings/finding_deduplication/os__deduplication_tuning/#after-changing-deduplication-settings).
18 changes: 9 additions & 9 deletions docs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 33 additions & 2 deletions dojo/celery.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,44 @@ def apply_async(self, args=None, kwargs=None, **options):
return super().apply_async(args=args, kwargs=kwargs, **options)


class PgHistoryTask(DojoAsyncTask):
class PluggableContextTask(DojoAsyncTask):

"""
Extends DojoAsyncTask with pluggable context managers loaded from settings.

CELERY_TASK_CONTEXT_MANAGERS is a list of dotted paths to callables that
return context managers. Each task execution is wrapped in all of them.
This replaces the celery signal-based approach (task_prerun/task_postrun)
which does not work reliably with prefork worker pools.
"""

def __call__(self, *args, **kwargs):
from contextlib import ExitStack # noqa: PLC0415

from django.utils.module_loading import import_string # noqa: PLC0415

cm_paths = getattr(settings, "CELERY_TASK_CONTEXT_MANAGERS", [])
if not cm_paths:
return super().__call__(*args, **kwargs)

# ExitStack ensures all entered context managers are properly exited
# (via __exit__) even if the task raises an exception, so cleanup
# and batch dispatch always happen.
with ExitStack() as stack:
for path in cm_paths:
cm_factory = import_string(path)
stack.enter_context(cm_factory())
return super().__call__(*args, **kwargs)


class PgHistoryTask(PluggableContextTask):

"""
Custom Celery base task that automatically applies pghistory context.

This class inherits from DojoAsyncTask to provide:
This class inherits from PluggableContextTask to provide:
- User context injection and task tracking (from DojoAsyncTask)
- Pluggable context managers from settings (from PluggableContextTask)
- Automatic pghistory context application (from this class)

When a task is dispatched via dojo_dispatch_task or dojo_async_task, the current
Expand Down
1 change: 0 additions & 1 deletion dojo/db_migrations/max_migration.txt

This file was deleted.

Loading
Loading