This repository houses a collection of reusable workflows for GitHub Actions. Its goal is to centralize CI building blocks used across multiple projects so they can be updated and improved consistently.
Reusable Workflows is designed to pair with the Toolbox Envy repository. Where this repository defines high-level CI workflows and execution structure, Toolbox Envy provides the reusable scripts those workflows invoke, keeping procedural logic centralized and out of workflow definitions.
You call a reusable workflow by using uses at the job level:
{owner}/{repo}/.github/workflows/<workflow>.yml@{ref}
For example, to call the "check-spelling.yml" reusable workflow:
jobs:
spelling:
uses: EarthmanMuons/reusable-workflows/.github/workflows/check-spelling.yml@mainFor a more comprehensive example of these workflows being used in a real-world scenario, see the WhatChord or spellout projects.
Reusable workflows are defined as top-level files under
.github/workflows/.
General-purpose workflows intended for use by any repository:
detect-changed-files.yml– Expose paths-filter outputs for conditional jobscheck-github-actions.yml– Lint workflows via actionlintcheck-markdown.yml– Format and lint Markdown via Prettiercheck-shell.yml– Format and lint shell scriptscheck-spelling.yml– Spellcheck via typoslabel-pull-request.yml– Apply labels via actions/labelerready-to-merge.yml– Ensure all required jobs truly passedpreload-caches-actionlint.yml– Cache the actionlint binaryflush-caches.yml– Delete GitHub Actions caches for the current branchtag-if-missing.yml– Create and push a missing SemVer tag (via Toolbox Envy scripts)
Details: docs/common.md
Workflows specific to Flutter projects:
check-flutter.yml– Format, analyze, and test using pinned Flutterpreload-caches-flutter.yml– Cache pinned Flutter dependenciesbump-version-flutter.yml– Bump version and changelog, open PRdraft-release-flutter.yml– Draft release, build, sign, and upload assets
Details: docs/flutter.md
Workflows specific to Rust projects:
check-rust.yml– fmt, clippy, stable matrix, MSRVcheck-rust-beta.yml– Beta toolchain coveragecheck-rust-miri.yml– Miri coverage (nightly)preload-caches-rust.yml– Cache stable and MSRV dependenciesbump-version-rust.yml– cargo-release version and replace, open PRtag-untagged-releases-rust.yml– Tag and push missing crate tagspublish-crate.yml– Publish crates to crates.iodraft-release-rust.yml– Draft release and upload compiled artifactsdeploy-github-pages-rust.yml– Build rustdoc and deploy to GitHub Pages
Details: docs/rust.md
Workflows specific to Zig projects:
deploy-github-pages-zig.yml– Build Zig docs and deploy GitHub Pages
Details: docs/zig.md
These reusable workflows are released under the Zero Clause BSD License (SPDX: 0BSD).
Copyright © 2023 Aaron Bull Schaefer and contributors