Skip to main content
  1. Tools/
  2. Code Artifacts/

con/tinuous

Language: Python
License: MIT
Maturity: stable
Verified: 2026-02
Examples: tinuous-inception (self-archiving CI logs) | DataLad release builds

Overview #

con/tinuous is a command-line tool for downloading build logs, artifacts, and release assets from multiple CI/CD platforms into a local directory structure suitable for version control with git-annex and DataLad. It supports GitHub Actions, Travis CI, Appveyor, and CircleCI.

CI logs are among the most ephemeral research artifacts – platforms routinely expire logs after 90 days, and when a CI provider shuts down (as Travis CI largely did for open source), years of build history vanish. con/tinuous ensures these artifacts are captured and preserved.

Key Features #

  • Multi-platform – single tool covers GitHub Actions, Travis CI, Appveyor, and CircleCI
  • Flexible path templates – customizable output directory structure using placeholders ({year}, {month}, {ci}, {wf_name}, {run_id}, etc.)
  • Asset filtering – retrieve specific workflows, build types (push, PR, cron, manual), and date ranges
  • Secret sanitization – automatically removes sensitive data from downloaded logs using configurable regex patterns
  • Stateful execution – tracks previously fetched builds to avoid redundant downloads on subsequent runs
  • DataLad integration – optional --datalad flag commits each fetch as a DataLad save with provenance metadata
  • Scheduled operation – designed for cron-based automation for continuous archival

Installation #

pip install con-tinuous

Usage #

Configure via tinuous.yaml in your repository:

repo: con/tinuous
ci:
  github:
    workflows:
      - test.yml
      - release.yml
    logs: true
    artifacts: true
  travis:
    logs: true
  appveyor:
    logs: true

path: '{ci}/{wf_name}/{year}/{month}/{day}/{run_id}/{job_name}.log'

secrets:
  - '\b[A-Za-z0-9+/]{40}\b'  # sanitize base64 tokens

Then run:

# Fetch all new logs since last run
tinuous fetch

# Fetch with DataLad integration (auto-commit with provenance)
tinuous fetch --datalad

# Fetch only GitHub Actions logs from the last 30 days
tinuous fetch --ci github --since 30d

git-annex / DataLad Integration #

Integration level: native-datalad.

con/tinuous has first-class DataLad support via the --datalad flag. When enabled, each fetch operation is committed as a DataLad save with metadata recording what was fetched, from which CI platform, and when. This creates a complete provenance trail for the archived logs.

# Initialize a DataLad dataset for CI logs
datalad create ci-archive
cd ci-archive

# Copy tinuous config
cp /path/to/tinuous.yaml .

# Fetch with automatic DataLad commits
tinuous fetch --datalad

Log text files are committed to git (searchable, diffable), while binary artifacts go into git-annex (content-addressed, deduplicated).

AI Readiness #

Level: ai-ready.

CI logs are plain text, immediately consumable by AI systems. This makes con/tinuous archives ideal for:

  • Regression analysis – AI agents can diff logs across builds to identify when and why tests started failing
  • Pattern detection – find recurring flaky tests, infrastructure issues, or dependency problems
  • Build optimization – analyze timing data to identify slow steps

The structured directory layout ({ci}/{wf_name}/{year}/...) makes it easy for AI tools to navigate and correlate logs across time and platforms.

See Also #