-- Who will test our unit tests?
-- I have no idea 🤨
-- Okay, who will automate our automation?
-- GitHub Actions Manager 😎
Kickstart automation in one command. Clone, update and share GitHub Actions workflows and best practices.
Comes with awesome packs for Node.js, Python, Go, Terraform, Julia, and Rust projects.
# install globally or locally
npm i -g github-actions
# npm i --save-dev github-actions
# run interactive manager
# in a GitHub repository root
ghactions
# or check how to run non-interactively
ghactions --helpYes, why not! Even small projects nowadays have at least simple CI/CD to enforce best practices or just to avoid boring release management. Thanks to GitHub Actions, it is super easy to kickstart an automation for a new project in minutes.
However, every project CI/CD has to be set up and updated separately, even though they have a lot in common. So, instead of making our life easier, CI/CD adds a new folder in a project to keep an eye on.
But imagine, what if we could...
- manage our GitHub Actions the same way we manage npm dependencies
- adapt CI/CD for different projects to our needs and still keep them in sync
- share the best CI/CD practices and collaborate to raise the bar even higher
And finally, what if we could add these best practices for a new project with a single command.
- CI/CD for
Node.jsprojects installation guide - CI/CD for
Pythonprojects installation guide - CI/CD for
Rustprojects by @actions-rs - CI/CD for
Goprojects by @mvdan - CI/CD for
Juliaprojects by @julia-actions - CI/CD for
Terraformprojects by @dflook - Or provide path to any GitHub repository to clone their workflows (run
ghactions, then selectFrom GitHub URL) - Or even clone workflows from your local path (run
ghactions, then selectFrom directory)
jobs.*are added fom remotejobs.*.stepsthat aregithub-actions-managedare updated from remote or removed if they do not exist remotelyjobs.*.stepsthat are notgithub-actions-managedare kept untouched and preserve their position in workflowjobs.*.stepsthat exist only remotely are added to workflow to correct position, so to remove step, make in not managed and run emptyruncommand to it, keepidthe same.
- Top comment in YAML file is replaced with remote
jobs.*are deleted if they do not exist remotelynameworkflow name is replaced with remoteontriggers are replaced with remotejobs.*.envis replaced with remotejobs.*.strategyis replaced with remotejobs.*.runs-onis replaced with remotejobs.*.ifis replaced with remote
| Short | Long | Default | Description |
|---|---|---|---|
-n <name>[ <name>]* |
--names <name>[ <name>]* |
interactive mode | Workflow name <name>.yml, all, or installed |
-i <url> |
--index <url> |
<GitHub URL> / file:///url / node / python |
Link to workflows directory .../.github/workflows |
-r <version> |
--ref <version> |
Update workflows to a specific tag/branch | |
-p <path> |
--path <path> |
current workdir | Path to GitHub project root |
-u |
--update |
Apply suggested changes | |
-f |
--force |
Update user-managed workflow parts | |
-l |
--list |
List available workflows | |
-d |
--diff |
Show diff for update and check runs | |
-c |
--clean |
Do not add github-actions-managed marker to workflow steps |
|
-h |
--help |
Print this usage guide | |
-v |
--version |
Show package version |
- Unify
checkandupdatereports - Support user top comment in workflows
- Add custom indexes support
- Add
--listargument to list workflows in index - Add
--pathargument to allow running not for a repository root - Smart diff
- Interactive CLI
- Generator for index READMEs
- Add
--cleanCLI flag to removegithub-actions-managedflags - Interactive updates selection
- Check workflow name and updates on index load
github-actions adheres to Semantic Versioning.
Full changelog can be found in Changelog. Release notes can be found in Releases.
