Kickstart automation in one command. Clone, update and share GitHub Actions workflows and CI/CD best practices.
MIT License
-- 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...
And finally, what if we could add these best practices for a new project with a single command.
Node.js
projects installation guide
Python
projects installation guide
Rust
projects by @actions-rs
Go
projects by @mvdan
Julia
projects by @julia-actions
Terraform
projects by @dflook
ghactions
, then select From GitHub URL
)ghactions
, then select From directory
)jobs.*
are added fom remotejobs.*.steps
that are github-actions-managed
are updated from remote or removed if they do not exist remotelyjobs.*.steps
that are not github-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 empty run
command to it, keep id
the same.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 remoteShort | 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 |
check
and update
reports--list
argument to list workflows in index--path
argument to allow running not for a repository root--clean
CLI flag to remove github-actions-managed
flagsgithub-actions
adheres to Semantic Versioning.
Full changelog can be found in Changelog. Release notes can be found in Releases.