This workflow consists of 3 jobs that run sequentially:
- Runs the main scraper (
main.py) to fetch and update Tor version data - Commits and pushes changes to the repository
- Reads
data/json/latest_export_versions.json - Creates a matrix of all export bundle files (one entry per file)
- Passes the matrix to the next job
- Runs in parallel for each file in the matrix (but with
max-parallel: 1to avoid conflicts) - For each export bundle:
- Downloads the
.tar.gzfile - Extracts it to find the
torbinary - Runs the binary with
--versionusingdeamons.sh - Extracts the daemon version (e.g.,
0.4.8.13) - Updates the JSON file with the
daemon_versionfield - Commits and pushes the change
- Downloads the
The latest_export_versions.json file will contain entries like:
{
"version": "15.0",
"files": [
{
"file_name": "tor-expert-bundle-linux-x86_64-15.0.tar.gz",
"url": "https://archive.torproject.org/tor-package-archive/torbrowser/15.0/tor-expert-bundle-linux-x86_64-15.0.tar.gz",
"daemon_version": "0.4.8.13"
}
]
}- Sequential Processing: Uses
max-parallel: 1to process files one at a time, preventing git conflicts - Error Handling: Uses
continue-on-error: trueto skip binaries that can't be processed - Cross-Platform: Handles different OS binaries (Linux, Windows, macOS, Android)
- Automatic Commits: Each daemon version is committed separately with a descriptive message