Skip to content

Complete DevSecOps workflow with Trivy security scanning#1

Draft
FredericRagheb with Copilot wants to merge 2 commits into
masterfrom
copilot/complete-devsecops-workflow
Draft

Complete DevSecOps workflow with Trivy security scanning#1
FredericRagheb with Copilot wants to merge 2 commits into
masterfrom
copilot/complete-devsecops-workflow

Conversation

Copilot AI commented Dec 24, 2025

Copy link
Copy Markdown

The existing DevSecOps workflow had incomplete Docker commands and missing checkout steps, preventing proper security scanning of dependencies and container images.

Changes

Created Dockerfile

  • Python 3.9-slim base image with Flask application setup
  • Exposes port 5000 for the web server

Fixed Dependances job

  • Added actions/checkout@v4 step
  • Replaced broken Docker command with aquasecurity/trivy-action@0.33.1
  • Configured filesystem scan targeting requirements.txt with HIGH/CRITICAL severity filtering

Fixed Dockerfile job

  • Added actions/checkout@v4 step
  • Added Docker image build step: docker build -t imgvulne:1.1 .
  • Replaced truncated Docker command (broken | jq pipeline) with aquasecurity/trivy-action@0.33.1
  • Configured image scan with HIGH/CRITICAL severity filtering

Workflow behavior

Dependances (scan requirements.txt)
  ↓ success only
Dockerfile (build & scan image)
  ↓ success only  
Deploy (deployment message)

Both security scans exit with code 1 on vulnerabilities, blocking the pipeline at the point of failure.

Original prompt

Objectif

Compléter le workflow DevSecOps pour implémenter un pipeline de sécurité complet avec Trivy.

Tâches à réaliser

1. Compléter le job Dépendances

Modifier le job Dependances dans .github/workflows/devsecops.yml pour qu'il contrôle correctement le fichier requirements.txt :

  • Ajouter actions/checkout@v4 pour récupérer le code source
  • Remplacer la commande Docker incomplète par l'action officielle aquasecurity/trivy-action@0.33.1
  • Configurer le scan avec :
    • scan-type: 'fs' (scan du système de fichiers)
    • scan-ref: 'requirements.txt' (cible le fichier requirements.txt)
    • severity: 'HIGH,CRITICAL' (filtre sur les vulnérabilités critiques)
    • format: 'table' (format de sortie lisible)
    • exit-code: '1' (le job échoue si des vulnérabilités sont trouvées)

2. Compléter le job Dockerfile

Modifier le job Dockerfile dans .github/workflows/devsecops.yml pour qu'il contrôle l'image Docker :

  • Ajouter actions/checkout@v4 pour récupérer le code source
  • Ajouter une étape pour construire l'image Docker : docker build -t imgvulne:1.1 .
  • Remplacer la commande Docker incomplète (avec le | jq tronqué) par l'action officielle aquasecurity/trivy-action@0.33.1
  • Configurer le scan avec :
    • scan-type: 'image' (scan d'une image Docker)
    • image-ref: 'imgvulne:1.1' (référence à l'image construite)
    • severity: 'HIGH,CRITICAL' (filtre sur les vulnérabilités critiques)
    • format: 'table' (format de sortie lisible)
    • exit-code: '1' (le job échoue si des vulnérabilités sont trouvées)

3. Créer le Dockerfile

Créer un fichier Dockerfile à la racine du repository avec le contenu suivant :

FROM python:3.9-slim

WORKDIR /app

# Copier le fichier requirements.txt
COPY requirements.txt .

# Installer les dépendances
RUN pip install --no-cache-dir -r requirements.txt

# Copier le reste de l'application
COPY . .

# Exposer le port Flask
EXPOSE 5000

# Variable d'environnement pour Flask
ENV FLASK_APP=app.py

# Commande de démarrage
CMD ["flask", "run", "--host=0.0.0.0"]

Fichier actuel à modifier

Le fichier .github/workflows/devsecops.yml actuel contient :

  • Un job Dependances avec une commande Docker incomplète
  • Un job Dockerfile avec une commande cassée (ligne tronquée avec jq)
  • Un job Deploy qui est déjà correct

Contraintes

  • Utiliser l'action officielle aquasecurity/trivy-action@0.33.1 au lieu de docker run
  • Le job Dockerfile doit s'exécuter uniquement si le job Dependances réussit (la directive needs: Dependances est déjà présente)
  • Le job Deploy reste inchangé

Résultat attendu

Un workflow DevSecOps complet qui :

  1. Scanne les dépendances Python dans requirements.txt
  2. Si le scan réussit, construit l'image Docker et la scanne
  3. Si tout est OK, affiche le message de déploiement

This pull request was created from Copilot chat.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Co-authored-by: FredericRagheb <104088078+FredericRagheb@users.noreply.github.com>
Copilot AI changed the title [WIP] Complete DevSecOps workflow for security pipeline with Trivy Complete DevSecOps workflow with Trivy security scanning Dec 24, 2025
Copilot AI requested a review from FredericRagheb December 24, 2025 14:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants