{"id":14957985,"url":"https://github.com/vemel/github_actions_js","last_synced_at":"2025-10-24T14:30:16.751Z","repository":{"id":53094916,"uuid":"351438880","full_name":"vemel/github_actions_js","owner":"vemel","description":"Kickstart automation in one command. Clone, update and share GitHub Actions workflows and CI/CD best practices.","archived":false,"fork":false,"pushed_at":"2023-03-31T03:50:38.000Z","size":660,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-27T19:21:01.024Z","etag":null,"topics":["cicd","githubactions","golang","javascript","julia","nodejs","python","rust","terraform","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vemel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-03-25T13:03:44.000Z","updated_at":"2023-11-13T10:22:49.000Z","dependencies_parsed_at":"2024-01-29T07:26:56.862Z","dependency_job_id":"b4f2fcc8-be2b-4218-9e80-08f55398e1c3","html_url":"https://github.com/vemel/github_actions_js","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vemel%2Fgithub_actions_js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vemel%2Fgithub_actions_js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vemel%2Fgithub_actions_js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vemel%2Fgithub_actions_js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vemel","download_url":"https://codeload.github.com/vemel/github_actions_js/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219868598,"owners_count":16555871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cicd","githubactions","golang","javascript","julia","nodejs","python","rust","terraform","typescript"],"created_at":"2024-09-24T13:15:56.360Z","updated_at":"2025-10-24T14:30:15.727Z","avatar_url":"https://github.com/vemel.png","language":"TypeScript","readme":"# GitHub Actions Manager\n\n[![npm](https://img.shields.io/npm/v/github-actions?color=blue\u0026label=github-actions\u0026style=flat-square)](https://www.npmjs.com/package/github-actions)\n![Codecov](https://img.shields.io/codecov/c/github/vemel/github_actions_js?style=flat-square)\n![npm type definitions](https://img.shields.io/npm/types/github-actions?style=flat-square)\n\n\u003e -- Who will test our unit tests?\n\u003e\n\u003e -- I have no idea 🤨\n\u003e\n\u003e -- Okay, who will automate our automation?\n\u003e\n\u003e -- GitHub Actions Manager 😎\n\nKickstart automation in one command.\nClone, update and share [GitHub Actions](https://github.com/features/actions) workflows and best practices.\n\nComes with awesome packs for\n[Node.js](./workflows/README.md),\n[Python](./workflows_py/README.md),\n[Go](https://github.com/mvdan/github-actions-golang),\n[Terraform](https://github.com/dflook/terraform-github-actions),\n[Julia](https://github.com/julia-actions/Example.jl),\nand [Rust](https://github.com/actions-rs/example) projects.\n\n- [GitHub Actions Manager](#github-actions-manager)\n  - [Basic usage](#basic-usage)\n  - [Automated automation?](#automated-automation)\n  - [Let's start today](#lets-start-today)\n  - [Advanced usage](#advanced-usage)\n    - [Simple, no-force update](#simple-no-force-update)\n    - [Force update](#force-update)\n    - [CLI arguments](#cli-arguments)\n  - [Version 1.0.0 checklist](#version-100-checklist)\n  - [Versioning](#versioning)\n  - [Latest changes](#latest-changes)\n\n\u003cimg src=\"ghactions.png\" alt=\"GitHub Actions Manager\" width=\"400\"/\u003e\n\n## Basic usage\n\n```bash\n# install globally or locally\nnpm i -g github-actions\n# npm i --save-dev github-actions\n\n# run interactive manager\n# in a GitHub repository root\nghactions\n\n# or check how to run non-interactively\nghactions --help\n```\n\n## Automated automation?\n\nYes, why not! Even small projects nowadays have at least simple CI/CD to enforce best practices\nor just to avoid boring release management. Thanks to [GitHub Actions](https://github.com/features/actions),\nit is super easy to kickstart an automation for a new project in minutes.\n\nHowever, every project CI/CD has to be set up and updated separately,\neven though they have a lot in common. So, instead of making our life easier,\nCI/CD adds a new folder in a project to keep an eye on.\n\nBut imagine, what if we could...\n\n- manage our GitHub Actions the same way we manage npm dependencies\n- adapt CI/CD for different projects to our needs and still keep them in sync\n- share the best CI/CD practices and collaborate to raise the bar even higher\n\nAnd finally, what if we could add these best practices for a new project with a single command.\n\n## Let's start today\n- CI/CD for `Node.js` projects [installation guide](./nodejs_workflows/README.md)\n- CI/CD for `Python` projects [installation guide](./python_workflows_py/README.md)\n- CI/CD for `Rust` projects by [@actions-rs](https://github.com/actions-rs/example)\n- CI/CD for `Go` projects by [@mvdan](https://github.com/mvdan/github-actions-golang)\n- CI/CD for `Julia` projects by [@julia-actions](https://github.com/julia-actions/Example.jl)\n- CI/CD for `Terraform` projects by [@dflook](https://github.com/dflook/terraform-github-actions)\n- Or provide path to any GitHub repository to clone their workflows (run `ghactions`, then select `From GitHub URL`)\n- Or even clone workflows from your local path (run `ghactions`, then select `From directory`)\n\n## Advanced usage\n\n### Simple, no-force update\n\n- `jobs.*` are added fom remote\n- `jobs.*.steps` that are `github-actions-managed` are updated from remote or removed if they do not exist remotely\n- `jobs.*.steps` that are not `github-actions-managed` are kept untouched and preserve their position in workflow\n- `jobs.*.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.\n\n### Force update\n\n- Top comment in YAML file is replaced with remote\n- `jobs.*` are deleted if they do not exist remotely\n- `name` workflow name is replaced with remote\n- `on` triggers are replaced with remote\n- `jobs.*.env` is replaced with remote\n- `jobs.*.strategy` is replaced with remote\n- `jobs.*.runs-on` is replaced with remote\n- `jobs.*.if` is replaced with remote\n\n### CLI arguments\n\n| Short | Long | Default | Description |\n| - | - | - | - |\n| `-n \u003cname\u003e[ \u003cname\u003e]*` | `--names \u003cname\u003e[ \u003cname\u003e]*` | interactive mode | Workflow name `\u003cname\u003e.yml`, `all`, or `installed` |\n| `-i \u003curl\u003e` | `--index \u003curl\u003e` | `\u003cGitHub URL\u003e` / `file:///url` / `node` / `python` | Link to workflows directory `.../.github/workflows` |\n| `-r \u003cversion\u003e` | `--ref \u003cversion\u003e` | | Update workflows to a specific tag/branch |\n| `-p \u003cpath\u003e` | `--path \u003cpath\u003e` | current workdir | Path to GitHub project root |\n| `-u` | `--update` | | Apply suggested changes |\n| `-f` | `--force` | | Update user-managed workflow parts |\n| `-l` | `--list` | | List available workflows |\n| `-d` | `--diff` | | Show diff for update and check runs |\n| `-c` | `--clean` | | Do not add `github-actions-managed` marker to workflow steps |\n| `-h` | `--help` | | Print this usage guide |\n| `-v` | `--version` | | Show package version |\n\n## Version 1.0.0 checklist\n- [x] Unify `check` and `update` reports\n- [x] Support user top comment in workflows\n- [x] Add custom indexes support\n- [x] Add `--list` argument to list workflows in index\n- [x] Add `--path` argument to allow running not for a repository root\n- [x] Smart diff\n- [x] Interactive CLI\n- [x] Generator for index READMEs\n- [x] Add `--clean` CLI flag to remove `github-actions-managed` flags\n- [ ] Interactive updates selection\n- [ ] Check workflow name and updates on index load\n\n## Versioning\n\n`github-actions` adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## Latest changes\n\nFull changelog can be found in [Changelog](./CHANGELOG.md).\nRelease notes can be found in [Releases](./releases).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvemel%2Fgithub_actions_js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvemel%2Fgithub_actions_js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvemel%2Fgithub_actions_js/lists"}