Opinionated GitHub Actions and reusable workflows for Node.js continuous integration pipelines.
This repository centralizes the Hoverkraft toolkit for building, testing, and shipping Node.js projects on GitHub. It bundles:
- Composite actions that detect project tooling, manage dependencies, and bootstrap runtimes.
- Reusable workflows that apply those actions to deliver consistent CI pipelines across repositories.
Actions for continuous integration steps: build, lint, and test.
- Build
- Codecov
- Lint
- Test
Actions dedicated to caching and validating Node.js dependencies.
Actions focused on discovering and preparing the Node.js environment.
- Continuous Integration — documentation for the reusable Node.js CI workflow.
Contributions are welcome! Please review the contributing guidelines before opening a PR.
All actions follow a consistent layout:
actions/{category}/{action-name}/
├── action.yml # Action definition with inputs/outputs
├── README.md # Usage documentation and examples
└── index.js / scripts # Optional Node.js helpers (when required)
- Consistent branding: Use
author: hoverkraftwithcolor: blueand a meaningfulicon. - Pinned dependencies: Reference third-party actions via exact SHAs to guarantee reproducibility.
- Input validation: Validate critical inputs early within composite steps or supporting scripts.
- Idempotent steps: Ensure actions can run multiple times without leaving residual state in the workspace.
- Multi-platform support: Test actions in both
ubuntu-latestandwindows-latestrunners when applicable. - Cross-platform compatibility: Uses
actions/github-scriptsteps for cross-platform compatibility. Avoidrunsteps. - Logging: Use structured logs with clear prefixes (
[build-image],[helm-test-chart], …) to simplify debugging. - Security: Avoid shell interpolation with untrusted inputs; prefer parameterized commands or
set -euo pipefailwrappers.
- Tests: Located in
tests/with fixtures for container builds and chart-testing scenarios. - Workflows: Reusable definitions live in
.github/workflows/; internal/private workflows are prefixed with__.
- Encapsulate reusable logic in modules under the action directory (for example,
actions/my-action/index.js). - Prefer async/await with explicit error handling when interacting with the GitHub API or filesystem.
- Centralize environment variable parsing and validation to keep composite YAML lean.
make lint # Run the dockerized Super Linter
make lint-fix # Attempt auto-fixes for lint findings🏢 Hoverkraft contact@hoverkraft.cloud
- Site: https://hoverkraft.cloud
- GitHub: @hoverkraft-tech
This project is licensed under the MIT License.
SPDX-License-Identifier: MIT
Copyright © 2023 Hoverkraft.
For more details, see the license.