Skip to content

Collection of reusable workflows for GitHub Actions

License

Notifications You must be signed in to change notification settings

EarthmanMuons/reusable-workflows

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Reusable Workflows

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.

Usage

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@main

For a more comprehensive example of these workflows being used in a real-world scenario, see the WhatChord or spellout projects.

Workflow Index

Reusable workflows are defined as top-level files under .github/workflows/.

Common

General-purpose workflows intended for use by any repository:

  • detect-changed-files.yml – Expose paths-filter outputs for conditional jobs
  • check-github-actions.yml – Lint workflows via actionlint
  • check-markdown.yml – Format and lint Markdown via Prettier
  • check-shell.yml – Format and lint shell scripts
  • check-spelling.yml – Spellcheck via typos
  • label-pull-request.yml – Apply labels via actions/labeler
  • ready-to-merge.yml – Ensure all required jobs truly passed
  • preload-caches-actionlint.yml – Cache the actionlint binary
  • flush-caches.yml – Delete GitHub Actions caches for the current branch
  • tag-if-missing.yml – Create and push a missing SemVer tag (via Toolbox Envy scripts)

Details: docs/common.md

Flutter

Workflows specific to Flutter projects:

  • check-flutter.yml – Format, analyze, and test using pinned Flutter
  • preload-caches-flutter.yml – Cache pinned Flutter dependencies
  • bump-version-flutter.yml – Bump version and changelog, open PR
  • draft-release-flutter.yml – Draft release, build, sign, and upload assets

Details: docs/flutter.md

Rust

Workflows specific to Rust projects:

  • check-rust.yml – fmt, clippy, stable matrix, MSRV
  • check-rust-beta.yml – Beta toolchain coverage
  • check-rust-miri.yml – Miri coverage (nightly)
  • preload-caches-rust.yml – Cache stable and MSRV dependencies
  • bump-version-rust.yml – cargo-release version and replace, open PR
  • tag-untagged-releases-rust.yml – Tag and push missing crate tags
  • publish-crate.yml – Publish crates to crates.io
  • draft-release-rust.yml – Draft release and upload compiled artifacts
  • deploy-github-pages-rust.yml – Build rustdoc and deploy to GitHub Pages

Details: docs/rust.md

Zig

Workflows specific to Zig projects:

  • deploy-github-pages-zig.yml – Build Zig docs and deploy GitHub Pages

Details: docs/zig.md

License

These reusable workflows are released under the Zero Clause BSD License (SPDX: 0BSD).

Copyright © 2023 Aaron Bull Schaefer and contributors

About

Collection of reusable workflows for GitHub Actions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •