2 Commits

Author SHA1 Message Date
8befec4c5d [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/astral-sh/uv-pre-commit: 0.7.5 → 0.7.12](https://github.com/astral-sh/uv-pre-commit/compare/0.7.5...0.7.12)
- [github.com/astral-sh/ruff-pre-commit: v0.11.10 → v0.11.13](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.10...v0.11.13)
2025-06-09 20:32:21 +00:00
c049061c7b Enhances the ship with security and automation!
Some checks failed
Bandit / bandit (push) Has been cancelled
Codacy Security Scan / Codacy Security Scan (push) Has been cancelled
Adds Dependabot for automatic dependency updates to keep the vessel sea-worthy and updates pre-commit hooks.

Integrates Bandit and Codacy for automated security scans, ensuring a well-defended treasure hold.

Updates devcontainer settings for smoother sailing in the development environment.

Now use foreman for development, to be able to run all processes in development.

Let's keep this ship safe and sound, savvy?
2025-05-19 01:00:22 +02:00
6 changed files with 161 additions and 47 deletions

View File

@ -1,5 +1,7 @@
#!/usr/bin/env bash
export UV_LINK_MODE=copy;
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y;
@ -72,6 +74,7 @@ fi
if [ -f ~/.cache/oh-my-posh-completion.bash ]; then
source ~/.cache/oh-my-posh-completion.bash
fi
export UV_LINK_MODE=copy;
EOF

View File

@ -6,17 +6,17 @@
version: 2
updates:
- package-ecosystem: devcontainers
directory: /
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly
day: tuesday
time: 03:00
timezone: Europe/Amsterdam
- package-ecosystem: uv
directory: /
interval: "weekly"
day: "tuesday"
time: "03:00"
timezone: "Europe/Amsterdam"
- package-ecosystem: "uv"
directory: "/"
schedule:
interval: weekly
day: tuesday
time: 03:00
timezone: Europe/Amsterdam
interval: "weekly"
day: "tuesday"
time: "03:00"
timezone: "Europe/Amsterdam"

51
.github/workflows/bandit.yml vendored Normal file
View File

@ -0,0 +1,51 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# Bandit is a security linter designed to find common security issues in Python code.
# This action will run Bandit on your codebase.
# The results of the scan will be found under the Security tab of your repository.
# https://github.com/marketplace/actions/bandit-scan is ISC licensed, by abirismyname
# https://pypi.org/project/bandit/ is Apache v2.0 licensed, by PyCQA
name: Bandit
on:
push:
branches: ["master"]
pull_request:
# The branches below must be a subset of the branches above
branches: ["master"]
schedule:
- cron: "37 3 * * 3"
jobs:
bandit:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Bandit Scan
uses: shundor/python-bandit-scan@ab1d87dfccc5a0ffab88be3aaac6ffe35c10d6cd
with: # optional arguments
# exit with 0, even with results found
exit_zero: true # optional, default is DEFAULT
# Github token of the repository (automatically created by Github)
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information.
# File or directory to run bandit on
# path: # optional, default is .
# Report only issues of a given severity level or higher. Can be LOW, MEDIUM or HIGH. Default is UNDEFINED (everything)
# level: # optional, default is UNDEFINED
# Report only issues of a given confidence level or higher. Can be LOW, MEDIUM or HIGH. Default is UNDEFINED (everything)
# confidence: # optional, default is UNDEFINED
# comma-separated list of paths (glob patterns supported) to exclude from scan (note that these are in addition to the excluded paths provided in the config file) (default: .svn,CVS,.bzr,.hg,.git,__pycache__,.tox,.eggs,*.egg)
# excluded_paths: # optional, default is DEFAULT
# comma-separated list of test IDs to skip
# skips: # optional, default is DEFAULT
# path to a .bandit file that supplies command line arguments
# ini_path: # optional, default is DEFAULT

61
.github/workflows/codacy.yml vendored Normal file
View File

@ -0,0 +1,61 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow checks out code, performs a Codacy security scan
# and integrates the results with the
# GitHub Advanced Security code scanning feature. For more information on
# the Codacy security scan action usage and parameters, see
# https://github.com/codacy/codacy-analysis-cli-action.
# For more information on Codacy Analysis CLI in general, see
# https://github.com/codacy/codacy-analysis-cli.
name: Codacy Security Scan
on:
push:
branches: ["master"]
pull_request:
# The branches below must be a subset of the branches above
branches: ["master"]
schedule:
- cron: "36 10 * * 3"
permissions:
contents: read
jobs:
codacy-security-scan:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
name: Codacy Security Scan
runs-on: ubuntu-latest
steps:
# Checkout the repository to the GitHub Actions runner
- name: Checkout code
uses: actions/checkout@v4
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
- name: Run Codacy Analysis CLI
uses: codacy/codacy-analysis-cli-action@d840f886c4bd4edc059706d09c6a1586111c540b
with:
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository
# You can also omit the token and run the tools that support default configurations
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
verbose: true
output: results.sarif
format: sarif
# Adjust severity of non-security issues
gh-code-scanning-compat: true
# Force 0 exit code to allow SARIF file generation
# This will handover control about PR rejection to the GitHub side
max-allowed-issues: 2147483647
# Upload the SARIF file generated in the previous step
- name: Upload SARIF results file
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif

View File

@ -1,8 +1,15 @@
default_install_hook_types:
- pre-commit
- post-checkout
- post-merge
- post-rewrite
# default_install_hook_types:
# - pre-commit
# - post-checkout
# - post-merge
# - post-rewrite
ci:
skip: [django-check, django-check-migrations]
default_language_version:
node: 22.15.1
python: python3.13
repos:
- repo: https://github.com/adamchainz/django-upgrade
@ -12,7 +19,7 @@ repos:
# uv hooks for dependency management
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.7.5
rev: 0.7.12
hooks:
- id: uv-export
@ -34,28 +41,21 @@ repos:
- id: mixed-line-ending
args: [--fix=lf]
# - repo: https://github.com/psf/black
# rev: 22.10.0
# hooks:
# - id: black
# # HTML/Django template linting
# - repo: https://github.com/rtts/djhtml
# rev: 3.0.7
# hooks:
# - id: djhtml
# entry: djhtml --tabwidth 4
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.1.0
- repo: local
hooks:
- id: prettier
types_or: [javascript, jsx, ts, tsx, css, scss, html, json, yaml, markdown]
- id: prettier-jinja
name: Prettier Jinja
language: node
additional_dependencies:
- prettier
- prettier-plugin-jinja-template
# types_or: [javascript, jsx, ts, tsx, css, scss, json, yaml, markdown]
# exclude: '.*\.html$'
types_or: [html, jinja]
entry: npx prettier --plugin=prettier-plugin-jinja-template --parser=jinja-template --write
- id: prettier-all
name: Prettier All
language: node
types_or: [javascript, jsx, ts, tsx, css, scss, json, yaml, markdown]
entry: npx prettier --write
- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.18.1
@ -65,7 +65,7 @@ repos:
# Ruff for linting and formatting
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.10
rev: v0.11.13
hooks:
- id: ruff
args: [--fix]
@ -77,17 +77,19 @@ repos:
- id: django-check
name: Django Check
entry: uv run python dashboard_project/manage.py check
language: system
language: python
pass_filenames: false
types: [python]
always_run: true
additional_dependencies: [uv]
- id: django-check-migrations
name: Django Check Migrations
entry: uv run python dashboard_project/manage.py makemigrations --check --dry-run
language: system
language: python
pass_filenames: false
types: [python]
additional_dependencies: [uv]
# Security checks
- repo: https://github.com/pycqa/bandit
@ -95,7 +97,7 @@ repos:
hooks:
- id: bandit
args: [-c, pyproject.toml, -r, dashboard_project]
additional_dependencies: ["bandit[toml]"]
# additional_dependencies: ["bandit[toml]"]
# # Type checking
# - repo: https://github.com/pre-commit/mirrors-mypy

View File

@ -104,10 +104,10 @@ run-redis:
# Start all development services (web, redis, celery, celery-beat)
run-all:
make run-redis & \
make run & \
make celery & \
make celery-beat
foreman start
procfile:
foreman start
# Test Celery task
test-celery:
@ -122,6 +122,3 @@ init-data-integration:
# Setup development environment
setup-dev: venv install-dev migrate create_default_datasource
@echo "Development environment setup complete"
procfile:
foreman start