github-actions v0.9.0
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
- 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
Versioning
github-actions adheres to Semantic Versioning.
Latest changes
Full changelog can be found in Changelog. Release notes can be found in Releases.