Integración con GitHub Action de Droidwatch
Escanea APKs automáticamente en tu pipeline CI/CD y falla los builds cuando se
superan los umbrales de amenaza. La action está publicada en el
GitHub Marketplace
como Omar1123/droidwatch-scan@v1.
Workflow de ejemplo completo
Crea .github/workflows/apk-security-scan.yml en tu repositorio:
name: APK Security Scan
on:
push:
branches: [main, develop]
paths:
- '**.apk'
- 'app/build/**'
pull_request:
branches: [main]
workflow_dispatch:
inputs:
apk_path:
description: 'Ruta al archivo APK'
required: false
default: 'app/build/outputs/apk/release/app-release.apk'
jobs:
droidwatch-scan:
name: Droidwatch APK Analysis
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build APK
run: ./gradlew assembleRelease
- name: Droidwatch Security Scan
id: scan
uses: Omar1123/droidwatch-scan@v1
with:
apk_path: app/build/outputs/apk/release/app-release.apk
api_key: ${{ secrets.DROIDWATCH_API_KEY }}
fail_on_verdict: "Malicious|High Risk"
- name: Imprimir resumen
if: always()
run: |
echo "Veredicto : ${{ steps.scan.outputs.verdict }}"
echo "Score : ${{ steps.scan.outputs.score }}"
echo "Reporte : ${{ steps.scan.outputs.report_url }}"
Inputs
| Input | Requerido | Default | Descripción |
|---|---|---|---|
apk_path |
Sí | — | Ruta al artefacto relativa a la raíz del workspace: .apk / .aab / .xapk / .dex / .ipa (iOS, análisis estático) |
api_key |
Sí | — | API key con permisos de upload (dw_...). Genérala en Mi Perfil → API Keys |
server_url |
No | https://droidwatch.app |
URL base — apunta a tu instancia self-hosted si tienes una |
fail_on_verdict |
No | Malicious |
Veredictos separados por pipe que fallan el build, ej. Malicious\|High Risk\|Suspicious |
timeout_seconds |
No | 300 |
Cuánto esperar a que termine el análisis antes de abortar |
Outputs
| Output | Descripción |
|---|---|
verdict |
Veredicto del análisis: Malicious, High Risk, Suspicious o Benign |
score |
Score de riesgo numérico (0–100) |
run_id |
ID del run de Droidwatch para el reporte completo |
report_url |
URL pública compartible del reporte interactivo |
Cómo obtener una API key
- Inicia sesión en droidwatch.app (o tu instancia)
- Ve a Mi Perfil → API Keys
- Haz clic en Generate new key
- Copia la key — empieza con
dw_y se muestra una sola vez
Las API keys respetan los límites de tu plan y requieren un plan con acceso
API. Las keys Enterprise no tienen límite diario de uploads.
Cómo configurar los secrets
Nunca pongas tu API key directamente en el YAML del workflow. Guárdala como
secret cifrado de GitHub Actions:
- En tu repositorio de GitHub, ve a Settings → Secrets and variables → Actions
- Haz clic en New repository secret
- Crea
DROIDWATCH_API_KEYcon la keydw_...de Mi Perfil → API Keys
Para pipelines a nivel de organización, usa Organisation secrets para
compartir la key entre repositorios sin duplicarla.
Referencia de fail_on_verdict
| Valor | Falla cuando el veredicto es... |
|---|---|
Malicious |
Solo Malicious |
Malicious\|High Risk |
Malicious o High Risk |
Malicious\|High Risk\|Suspicious |
Todo excepto Benign |
Para pipelines de compliance fintech se recomienda
Malicious|High Risk|Suspicious. Para CI general, Malicious|High Risk
balancea seguridad con ruido de falsos positivos.
Manejo de datos
La action sube tu artefacto al servidor de Droidwatch configurado para
analizarlo — el archivo sale del runner de GitHub Actions. El análisis corre
en un sandbox aislado y la retención sigue la política de tu plan. Si tu
artefacto no puede salir de tu infraestructura, apunta server_url a una
instancia self-hosted (quickstart).
Droidwatch self-hosted
Apunta server_url: a la URL de tu instancia on-prem — sin más cambios.
La misma action funciona contra cualquier despliegue de Droidwatch.