Automation
Automate ScanCode.io scans by integrating them into your CI/CD pipelines or scheduling them to run on specific events such as commits, pull requests, or releases.
CI/CD Integrations
Seamlessly integrate ScanCode.io into your development workflow to automatically scan code for licenses, vulnerabilities, and compliance issues.
GitHub Actions
Use the official scancode-action to integrate ScanCode.io into your GitHub workflows.
Features:
Run ScanCode.io pipelines automatically
Check for compliance issues and policy violations
Detect security vulnerabilities
Generate SBOMs in multiple formats (SPDX, CycloneDX)
Export results in JSON and XLSX formats
Example usage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: scancode-inputs
- uses: aboutcode-org/scancode-action@main
with:
pipelines: "scan_codebase"
output-formats: "json xlsx spdx cyclonedx"
Documentation: https://github.com/aboutcode-org/scancode-action
Jenkins
Integrate ScanCode.io into your Jenkins pipelines with a simple Jenkinsfile.
Quick example:
pipeline {
agent any
stages {
stage('Scan') {
steps {
sh '''
docker run --rm \
-v "${WORKSPACE}":/codedrop \
ghcr.io/aboutcode-org/scancode.io:latest \
run scan_codebase /codedrop \
> scancode_results.json
'''
archiveArtifacts 'scancode_results.json'
}
}
}
}
Full documentation: https://github.com/aboutcode-org/scancode-action/blob/main/jenkins/README.md
GitLab
Run ScanCode.io scans in your GitLab pipelines.
Full documentation: https://github.com/aboutcode-org/scancode-action/blob/main/gitlab/README.md
Azure Pipelines
Run ScanCode.io scans in Azure DevOps pipelines.
Full documentation: https://github.com/aboutcode-org/scancode-action/blob/main/azure-pipelines/README.md
Other CI/CD Systems
ScanCode.io can be integrated into any CI/CD system that supports Docker using the RUN command.
Requirements:
Docker must be installed and available in your CI/CD environment
Sufficient disk space for Docker images and scan results
Basic command:
docker run --rm \
-v "$(pwd)":/codedrop \
ghcr.io/aboutcode-org/scancode.io:latest \
run [PIPELINE] [INPUTS] \
> scancode_results.json
Replace [PIPELINE] with your desired pipeline (e.g., scan_codebase,
scan_single_package) and [INPUTS] with the path to scan.
See available pipelines for more options.
Example with specific pipeline:
docker run --rm \
-v "$(pwd)":/codedrop \
ghcr.io/aboutcode-org/scancode.io:latest \
run scan_codebase /codedrop \
> scancode_results.json
2. Utilize an external ScanCode.io server (REST API)
If you have access to an external ScanCode.io server, you can interact with it programmatically through the REST API to trigger scans automatically.
You can use the following Python script as a base and execute it from various automation methods such as a cron job or a git hook:
from datetime import datetime
from os import getenv
import requests
# Configure the following variables to your needs
PROJECT_NAME = f"scan-{datetime.now().isoformat()}"
INPUT_URLS = [
"https://github.com/aboutcode-org/scancode.io/archive/refs/tags/v32.4.0.zip",
]
PIPELINES = [
"inspect_packages",
"find_vulnerabilities",
]
EXECUTE_NOW = True
def create_project():
session = requests.Session()
# ScanCode.io server location
SCANCODEIO_URL = getenv("SCANCODEIO_URL", default="").rstrip("/")
if not SCANCODEIO_URL:
raise ValueError("SCANCODEIO_URL value missing from the env")
# Optional authentication
SCANCODEIO_API_KEY = getenv("SCANCODEIO_API_KEY")
if SCANCODEIO_API_KEY:
session.headers.update({"Authorization": f"Token {SCANCODEIO_API_KEY}"})
projects_api_url = f"{SCANCODEIO_URL}/api/projects/"
project_data = {
"name": PROJECT_NAME,
"input_urls": INPUT_URLS,
"pipeline": PIPELINES,
"execute_now": EXECUTE_NOW,
}
response = session.post(projects_api_url, data=project_data)
print(response.json())
if __name__ == "__main__":
create_project()
Note
Before running this script, ensure that the environment variables SCANCODEIO_URL
and SCANCODEIO_API_KEY (when authentication is enabled) are set correctly.
You can set the environment variables within the script command itself using the
following format:
SCANCODEIO_URL="https://..." SCANCODEIO_API_KEY="apikey..." python script.py
By providing the required environment variables in this manner, you can execute the script with the appropriate configurations and credentials.
3. Run a Local ScanCode.io app on your machine (management commands)
To automate scans within your local environment, you can run the ScanCode.io app directly on your machine and leverage the Command Line Interface.
For instance, you can create a project and trigger it using the following command in a crontab:
docker compose exec -it web scanpipe create-project scan-$(date +"%Y-%m-%dT%H:%M:%S") \
--pipeline scan_single_package \
--input-url https://github.com/package-url/packageurl-python/archive/refs/heads/main.zip \
--execute
By executing this command, you initiate the project creation process, and the scan will be triggered automatically based on the specified pipeline and input URL.