github-actions
v0.9.0
Published
CLI tool to install and update GitHub Actions
Downloads
537
Maintainers
Readme
GitHub Actions Manager
-- 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.
Basic usage
# 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 --helpAutomated automation?
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.
Let's start today
- 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)
Advanced usage
Simple, no-force update
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.
Force update
- 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
CLI arguments
| 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 |
Version 1.0.0 checklist
- [x] Unify
checkandupdatereports - [x] Support user top comment in workflows
- [x] Add custom indexes support
- [x] Add
--listargument to list workflows in index - [x] Add
--pathargument to allow running not for a repository root - [x] Smart diff
- [x] Interactive CLI
- [x] Generator for index READMEs
- [x] Add
--cleanCLI flag to removegithub-actions-managedflags - [ ] Interactive updates selection
Versioning
github-actions adheres to Semantic Versioning.
Latest changes
Full changelog can be found in Changelog. Release notes can be found in Releases.
