Opinionated GitHub Actions and workflows for streamlined release, deployment, and publishing.
Actions dedicated to ArgoCD workflows.
Actions for validating the result of a deploy.
Actions for cleaning deployments on various platforms.
Actions for deploying to various platforms.
- Jampack
- Jekyll
- Report
Actions for managing deployments.
- Create
- Delete
- Read
- Update
Actions for managing releases.
- Create
Actions for managing workflows.
Reusable workflows for managing release process.
Contributions are welcome! Please see the contributing guidelines for more details.
All actions follow this consistent structure:
actions/{category}/{action-name}/
├── action.yml # Action definition with inputs/outputs
├── README.md # Usage documentation
└── *.js # Optional Node.js scripts (e.g., prepare-site.js)
- Consistent branding: All actions use
author: hoverkraft,icon: <specific-icon>,color: blue - Composite actions: Use
using: "composite"with GitHub Script for complex logic - Pinned dependencies: Always pin action versions with SHA (e.g.,
@ed597411d8f924073f98dfc5c65a23a2325f34cd) - Input validation: Validate inputs early in GitHub Script steps
- Class-based architecture: Use classes like
AssetManagerfor complex functionality - Path utilities: Extensive use of Node.js
pathmodule for cross-platform compatibility - Regular expression patterns: Define constants for reusable patterns (
MARKDOWN_IMAGE_REGEX,HTML_IMAGE_REGEX) - Caching: Implement Map-based caching for expensive operations
make lint # Run Super Linter (dockerized)
make lint-fix # Auto-fix issues where possible
# Use GitHub Actions locally with `act`
gh act -W .github/workflows/workflow-file-to-test.yml- Dockerfile: Uses Super Linter slim image for consistent code quality
- Tests: Located in
tests/with expected vs actual file comparisons - Workflows: Private workflows prefixed with
__(e.g.,__main-ci.yml)
Always follow these patterns when creating/modifying actions:
-
Pinned Dependencies: Use exact SHA commits for all action dependencies:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
-
Consistent Branding: Every action.yml must include:
author: hoverkraft branding: icon: <specific-icon> color: blue
-
Input Validation: Always validate inputs early in GitHub Script steps:
const urlInput = ${{ toJson(inputs.url ) }}; if (!urlInput) { return core.setFailed("URL input is required."); }
For Node.js scripts (like prepare-site.js):
- Use class-based architecture for complex functionality
- Define regular expression patterns as constants (
MARKDOWN_IMAGE_REGEX,HTML_IMAGE_REGEX) - Implement Map-based caching for expensive operations
- Always use Node.js
pathmodule for cross-platform compatibility
actions/{category}/{action-name}/ # Modular action organization
├── action.yml # Action definition with inputs/outputs
├── README.md # Usage documentation
└── *.js # Optional Node.js scripts
.github/workflows/ # Reusable workflows
├── deploy-*.yml # Deployment orchestration
├── clean-deploy-*.yml # Cleanup workflows
└── __*.yml # Private/internal workflows
tests/ # Expected vs actual comparisons
└── argocd-app-of-apps/ # Template testing structure
🏢 Hoverkraft [email protected]
- Site: https://hoverkraft.cloud
- GitHub: @hoverkraft-tech
This project is licensed under the MIT License.
SPDX-License-Identifier: MIT
Copyright © 2025 hoverkraft-tech
For more details, see the license.