Files
platform-templates/devsecops-snippets/gitleaks-step/action.yml
T

53 lines
1.7 KiB
YAML

name: "Gitleaks — escaneo de secretos"
description: >-
Escanea el árbol de archivos (no el historial de git) buscando
secretos commiteados. Bloquea (exit 1) si encuentra algo. Extraído
literal de los 3 pipelines reales del lab (frontend, commerce-backend,
docs-portal) — idéntico en los tres salvo el "source".
inputs:
source:
description: "Directorio a escanear (ej. workloads/mi-app)."
required: true
version:
description: "Versión de Gitleaks a instalar."
required: false
default: "8.21.2"
runs:
using: composite
steps:
- name: Instalar Gitleaks
shell: bash
run: |
set -euo pipefail
curl -sSfL \
"https://github.com/gitleaks/gitleaks/releases/download/v${{ inputs.version }}/gitleaks_${{ inputs.version }}_linux_x64.tar.gz" \
-o /tmp/gitleaks.tar.gz
tar -xzf /tmp/gitleaks.tar.gz -C /tmp gitleaks
chmod +x /tmp/gitleaks
/tmp/gitleaks version
# --no-git: escanea el árbol de archivos del checkout, no el log de
# commits. Un scan histórico completo se corre aparte, manual, no
# en cada push/PR (ver README de este snippet).
- name: Escanear secretos en el árbol de archivos
shell: bash
run: |
set -euo pipefail
/tmp/gitleaks detect \
--source="${{ inputs.source }}" \
--no-git \
--redact \
--report-format=json \
--report-path=gitleaks-report.json \
--exit-code=1
- name: Publicar reporte de Gitleaks
if: always()
uses: actions/upload-artifact@v3
with:
name: gitleaks-report
path: gitleaks-report.json
if-no-files-found: ignore