Skip to content

Commit 0663fc6

Browse files
committed
Merge branch 'main' into 446-vcio-v3-advisories
Signed-off-by: tdruez <tdruez@aboutcode.org>
2 parents 9686cfa + 97efa59 commit 0663fc6

24 files changed

Lines changed: 214 additions & 116 deletions

File tree

.devcontainer/demo/devcontainer.json

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
"service": "web",
55
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
66
"overrideCommand": false,
7+
"hostRequirements": {
8+
"cpus": 4
9+
},
710
"forwardPorts": [8000],
811
"portsAttributes": {
912
"8000": {
@@ -16,11 +19,56 @@
1619
"openFiles": []
1720
},
1821
"vscode": {
22+
"extensions": [],
1923
"settings": {
2024
"chat.disableAIFeatures": true,
21-
"workbench.startupEditor": "none",
25+
"telemetry.telemetryLevel": "off",
2226
"workbench.tips.enabled": false,
23-
"git.openRepositoryInParentFolders": "never"
27+
"workbench.startupEditor": "none",
28+
"workbench.editor.enablePreview": false,
29+
"security.workspace.trust.enabled": false,
30+
"extensions.autoCheckUpdates": false,
31+
"extensions.ignoreRecommendations": true,
32+
"git.enabled": false,
33+
"git.autorefresh": false,
34+
"git.decorations.enabled": false,
35+
"scm.diffDecorations": "none",
36+
"editor.minimap.enabled": false,
37+
"editor.quickSuggestions": {
38+
"other": "off",
39+
"comments": "off",
40+
"strings": "off"
41+
},
42+
"editor.suggestOnTriggerCharacters": false,
43+
"editor.wordBasedSuggestions": "off",
44+
"editor.parameterHints.enabled": false,
45+
"editor.codeLens": false,
46+
"editor.lightbulb.enabled": "off",
47+
"editor.inlayHints.enabled": "off",
48+
"editor.occurrencesHighlight": "off",
49+
"editor.selectionHighlight": false,
50+
"editor.renderLineHighlight": "none",
51+
"editor.renderWhitespace": "none",
52+
"editor.formatOnSave": false,
53+
"editor.accessibilitySupport": "off",
54+
"breadcrumbs.enabled": false,
55+
"terminal.integrated.enablePersistentSessions": false,
56+
"terminal.integrated.gpuAcceleration": "off",
57+
"files.watcherExclude": {
58+
"**/.git/**": true,
59+
"**/data/**": true,
60+
"**/static/**": true,
61+
"**/media/**": true,
62+
"**/thirdparty/**": true,
63+
"**/*.dist": true
64+
},
65+
"search.exclude": {
66+
"**/.git": true,
67+
"**/data": true,
68+
"**/static": true,
69+
"**/media": true,
70+
"**/thirdparty": true
71+
}
2472
}
2573
}
2674
}

.github/workflows/check-code-and-docs-validation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Run unit tests
1+
name: Check code and docs validation
22

33
on:
44
workflow_dispatch:

.github/workflows/run-unit-tests-docker.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,10 @@ jobs:
2222
- name: Generate the .env file and the SECRET_KEY
2323
run: make envfile
2424

25+
- name: Build Docker image
26+
run: docker compose -f compose.yml -f compose.build.yml build
27+
2528
- name: Run tests
26-
run: docker compose run web python ./manage.py test --verbosity=2 --noinput
29+
run: |
30+
docker compose -f compose.yml -f compose.build.yml run web \
31+
python ./manage.py test --verbosity=2 --noinput --parallel auto

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
Release notes
22
=============
33

4+
### Version 5.8.1
5+
6+
* fix: improve performances and logging for SCIO importer (#546)
7+
* feat: modernize Docker Compose setup and simplify installation docs (#544)
8+
49
### Version 5.8.0
510

611
* feat: [five-c] Compliance dashboard export/report by @tdruez in https://github.com/aboutcode-org/dejacode/pull/522

Makefile

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ superuser:
4949
${MANAGE} createsuperuser
5050

5151
########################################################################################
52-
# Utilities
52+
# Linters / docs
5353
########################################################################################
5454

5555
DOCS_LOCATION=./docs
@@ -78,36 +78,12 @@ docs:
7878
uvx --from sphinx==9.1.0 --with furo==2025.12.19 sphinx-build -b html ${DOCS_LOCATION} ${DOCS_LOCATION}/_build/html/
7979

8080
########################################################################################
81-
82-
VENV_LOCATION=.venv
83-
ACTIVATE?=. ${VENV_LOCATION}/bin/activate;
84-
#MANAGE=${VENV_LOCATION}/bin/python manage.py
85-
# Do not depend on Python to generate the SECRET_KEY
86-
GET_SECRET_KEY=`head -c50 /dev/urandom | base64 | head -c50`
87-
# Customize with `$ make envfile ENV_FILE=/etc/dejacode/.env`
88-
ENV_FILE=.env
89-
DOCKER_COMPOSE=docker compose -f docker-compose.yml
90-
DOCKER_EXEC=${DOCKER_COMPOSE} exec
91-
DB_NAME=dejacode_db
92-
DB_USERNAME=dejacode
93-
DB_PASSWORD=dejacode
94-
DB_CONTAINER_NAME=db
95-
DB_INIT_FILE=./data/postgresql/initdb.sql.gz
96-
POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8
97-
TIMESTAMP=$(shell date +"%Y-%m-%d_%H%M")
98-
99-
conf: virtualenv
100-
@echo "-> Install dependencies"
101-
uv sync --frozen
102-
@echo "-> Create the var/ directory"
103-
@mkdir -p var
104-
105-
dev: virtualenv
106-
@echo "-> Configure and install development dependencies"
107-
uv sync --frozen --extra dev
81+
# Utilities
82+
########################################################################################
10883

10984
outdated:
11085
@echo "-> Check for outdated packages (with 7 days cooldown)"
86+
uv sync --frozen --quiet
11187
uv pip list --outdated \
11288
--no-config \
11389
--index-url https://pypi.org/simple \
@@ -121,25 +97,61 @@ upgrade:
12197
exit 1; \
12298
fi
12399
@echo "-> Download $(PACKAGE) wheels for Linux x86_64"
124-
pip download $(PACKAGE) \
100+
uvx pip download $(PACKAGE) \
125101
--only-binary=:all: \
126102
--platform manylinux_2_28_x86_64 \
127103
--platform manylinux_2_17_x86_64 \
128104
--python-version 3.14 \
129105
--dest ./thirdparty/dist/
130106
@echo "-> Download $(PACKAGE) wheels for macOS ARM64"
131-
pip download $(PACKAGE) \
107+
uvx pip download $(PACKAGE) \
132108
--only-binary=:all: \
133109
--platform macosx_11_0_arm64 \
134110
--python-version 3.14 \
135111
--dest ./thirdparty/dist/
136112
@echo "-> Update pyproject.toml and uv.lock"
137-
uv add $(PACKAGE)
113+
uvx uv add $(PACKAGE)
138114

139115
lock:
140116
@echo "-> Regenerate uv.lock from local wheels"
141117
uv lock
142118

119+
clean:
120+
@echo "-> Clean the Python env"
121+
rm -rf .venv/ .*_cache/ *.egg-info/ build/ dist/
122+
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
123+
124+
########################################################################################
125+
# Local venv commands (legacy)
126+
########################################################################################
127+
128+
VENV_LOCATION=.venv
129+
ACTIVATE?=. ${VENV_LOCATION}/bin/activate;
130+
#MANAGE=${VENV_LOCATION}/bin/python manage.py
131+
# Do not depend on Python to generate the SECRET_KEY
132+
GET_SECRET_KEY=`head -c50 /dev/urandom | base64 | head -c50`
133+
# Customize with `$ make envfile ENV_FILE=/etc/dejacode/.env`
134+
ENV_FILE=.env
135+
DOCKER_COMPOSE=docker compose -f docker-compose.yml
136+
DOCKER_EXEC=${DOCKER_COMPOSE} exec
137+
DB_NAME=dejacode_db
138+
DB_USERNAME=dejacode
139+
DB_PASSWORD=dejacode
140+
DB_CONTAINER_NAME=db
141+
DB_INIT_FILE=./data/postgresql/initdb.sql.gz
142+
POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8
143+
TIMESTAMP=$(shell date +"%Y-%m-%d_%H%M")
144+
145+
conf: virtualenv
146+
@echo "-> Install dependencies"
147+
uv sync --frozen
148+
@echo "-> Create the var/ directory"
149+
@mkdir -p var
150+
151+
dev: virtualenv
152+
@echo "-> Configure and install development dependencies"
153+
uv sync --frozen --extra dev
154+
143155
envfile:
144156
@echo "-> Create the .env file and generate a secret key"
145157
@if test -f ${ENV_FILE}; then echo "${ENV_FILE} file exists already"; exit 1; fi
@@ -150,15 +162,6 @@ envfile_dev: envfile
150162
@echo "-> Update the .env file for development"
151163
@echo DATABASE_PASSWORD=\"dejacode\" >> ${ENV_FILE}
152164

153-
check-deploy:
154-
@echo "-> Check Django deployment settings"
155-
${MANAGE} check --deploy
156-
157-
clean:
158-
@echo "-> Clean the Python env"
159-
rm -rf .venv/ .*_cache/ *.egg-info/ build/ dist/
160-
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
161-
162165
initdb:
163166
@echo "-> Stop Docker services that access the database"
164167
${DOCKER_COMPOSE} stop web worker
@@ -183,4 +186,4 @@ psql:
183186
log:
184187
${DOCKER_COMPOSE} logs --tail="100" ${SERVICE}
185188

186-
.PHONY: virtualenv conf dev lock upgrade envfile envfile_dev check outdated doc8 valid check-deploy clean initdb postgresdb postgresdb_clean migrate run test docs build psql bash shell log superuser
189+
.PHONY: virtualenv conf dev lock upgrade envfile envfile_dev check outdated doc8 valid clean initdb postgresdb postgresdb_clean migrate run test docs build psql bash shell log superuser

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ using GitHub Codespaces. The badge below launches a ready-to-use demo instance:
2323
the application starts automatically, with a demo account already created for you.
2424

2525
.. image:: https://github.com/codespaces/badge.svg
26-
:target: https://github.com/codespaces/new/aboutcode-org/dejacode?ref=main&devcontainer_path=.devcontainer%2Fdemo%2Fdevcontainer.json&quickstart=true
26+
:target: https://github.com/codespaces/new/aboutcode-org/dejacode?ref=main&devcontainer_path=.devcontainer%2Fdemo%2Fdevcontainer.json&machine=standardLinux32gb&quickstart=true
2727
:alt: Open in GitHub Codespaces
2828

2929
#. **Click** the badge above and **confirm** the creation of the Codespace.

component_catalog/tests/test_importers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -601,10 +601,10 @@ def test_importers_view_num_queries_view(self):
601601
with self.assertMaxQueries(9):
602602
self.client.get(reverse("admin:component_catalog_package_import"))
603603

604-
with self.assertNumQueries(4):
604+
with self.assertMaxQueries(5):
605605
self.client.get(reverse("admin:organization_owner_import"))
606606

607-
with self.assertMaxQueries(10):
607+
with self.assertMaxQueries(11):
608608
self.client.get(reverse("admin:component_catalog_component_import"))
609609

610610
def test_component_import_keywords(self):

component_catalog/tests/test_views.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
from dje.models import ExternalReference
5353
from dje.models import ExternalSource
5454
from dje.models import History
55+
from dje.tests import MaxQueryMixin
5556
from dje.tests import add_perm
5657
from dje.tests import add_perms
5758
from dje.tests import create_superuser
@@ -77,7 +78,7 @@
7778
User = get_user_model()
7879

7980

80-
class ComponentUserViewsTestCase(TestCase):
81+
class ComponentUserViewsTestCase(MaxQueryMixin, TestCase):
8182
def setUp(self):
8283
self.nexb_dataspace = Dataspace.objects.create(name="nexB")
8384
self.nexb_user = User.objects.create_superuser(
@@ -980,7 +981,7 @@ def test_component_catalog_details_view_num_queries(self):
980981
History.log_change(self.basic_user, self.component1, "Changed version.")
981982
History.log_change(self.nexb_user, self.component1, "Changed notes.")
982983

983-
with self.assertNumQueries(32):
984+
with self.assertMaxQueries(33):
984985
self.client.get(url)
985986

986987
def test_component_catalog_details_view_package_tab_fields_visibility(self):
@@ -1095,7 +1096,7 @@ def test_component_catalog_component_create_ajax_view(self):
10951096
self.assertContains(response, expected, html=True)
10961097

10971098

1098-
class PackageUserViewsTestCase(TestCase):
1099+
class PackageUserViewsTestCase(MaxQueryMixin, TestCase):
10991100
testfiles_location = join(dirname(__file__), "testfiles")
11001101

11011102
def setUp(self):
@@ -1133,7 +1134,7 @@ def setUp(self):
11331134

11341135
def test_package_list_view_num_queries(self):
11351136
self.client.login(username=self.super_user.username, password="secret")
1136-
with self.assertNumQueries(16):
1137+
with self.assertMaxQueries(17):
11371138
self.client.get(reverse("component_catalog:package_list"))
11381139

11391140
def test_package_list_view_pagination(self):
@@ -1271,7 +1272,7 @@ def test_package_details_view_num_queries(self):
12711272
)
12721273

12731274
self.client.login(username=self.super_user.username, password="secret")
1274-
with self.assertNumQueries(30):
1275+
with self.assertMaxQueries(31):
12751276
self.client.get(self.package1.get_absolute_url())
12761277

12771278
def test_package_details_view_content(self):
@@ -3766,7 +3767,7 @@ def test_component_catalog_package_update_view_save_as_with_collect_data(
37663767
self.assertEqual(1, len(mock_collect_data.mock_calls))
37673768

37683769

3769-
class ComponentListViewTestCase(TestCase):
3770+
class ComponentListViewTestCase(MaxQueryMixin, TestCase):
37703771
def setUp(self):
37713772
self.dataspace = Dataspace.objects.create(
37723773
name="nexB",
@@ -3856,7 +3857,7 @@ def setUp(self):
38563857

38573858
def test_component_catalog_list_view_num_queries(self):
38583859
self.client.login(username="nexb_user", password="t3st")
3859-
with self.assertNumQueries(17):
3860+
with self.assertMaxQueries(18):
38603861
self.client.get(reverse("component_catalog:component_list"))
38613862

38623863
def test_component_catalog_list_view_default(self):

compose.demo.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ services:
1616
interval: 10s
1717
timeout: 5s
1818
retries: 5
19+
start_period: 30s
20+
start_interval: 1s
1921

2022
web:
2123
image: ghcr.io/aboutcode-org/dejacode:latest

compose.dev.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ services:
2222
web:
2323
build: .
2424
image: dejacode:dev
25-
env_file:
26-
- .env
2725
environment:
2826
- DATABASE_HOST=db
2927
- DATABASE_PASSWORD=dejacode
@@ -37,6 +35,7 @@ services:
3735
ports:
3836
- "8000:8000"
3937
volumes:
38+
- ./.env:/opt/dejacode/.env
4039
- ./component_catalog:/opt/dejacode/component_catalog
4140
- ./dejacode:/opt/dejacode/dejacode
4241
- ./dejacode_toolkit:/opt/dejacode/dejacode_toolkit

0 commit comments

Comments
 (0)