This document describes the software architecture and internal maintenance details of the bioconductor/workflows repository.
Any significant structural change or new design pattern in these reusable workflows is documented in the docs/adr/ directory using the Nygard format.
Please refer to the ADR Directory for the complete list of Architecture Decision Records that guide the architecture.
When contributing to this repository using AI assistants, please review the rules and guidelines specified in .github/copilot-instructions.md.
This repository uses raven-actions/actionlint to validate the GitHub Actions workflow syntax. It runs automatically on push and pull requests for any changes within .github/workflows/.
The canary workflow runs on a weekly schedule (and on-demand) to verify that bioccheck.yml executes correctly end-to-end against the Bioconductor container tag derived from the main branch.
It uses error_on: 'never' so that expected BiocCheck notes from the internal stub package do not cause a false failure.
This repo contains a DESCRIPTION file and basic vignette to make it a valid R package that can be checked without error (with enough disabling flags invoked).
The portion after @ in a uses: line can be any git reference (a tag, branch, or SHA):
@main: Points to the default branch. This is whatci.ymland the Workflow Generator currently emit, so that changes propagate to all users immediately. New features are tested on branches and PRs before merging.@v1: A floating major version tag, to be introduced with the first stable release. Maintainers movev1whenever backwards-compatible fixes are published, protecting callers from breaking changes inv2.@v1.0.0: Pins to an exact release tag for strict reproducibility.
When cutting a major release (e.g. v1) or changing the default reference, update these three locations in lockstep:
ci.yml: theuses:line.docs/index.html: theworkflowObj.jobs.bioccheck.usestemplate string.technical_notes.md: this section.
Then create or move the floating tag:
git tag -fa v1 -m "Release v1"
git push origin v1 --force