-- 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 --help
Yes, 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.js
projects installation guide - CI/CD for
Python
projects installation guide - CI/CD for
Rust
projects by @actions-rs - CI/CD for
Go
projects by @mvdan - CI/CD for
Julia
projects by @julia-actions - CI/CD for
Terraform
projects 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.*.steps
that aregithub-actions-managed
are updated from remote or removed if they do not exist remotelyjobs.*.steps
that are notgithub-actions-managed
are kept untouched and preserve their position in workflowjobs.*.steps
that exist only remotely are added to workflow to correct position, so to remove step, make in not managed and run emptyrun
command to it, keepid
the same.
- Top comment in YAML file is replaced with remote
jobs.*
are deleted if they do not exist remotelyname
workflow name is replaced with remoteon
triggers are replaced with remotejobs.*.env
is replaced with remotejobs.*.strategy
is replaced with remotejobs.*.runs-on
is replaced with remotejobs.*.if
is 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
check
andupdate
reports - Support user top comment in workflows
- Add custom indexes support
- Add
--list
argument to list workflows in index - Add
--path
argument to allow running not for a repository root - Smart diff
- Interactive CLI
- Generator for index READMEs
- Add
--clean
CLI flag to removegithub-actions-managed
flags - 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.