- Go to Actions → Start New Build Cycle
- Click Run workflow
- Enter container image (e.g.,
ghcr.io/bioconductor/bioconductor_docker:RELEASE_3_20) - Click Run workflow
A new branch will be created: build/YYYY-MM-DD-HHMMSS-container-tag
After the branch is created:
- Switch to the build branch
- Edit
.github/workflows/run.yaml - Uncomment these lines (around line 6-7):
schedule: - cron: '*/5 * * * *'
- Commit and push
Builds will now run automatically every 5 minutes.
Check these files on the build branch:
logs/successful-packages.txt- Completed packageslogs/failed-packages.txt- Failed packageslogs/dispatched-packages.txt- All dispatched packagesremaining-packages.json- Packages still waitinglogs/PackageName/build-*.log- Individual package logs
When all packages are done:
- Switch to the build branch in GitHub
- Go to Actions → Finish Build Cycle
- Click Run workflow
This creates the PACKAGES index and syncs to the repository.
| File | Purpose |
|---|---|
CONTAINER_BASE_IMAGE.bioc |
Docker image used for builds |
biocdeps.json |
Package dependency graph |
ready_packages.txt |
Packages ready to build now |
bioc_version |
Bioconductor version |
r_version |
R version |
null_push_counter |
No-activity cycle counter |
PACKAGES |
Final package index (after finish) |
cycle_complete_time |
Build completion timestamp |
Each build creates:
- Namespace:
ns-YYYY-MM-DD-HHMMSS-container-tag - PVC:
bioc-pvc-YYYY-MM-DD-HHMMSS-container-tag - Jobs: One per package with label
app=bioc-builder
git checkout build/2025-10-30-123456-container-tag
cat logs/successful-packages.txt | wc -l # Count successful builds
cat logs/failed-packages.txt | wc -l # Count failurescat logs/PackageName/build-success.log
# or
cat logs/PackageName/build-fail.logkubectl get jobs -n ns-YYYY-MM-DD-HHMMSS-container-tag -l app=bioc-buildergit branch -d build/2025-05-28-142558-container-tag
git push origin --delete build/2025-05-28-142558-container-tag- Check
null_push_counter- if high, builds may be waiting on dependencies - Check Kubernetes jobs:
kubectl get jobs -n ns-... - Look for failed packages:
cat logs/failed-packages.txt
Option 1: Create a new branch with the start_cycle workflow Option 2: Manually reset files on current branch and re-run workflow
- Check the log:
logs/PackageName/build-fail.log - Look for dependency issues
- Check if package is archived on CRAN
- Main branch: Does not run builds automatically (schedule is commented out)
- Build branches: Edit workflow to uncomment schedule for automatic builds
- Keep branches: Don't delete build branches until you're sure you don't need them
- Log sizes: Large logs are gitignored to keep repo size manageable