The Release Scanner (relscanner-job) is a Kubernetes CronJob that automatically discovers new software releases by monitoring GitHub Actions workflow runs across all repositories connected to your GitHub App installation. It enriches each release with SBOM data, Git provenance, and OpenSSF Scorecard results, then syncs the release records to the Ortelius/DeployHub backend (ortelius) via the /api/v1/releases API.
This component runs alongside the Ortelius backend and complements the Deployment Tracking for GKE capability by capturing releases at their source — the CI/CD pipeline — rather than at runtime cluster observation.
For every GitHub App installation associated with a user in the Ortelius ArangoDB database, the scanner:
- Queries all accessible repositories via the GitHub Apps API
- Finds the most recent successful workflow run on
mainormastertriggered by apush,workflow_dispatch, orreleaseevent - Downloads and parses the workflow logs to detect published Docker image references
- Reads OCI image labels (
org.opencontainers.image.*) to extract Git commit SHA, source URL, and author metadata - Acquires an SBOM using the following priority order:
- OCI Referrers API (attached SBOM artifact)
- Cosign DSSE attestation
- GitHub Actions artifact named
sbomorcyclonedx - On-the-fly generation via Syft
- Fetches an OpenSSF Scorecard result for the repository
- Posts the complete release record — including SBOM and scorecard — to the Ortelius backend
- Persists scan state to ArangoDB to avoid reprocessing already-synced workflow runs
Ortelius tracks what is deployed where across your environment. This scanner feeds the Release side of that picture: for each container image or application version built in GitHub Actions, it creates a versioned release record in Ortelius enriched with:
- Component name derived from the GitHub org/repo
- Version from the Docker image tag or Git tag
- SBOM (CycloneDX JSON) listing all packages and dependencies
- Git metadata: branch, commit SHA, commit timestamp, repository URL
- OpenSSF Scorecard security posture score
Once synced, these records are available in the Ortelius UI and API for dependency mapping, vulnerability correlation, and deployment audit trails.
Before the scanner can discover your releases, connect your GitHub account via Profile → Connect GitHub in the Ortelius UI. This installs the Ortelius GitHub App on your account or organization and stores your installation ID in ArangoDB, which the scanner uses to generate a short-lived token and access your repositories on every run. Full instructions are in Connect Your GitHub Repositories in the Getting Started guide.
The CronJob runs every 15 minutes by default (*/15 * * * *) with concurrencyPolicy: Forbid to prevent overlapping runs during long scans.
The scanner attempts to obtain an SBOM in the following order, stopping at the first success:
- OCI Referrers API — looks for an attached artifact with a media type containing
sbomorcyclonedx - Cosign DSSE attestation — looks for a DSSE envelope referrer and decodes the predicate
- GitHub Actions artifact — downloads an artifact whose name contains
sbomorcyclonedxand extracts the first JSON file - Syft (on-the-fly) — pulls the container image and generates a CycloneDX JSON SBOM locally
Processed workflow run IDs are stored in ArangoDB under metadata/relscanner_state. This prevents duplicate release records on subsequent runs. State is keyed by owner/repo.