-
Notifications
You must be signed in to change notification settings - Fork 543
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
fix: Backend testing, code coverage, logging, bugs, swaggerUI #1238
base: main
Are you sure you want to change the base?
Changes from all commits
f5ab3e2
c280cce
5da5f93
4625324
28ebe30
30dc548
9b0d0cf
65ec6ea
23335ba
dd01626
6c19358
feb66aa
b949907
69615d3
15d8e7b
aa99097
9552d88
02501ba
50e2b0e
40bd599
aac18cf
4318f54
8e79066
9854706
44867fb
bb9118f
321725f
e7bae48
551a543
e277ce5
3680ca0
57f8ec2
b7ad33d
28f6222
dc2da4a
a50d554
3179d60
e3799d5
78784cd
c5d831d
4827007
e2b126a
57eecdd
1625e25
7fb80d7
6335840
9088495
78fd507
4e7bdd0
7e96894
051aba8
52d3d30
9045f8a
79dd529
3acb669
0f930e0
9de33c4
d5eb491
ff6cd14
3933d6b
99cd042
25ac872
34333c8
6e730ab
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
3.11 |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,25 +1,48 @@ | ||||||||||||||||||||||||||||
HUGGINGFACE_TOKEN= | ||||||||||||||||||||||||||||
BUCKET_SPEECH_PROFILES= | ||||||||||||||||||||||||||||
BUCKET_BACKUPS= | ||||||||||||||||||||||||||||
# Google Cloud Authentication | ||||||||||||||||||||||||||||
GOOGLE_APPLICATION_CREDENTIALS=google-credentials.json | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# Google Cloud Storage Buckets | ||||||||||||||||||||||||||||
BUCKET_SPEECH_PROFILES= # Required: For storing user speech profiles | ||||||||||||||||||||||||||||
BUCKET_MEMORIES_RECORDINGS= # Required: For storing memory recordings | ||||||||||||||||||||||||||||
BUCKET_POSTPROCESSING= # Optional: For post-processing audio files | ||||||||||||||||||||||||||||
BUCKET_TEMPORAL_SYNC_LOCAL= # Optional: For temporary sync files | ||||||||||||||||||||||||||||
BUCKET_BACKUPS= # Optional: For backup storage | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# Security & Server Configuration | ||||||||||||||||||||||||||||
ADMIN_KEY= | ||||||||||||||||||||||||||||
SWAGGER_UI=false | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# Firebase Authentication for Swagger UI (Optional) | ||||||||||||||||||||||||||||
# Found in Firebase Console > Project Settings > General > Web API Key (Config) | ||||||||||||||||||||||||||||
FIREBASE_API_KEY=your-api-key | ||||||||||||||||||||||||||||
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com | ||||||||||||||||||||||||||||
FIREBASE_PROJECT_ID=your-project-id | ||||||||||||||||||||||||||||
FIREBASE_STORAGE_BUCKET=your-project.appspot.com | ||||||||||||||||||||||||||||
FIREBASE_MESSAGING_SENDER_ID=your-messaging-sender-id | ||||||||||||||||||||||||||||
FIREBASE_APP_ID=your-app-id | ||||||||||||||||||||||||||||
Comment on lines
+17
to
+22
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Enhance security by adding warning about Firebase credentials. The Firebase credentials are sensitive and should include a warning about their protection. -FIREBASE_API_KEY=your-api-key
-FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
-FIREBASE_PROJECT_ID=your-project-id
-FIREBASE_STORAGE_BUCKET=your-project.appspot.com
-FIREBASE_MESSAGING_SENDER_ID=your-messaging-sender-id
-FIREBASE_APP_ID=your-app-id
+# WARNING: These credentials should never be committed to version control
+FIREBASE_API_KEY=your-api-key # Found in Firebase Console > Project Settings
+FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com # Format: your-project.firebaseapp.com
+FIREBASE_PROJECT_ID=your-project-id # Example: my-app-123
+FIREBASE_STORAGE_BUCKET=your-project.appspot.com # Format: your-project.appspot.com
+FIREBASE_MESSAGING_SENDER_ID=your-messaging-sender-id # Example: 123456789012
+FIREBASE_APP_ID=your-app-id # Format: 1:123456789012:web:abcdef123456 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# OpenAI Authentication | ||||||||||||||||||||||||||||
OPENAI_API_KEY= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# GitHub Authentication Used for Package Updates | ||||||||||||||||||||||||||||
GITHUB_TOKEN= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# Hugging Face Authentication | ||||||||||||||||||||||||||||
HUGGINGFACE_TOKEN= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# Database Configuration | ||||||||||||||||||||||||||||
PINECONE_API_KEY= | ||||||||||||||||||||||||||||
PINECONE_INDEX_NAME= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
REDIS_DB_HOST= | ||||||||||||||||||||||||||||
REDIS_DB_PORT= | ||||||||||||||||||||||||||||
REDIS_DB_PASSWORD= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# Speech-to-Text Services | ||||||||||||||||||||||||||||
SONIOX_API_KEY= | ||||||||||||||||||||||||||||
DEEPGRAM_API_KEY= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
ADMIN_KEY= | ||||||||||||||||||||||||||||
OPENAI_API_KEY= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
GITHUB_TOKEN= | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
# Integration Services | ||||||||||||||||||||||||||||
WORKFLOW_API_KEY= | ||||||||||||||||||||||||||||
HUME_API_KEY= | ||||||||||||||||||||||||||||
HUME_CALLBACK_URL= | ||||||||||||||||||||||||||||
Comment on lines
+1
to
47
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Based on the results, I can generate the final response as there are clear discrepancies between the .env.template and actual environment variable usage in the codebase. Several environment variables are used in the codebase but missing from the template The following environment variables are used but not documented in .env.template:
Additionally, some bucket names in the template don't match the code:
🔗 Analysis chainVerify the completeness of environment variables. Let's ensure all required environment variables are properly documented in the README and that there are no discrepancies between the template and actual usage in the codebase. 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Description: Check for environment variable usage in the codebase that might be missing from the template
# Search for os.getenv and os.environ usage in Python files
echo "Checking for environment variable usage in Python files..."
rg -t py "(os\.getenv|os\.environ\.get)\(['\"](\w+)['\"]" -g '!tests/*' --no-filename | sort -u
# Search for process.env usage in JavaScript/TypeScript files (if any exist in the backend)
echo "Checking for environment variable usage in JS/TS files..."
rg -t js -t ts "process\.env\.(\w+)" --no-filename | sort -u
# Check if README mentions all environment variables
echo "Checking README for environment variable documentation..."
rg -t md "ENV|environment|variable" backend/README.md
Length of output: 5077 |
||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
HOSTED_PUSHER_API_URL= |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
3.11 |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,157 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Variables | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PYTHON = python3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
VENV = .venv | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PIP = $(VENV)/bin/pip | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PYTHON_VENV = $(VENV)/bin/python | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PYTEST = $(VENV)/bin/pytest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
UVICORN = $(VENV)/bin/uvicorn | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FLAKE8 = $(VENV)/bin/flake8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BLACK = $(VENV)/bin/black | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BANDIT = $(VENV)/bin/bandit | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SAFETY = $(VENV)/bin/safety | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MYPY = $(VENV)/bin/mypy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Environment Setup | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: setup | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
setup: $(VENV)/bin/activate install-deps install-test-deps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(VENV)/bin/activate: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PYTHON) -m venv $(VENV) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PIP) install --upgrade pip | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: install-deps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
install-deps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PIP) install -r requirements.txt | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: install-test-deps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
install-test-deps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PIP) install pytest pytest-cov pytest-asyncio httpx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Development | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: run | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
run: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENABLE_SWAGGER=true $(UVICORN) main:app --reload --env-file .env | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: clean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
clean: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type d -name "__pycache__" -exec rm -rf {} + | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type f -name "*.pyc" -delete | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type f -name "*.pyo" -delete | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type f -name "*.pyd" -delete | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type f -name ".coverage" -delete | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type d -name "*.egg-info" -exec rm -rf {} + | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type d -name "*.egg" -exec rm -rf {} + | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type d -name ".pytest_cache" -exec rm -rf {} + | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type d -name ".mypy_cache" -exec rm -rf {} + | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find . -type f -name ".DS_Store" -delete | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm -rf build/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm -rf dist/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm -rf .coverage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm -rf htmlcov/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm -rf .pytest_cache/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm -rf .mypy_cache/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Testing | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
test: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PYTHONPATH=. pytest tests/ -v | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: test-security | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
test-security: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PYTEST) tests/security/ -v | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: coverage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
coverage: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PYTEST) --cov=. tests/ --cov-report=html | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+54
to
+66
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Enhance test execution and coverage configuration. Consider adding parallel test execution and coverage thresholds: +# Test Configuration
+COVERAGE_MIN ?= 80
+PYTEST_WORKERS ?= auto
+
# Testing
.PHONY: test
test:
- PYTHONPATH=. pytest tests/ -v
+ PYTHONPATH=. $(PYTEST) tests/ -v -n $(PYTEST_WORKERS)
.PHONY: coverage
coverage:
- $(PYTEST) --cov=. tests/ --cov-report=html
+ $(PYTEST) --cov=. tests/ --cov-report=html --cov-report=term-missing --cov-fail-under=$(COVERAGE_MIN) 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Code Quality | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: lint | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lint: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(FLAKE8) . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(BLACK) . --check | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(MYPY) . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: format | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
format: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(BLACK) . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Security Checks | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: security | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
security: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(BANDIT) -r . -x tests/,$(VENV)/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(SAFETY) check | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: security-audit | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
security-audit: security test-security | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo "Running comprehensive security audit..." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo "Checking for sensitive data in git history..." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@git log -p | grep -i "password\|secret\|key\|token" || true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+67
to
+89
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Improve security audit implementation. The security audit implementation has potential issues:
.PHONY: security-audit
security-audit: security test-security
@echo "Running comprehensive security audit..."
- @echo "Checking for sensitive data in git history..."
- @git log -p | grep -i "password\|secret\|key\|token" || true
+ @echo "Checking for sensitive data patterns..."
+ @$(BANDIT) -r . -ll --confidence-level high
+ @$(SAFETY) check --full-report
+ @echo "Note: For git history checks, use dedicated tools like 'gitleaks' offline" 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Dependencies | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: deps-update | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deps-update: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PIP) install -U pip | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PIP) install -U -r requirements.txt | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: deps-check | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deps-check: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(SAFETY) check | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$(PIP) list --outdated | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+90
to
+100
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Enhance dependency management safety. Consider adding requirements lock file handling and vulnerability database updates: # Dependencies
+REQUIREMENTS_IN = requirements.in
+REQUIREMENTS_TXT = requirements.txt
+
.PHONY: deps-update
deps-update:
+ $(PIP) install -U pip-tools
+ $(PIP) install -U safety
+ safety check --update-db
- $(PIP) install -U pip
- $(PIP) install -U -r requirements.txt
+ pip-compile --upgrade $(REQUIREMENTS_IN)
+ $(PIP) install -r $(REQUIREMENTS_TXT)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Docker | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: docker-build | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docker-build: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docker build -t backend . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: docker-run | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docker-run: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docker run -p 8000:8000 --env-file .env backend | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Deployment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: deploy-check | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deploy-check: lint test security | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo "Pre-deployment checks passed!" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: deploy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deploy: deploy-check | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo "Deploying to Cloud Run..." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gcloud run deploy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+101
to
+119
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Enhance Docker and deployment configuration. The Docker and deployment targets could be more configurable: +# Deployment Configuration
+DOCKER_TAG ?= latest
+DEPLOY_ENV ?= staging
+GCP_REGION ?= us-central1
+GCP_PROJECT ?= $(shell gcloud config get-value project)
+
# Docker
.PHONY: docker-build
docker-build:
- docker build -t backend .
+ docker build -t backend:$(DOCKER_TAG) \
+ --build-arg BUILD_ENV=$(DEPLOY_ENV) \
+ --build-arg VERSION=$$(git describe --tags --always) \
+ .
.PHONY: deploy
deploy: deploy-check
@echo "Deploying to Cloud Run..."
- gcloud run deploy
+ gcloud run deploy backend \
+ --image backend:$(DOCKER_TAG) \
+ --platform managed \
+ --region $(GCP_REGION) \
+ --project $(GCP_PROJECT) \
+ --set-env-vars "DEPLOY_ENV=$(DEPLOY_ENV)" 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Environment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: env-check | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
env-check: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@if [ ! -f .env ]; then \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "Error: .env file not found"; \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "Creating from template..."; \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cp .env.template .env; \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo "Checking required environment variables..." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@grep -v '^#' .env.template | grep '=' | cut -d '=' -f1 | while read -r var; do \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ! grep -q "^$$var=" .env; then \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "Warning: $$var is not set in .env file"; \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fi \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
done | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Help | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.PHONY: help | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
help: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo "Available commands:" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " setup - Create virtual environment and install dependencies" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " run - Run development server" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " clean - Remove all build, test, and coverage files" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " test - Run all tests" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " test-security - Run security tests" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " coverage - Run tests with coverage report" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " lint - Run code quality checks" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " format - Format code with Black" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " security - Run security checks" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " security-audit - Run comprehensive security audit" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " deps-update - Update dependencies" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " deps-check - Check for outdated dependencies" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " docker-build - Build Docker image" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " docker-run - Run Docker container" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " deploy-check - Run pre-deployment checks" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " deploy - Deploy to Cloud Run" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@echo " env-check - Check environment variables" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.DEFAULT_GOAL := help |
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.
Add security recommendations for ADMIN_KEY.
The ADMIN_KEY is a sensitive security parameter but lacks guidance on requirements.
📝 Committable suggestion