Ismo Vuorinen 78fdad69e5 feat: fixes, tweaks, new actions, linting (#186)
* feat: fixes, tweaks, new actions, linting
* fix: improve docker publish loops and dotnet parsing (#193)
* fix: harden action scripts and version checks (#191)
* refactor: major repository restructuring and security enhancements

Add comprehensive development infrastructure:
- Add Makefile with automated documentation generation, formatting, and linting tasks
- Add TODO.md tracking self-containment progress and repository improvements
- Add .nvmrc for consistent Node.js version management
- Create python-version-detect-v2 action for enhanced Python detection

Enhance all GitHub Actions with standardized patterns:
- Add consistent token handling across 27 actions using standardized input patterns
- Implement bash error handling (set -euo pipefail) in all shell steps
- Add comprehensive input validation for path traversal and command injection protection
- Standardize checkout token authentication to prevent rate limiting
- Remove relative action dependencies to ensure external usability

Rewrite security workflow for PR-focused analysis:
- Transform security-suite.yml to PR-only security analysis workflow
- Remove scheduled runs, repository issue management, and Slack notifications
- Implement smart comment generation showing only sections with content
- Add GitHub Actions permission diff analysis and new action detection
- Integrate OWASP, Semgrep, and TruffleHog for comprehensive PR security scanning

Improve version detection and dependency management:
- Simplify version detection actions to use inline logic instead of shared utilities
- Fix Makefile version detection fallback to properly return 'main' when version not found
- Update all external action references to use SHA-pinned versions
- Remove deprecated run.sh in favor of Makefile automation

Update documentation and project standards:
- Enhance CLAUDE.md with self-containment requirements and linting standards
- Update README.md with improved action descriptions and usage examples
- Standardize code formatting with updated .editorconfig and .prettierrc.yml
- Improve GitHub templates for issues and security reporting

This refactoring ensures all 40 actions are fully self-contained and can be used independently when
referenced as ivuorinen/actions/action-name@main, addressing the critical requirement for external
usability while maintaining comprehensive security analysis and development automation.

* feat: add automated action catalog generation system

- Create generate_listing.cjs script for comprehensive action catalog
- Add package.json with development tooling and npm scripts
- Implement automated README.md catalog section with --update flag
- Generate markdown reference-style links for all 40 actions
- Add categorized tables with features, language support matrices
- Replace static reference links with auto-generated dynamic links
- Enable complete automation of action documentation maintenance

* feat: enhance actions with improved documentation and functionality

- Add comprehensive README files for 12 actions with usage examples
- Implement new utility actions (go-version-detect, dotnet-version-detect)
- Enhance node-setup with extensive configuration options
- Improve error handling and validation across all actions
- Update package.json scripts for better development workflow
- Expand TODO.md with detailed roadmap and improvement plans
- Standardize action structure with consistent inputs/outputs

* feat: add comprehensive output handling across all actions

- Add standardized outputs to 15 actions that previously had none
- Implement consistent snake_case naming convention for all outputs
- Add build status and test results outputs to build actions
- Add files changed and status outputs to lint/fix actions
- Add test execution metrics to php-tests action
- Add stale/closed counts to stale action
- Add release URLs and IDs to github-release action
- Update documentation with output specifications
- Mark comprehensive output handling task as complete in TODO.md

* feat: implement shared cache strategy across all actions

- Add caching to 10 actions that previously had none (Node.js, .NET, Python, Go)
- Standardize 4 existing actions to use common-cache instead of direct actions/cache
- Implement consistent cache-hit optimization to skip installations when cache available
- Add language-specific cache configurations with appropriate key files
- Create unified caching approach using ivuorinen/actions/common-cache@main
- Fix YAML syntax error in php-composer action paths parameter
- Update TODO.md to mark shared cache strategy as complete

* feat: implement comprehensive retry logic for network operations

- Create new common-retry action for standardized retry patterns with configurable strategies
- Add retry logic to 9 actions missing network retry capabilities
- Implement exponential backoff, custom timeouts, and flexible error handling
- Add max-retries input parameter to all network-dependent actions (Node.js, .NET, Python, Go)
- Standardize existing retry implementations to use common-retry utility
- Update action catalog to include new common-retry action (41 total actions)
- Update documentation with retry configuration examples and parameters
- Mark retry logic implementation as complete in TODO.md roadmap

* feat: enhance Node.js support with Corepack and Bun

- Add Corepack support for automatic package manager version management
- Add Bun package manager support across all Node.js actions
- Improve Yarn Berry/PnP support with .yarnrc.yml detection
- Add Node.js feature detection (ESM, TypeScript, frameworks)
- Update package manager detection priority and lockfile support
- Enhance caching with package-manager-specific keys
- Update eslint, prettier, and biome actions for multi-package-manager support

* fix: resolve critical runtime issues across multiple actions

- Fix token validation by removing ineffective literal string comparisons
- Add missing @microsoft/eslint-formatter-sarif dependency for SARIF output
- Fix Bash variable syntax errors in username and changelog length checks
- Update Dockerfile version regex to handle tags with suffixes (e.g., -alpine)
- Simplify version selection logic with single grep command
- Fix command execution in retry action with proper bash -c wrapper
- Correct step output references using .outcome instead of .outputs.outcome
- Add missing step IDs for version detection actions
- Include go.mod in cache key files for accurate invalidation
- Require minor version in all version regex patterns
- Improve Bun installation security by verifying script before execution
- Replace bc with sort -V for portable PHP version comparison
- Remove non-existent pre-commit output references

These fixes ensure proper runtime behavior, improved security, and better
cross-platform compatibility across all affected actions.

* fix: resolve critical runtime and security issues across actions

- Fix biome-fix files_changed calculation using git diff instead of git status delta
- Fix compress-images output description and add absolute path validation
- Remove csharp-publish token default and fix token fallback in push commands
- Add @microsoft/eslint-formatter-sarif to all package managers in eslint-check
- Fix eslint-check command syntax by using variable assignment
- Improve node-setup Bun installation security and remove invalid frozen-lockfile flag
- Fix pre-commit token validation by removing ineffective literal comparison
- Fix prettier-fix token comparison and expand regex for all GitHub token types
- Add version-file-parser regex validation safety and fix csproj wildcard handling

These fixes address security vulnerabilities, runtime errors, and functional issues
to ensure reliable operation across all affected GitHub Actions.

* feat: enhance Docker actions with advanced multi-architecture support

Major enhancement to Docker build and publish actions with comprehensive
multi-architecture capabilities and enterprise-grade features.

Added features:
- Advanced buildx configuration (version control, cache modes, build contexts)
- Auto-detect platforms for dynamic architecture discovery
- Performance optimizations with enhanced caching strategies
- Security scanning with Trivy and image signing with Cosign
- SBOM generation in multiple formats with validation
- Verbose logging and dry-run modes for debugging
- Platform-specific build args and fallback mechanisms

Enhanced all Docker actions:
- docker-build: Core buildx features and multi-arch support
- docker-publish-gh: GitHub Packages with security features
- docker-publish-hub: Docker Hub with scanning and signing
- docker-publish: Orchestrator with unified configuration

Updated documentation across all modified actions.

* fix: resolve documentation generation placeholder issue

Fixed Makefile and package.json to properly replace placeholder tokens in generated documentation, ensuring all README files show correct repository paths instead of ***PROJECT***@***VERSION***.

* chore: simplify github token validation
* chore(lint): optional yamlfmt, config and fixes
* feat: use relative `uses` names

* feat: comprehensive testing infrastructure and Python validation system

- Migrate from tests/ to _tests/ directory structure with ShellSpec framework
- Add comprehensive validation system with Python-based input validation
- Implement dual testing approach (ShellSpec + pytest) for complete coverage
- Add modern Python tooling (uv, ruff, pytest-cov) and dependencies
- Create centralized validation rules with automatic generation system
- Update project configuration and build system for new architecture
- Enhance documentation to reflect current testing capabilities

This establishes a robust foundation for action validation and testing
with extensive coverage across all GitHub Actions in the repository.

* chore: remove Dockerfile for now
* chore: code review fixes

* feat: comprehensive GitHub Actions restructuring and tooling improvements

This commit represents a major restructuring of the GitHub Actions monorepo
with improved tooling, testing infrastructure, and comprehensive PR #186
review implementation.

## Major Changes

### 🔧 Development Tooling & Configuration
- **Shellcheck integration**: Exclude shellspec test files from linting
  - Updated .pre-commit-config.yaml to exclude _tests/*.sh from shellcheck/shfmt
  - Modified Makefile shellcheck pattern to skip shellspec files
  - Updated CLAUDE.md documentation with proper exclusion syntax
- **Testing infrastructure**: Enhanced Python validation framework
  - Fixed nested if statements and boolean parameter issues in validation.py
  - Improved code quality with explicit keyword arguments
  - All pre-commit hooks now passing

### 🏗️ Project Structure & Documentation
- **Added Serena AI integration** with comprehensive project memories:
  - Project overview, structure, and technical stack documentation
  - Code style conventions and completion requirements
  - Comprehensive PR #186 review analysis and implementation tracking
- **Enhanced configuration**: Updated .gitignore, .yamlfmt.yml, pyproject.toml
- **Improved testing**: Added integration workflows and enhanced test specs

### 🚀 GitHub Actions Improvements (30+ actions updated)
- **Centralized validation**: Updated 41 validation rule files
- **Enhanced actions**: Improvements across all action categories:
  - Setup actions (node-setup, version detectors)
  - Utility actions (version-file-parser, version-validator)
  - Linting actions (biome, eslint, terraform-lint-fix major refactor)
  - Build/publish actions (docker-build, npm-publish, csharp-*)
  - Repository management actions

### 📝 Documentation Updates
- **README consistency**: Updated version references across action READMEs
- **Enhanced documentation**: Improved action descriptions and usage examples
- **CLAUDE.md**: Updated with current tooling and best practices

## Technical Improvements
- **Security enhancements**: Input validation and sanitization improvements
- **Performance optimizations**: Streamlined action logic and dependencies
- **Cross-platform compatibility**: Better Windows/macOS/Linux support
- **Error handling**: Improved error reporting and user feedback

## Files Changed
- 100 files changed
- 13 new Serena memory files documenting project state
- 41 validation rules updated for consistency
- 30+ GitHub Actions and READMEs improved
- Core tooling configuration enhanced

* feat: comprehensive GitHub Actions improvements and PR review fixes

Major Infrastructure Improvements:
- Add comprehensive testing framework with 17+ ShellSpec validation tests
- Implement Docker-based testing tools with automated test runner
- Add CodeRabbit configuration for automated code reviews
- Restructure documentation and memory management system
- Update validation rules for 25+ actions with enhanced input validation
- Modernize CI/CD workflows and testing infrastructure

Critical PR Review Fixes (All Issues Resolved):
- Fix double caching in node-setup (eliminate redundant cache operations)
- Optimize shell pipeline in version-file-parser (single awk vs complex pipeline)
- Fix GitHub expression interpolation in prettier-check cache keys
- Resolve terraform command order issue (validation after setup)
- Add missing flake8-sarif dependency for Python SARIF output
- Fix environment variable scope in pr-lint (export to GITHUB_ENV)

Performance & Reliability:
- Eliminate duplicate cache operations saving CI time
- Improve shell script efficiency with optimized parsing
- Fix command execution dependencies preventing runtime failures
- Ensure proper dependency installation for all linting tools
- Resolve workflow conditional logic issues

Security & Quality:
- All input validation rules updated with latest security patterns
- Cross-platform compatibility improvements maintained
- Comprehensive error handling and retry logic preserved
- Modern development tooling and best practices adopted

This commit addresses 100% of actionable feedback from PR review analysis,
implements comprehensive testing infrastructure, and maintains high code
quality standards across all 41 GitHub Actions.

* feat: enhance expression handling and version parsing

- Fix node-setup force-version expression logic for proper empty string handling
- Improve version-file-parser with secure regex validation and enhanced Python detection
- Add CodeRabbit configuration for CalVer versioning and README review guidance

* feat(validate-inputs): implement modular validation system

- Add modular validator architecture with specialized validators
- Implement base validator classes for different input types
- Add validators: boolean, docker, file, network, numeric, security, token, version
- Add convention mapper for automatic input validation
- Add comprehensive documentation for the validation system
- Implement PCRE regex support and injection protection

* feat(validate-inputs): add validation rules for all actions

- Add YAML validation rules for 42 GitHub Actions
- Auto-generated rules with convention mappings
- Include metadata for validation coverage and quality indicators
- Mark rules as auto-generated to prevent manual edits

* test(validate-inputs): add comprehensive test suite for validators

- Add unit tests for all validator modules
- Add integration tests for the validation system
- Add fixtures for version test data
- Test coverage for boolean, docker, file, network, numeric, security, token, and version validators
- Add tests for convention mapper and registry

* feat(tools): add validation scripts and utilities

- Add update-validators.py script for auto-generating rules
- Add benchmark-validator.py for performance testing
- Add debug-validator.py for troubleshooting
- Add generate-tests.py for test generation
- Add check-rules-not-manually-edited.sh for CI validation
- Add fix-local-action-refs.py tool for fixing action references

* feat(actions): add CustomValidator.py files for specialized validation

- Add custom validators for actions requiring special validation logic
- Implement validators for docker, go, node, npm, php, python, terraform actions
- Add specialized validation for compress-images, common-cache, common-file-check
- Implement version detection validators with language-specific logic
- Add validation for build arguments, architectures, and version formats

* test: update ShellSpec test framework for Python validation

- Update all validation.spec.sh files to use Python validator
- Add shared validation_core.py for common test utilities
- Remove obsolete bash validation helpers
- Update test output expectations for Python validator format
- Add codeql-analysis test suite
- Refactor framework utilities for Python integration
- Remove deprecated test files

* feat(actions): update action.yml files to use validate-inputs

- Replace inline bash validation with validate-inputs action
- Standardize validation across all 42 actions
- Add new codeql-analysis action
- Update action metadata and branding
- Add validation step as first step in composite actions
- Maintain backward compatibility with existing inputs/outputs

* ci: update GitHub workflows for enhanced security and testing

- Add new codeql-new.yml workflow
- Update security scanning workflows
- Enhance dependency review configuration
- Update test-actions workflow for new validation system
- Improve workflow permissions and security settings
- Update action versions to latest SHA-pinned releases

* build: update build configuration and dependencies

- Update Makefile with new validation targets
- Add Python dependencies in pyproject.toml
- Update npm dependencies and scripts
- Enhance Docker testing tools configuration
- Add targets for validator updates and local ref fixes
- Configure uv for Python package management

* chore: update linting and documentation configuration

- Update EditorConfig settings for consistent formatting
- Enhance pre-commit hooks configuration
- Update prettier and yamllint ignore patterns
- Update gitleaks security scanning rules
- Update CodeRabbit review configuration
- Update CLAUDE.md with latest project standards and rules

* docs: update Serena memory files and project metadata

- Remove obsolete PR-186 memory files
- Update project overview with current architecture
- Update project structure documentation
- Add quality standards and communication guidelines
- Add modular validator architecture documentation
- Add shellspec testing framework documentation
- Update project.yml with latest configuration

* feat: moved rules.yml to same folder as action, fixes

* fix(validators): correct token patterns and fix validator bugs

- Fix GitHub classic PAT pattern: ghp_ + 36 chars = 40 total
- Fix GitHub fine-grained PAT pattern: github_pat_ + 71 chars = 82 total
- Initialize result variable in convention_mapper to prevent UnboundLocalError
- Fix empty URL validation in network validator to return error
- Add GitHub expression check to docker architectures validator
- Update docker-build CustomValidator parallel-builds max to 16

* test(validators): fix test fixtures and expectations

- Fix token lengths in test data: github_pat 71 chars, ghp/gho 36 chars
- Update integration tests with correct token lengths
- Fix file validator test to expect absolute paths rejected for security
- Rename TestGenerator import to avoid pytest collection warning
- Update custom validator tests with correct input names
- Change docker-build tests: platforms->architectures, tags->tag
- Update docker-publish tests to match new registry enum validation

* test(shellspec): fix token lengths in test helpers and specs

- Fix default token lengths in spec_helper.sh to use correct 40-char format
- Update csharp-publish default tokens in 4 locations
- Update codeql-analysis default tokens in 2 locations
- Fix codeql-analysis test tokens to correct lengths (40 and 82 chars)
- Fix npm-publish fine-grained token test to use 82-char format

* feat(actions): add permissions documentation and environment variable usage

- Add permissions comments to all action.yml files documenting required GitHub permissions
- Convert direct input usage to environment variables in shell steps for security
- Add validation steps with proper error handling
- Update input descriptions and add security notes where applicable
- Ensure all actions follow consistent patterns for input validation

* chore(workflows): update GitHub Actions workflow versions

- Update workflow action versions to latest
- Improve workflow consistency and maintainability

* docs(security): add comprehensive security policy

- Document security features and best practices
- Add vulnerability reporting process
- Include audit history and security testing information

* docs(memory): add GitHub workflow reference documentation

- Add GitHub Actions workflow commands reference
- Add GitHub workflow expressions guide
- Add secure workflow usage patterns and best practices

* chore: token optimization, code style conventions
* chore: cr fixes
* fix: trivy reported Dockerfile problems
* fix(security): more security fixes
* chore: dockerfile and make targets for publishing
* fix(ci): add creds to test-actions workflow
* fix: security fix and checkout step to codeql-new
* chore: test fixes
* fix(security): codeql detected issues
* chore: code review fixes, ReDos protection
* style: apply MegaLinter fixes
* fix(ci): missing packages read permission
* fix(ci): add missing working directory setting
* chore: linting, add validation-regex to use regex_pattern
* chore: code review fixes
* chore(deps): update actions
* fix(security): codeql fixes
* chore(cr): apply cr comments
* chore: improve POSIX compatibility
* chore(cr): apply cr comments
* fix: codeql warning in Dockerfile, build failures
* chore(cr): apply cr comments
* fix: docker-testing-tools/Dockerfile
* chore(cr): apply cr comments
* fix(docker): update testing-tools image for GitHub Actions compatibility
* chore(cr): apply cr comments
* feat: add more tests, fix issues
* chore: fix codeql issues, update actions
* chore(cr): apply cr comments
* fix: integration tests
* chore: deduplication and fixes
* style: apply MegaLinter fixes
* chore(cr): apply cr comments
* feat: dry-run mode for generate-tests
* fix(ci): kcov installation
* chore(cr): apply cr comments
* chore(cr): apply cr comments
* chore(cr): apply cr comments
* chore(cr): apply cr comments, simplify action testing, use uv
* fix: run-tests.sh action counting
* chore(cr): apply cr comments
* chore(cr): apply cr comments
2025-10-14 13:37:58 +03:00
2024-11-10 11:34:15 +02:00

ivuorinen/actions - My Reusable GitHub Actions and Workflows

Overview

This repository contains a collection of reusable GitHub Actions designed to streamline CI/CD processes and ensure code quality.

Each action is fully self-contained and can be used independently in any GitHub repository.

Key Features

  • Production-Ready Actions covering setup, linting, building, testing, and deployment
  • Self-Contained Design - each action works independently without dependencies
  • External Usage Ready - use any action with pinned refs: ivuorinen/actions/action-name@2025-01-15 or @<commit-sha> for supply-chain security
  • Multi-Language Support including Node.js, PHP, Python, Go, C#, and more
  • Standardized Patterns with consistent error handling and input/output interfaces
  • Comprehensive Testing with dual testing framework (ShellSpec + pytest)
  • Modular Build System using Makefile for development and maintenance

📚 Action Catalog

This repository contains 43 reusable GitHub Actions for CI/CD automation.

Quick Reference (43 Actions)

Icon Action Category Description Key Features
📦 ansible-lint-fix Linting Lints and fixes Ansible playbooks, commits changes, and uplo... Token auth, Outputs
biome-check Linting Run Biome check on the repository Token auth, Outputs
biome-fix Linting Run Biome fix on the repository Token auth, Outputs
🛡️ codeql-analysis Other Run CodeQL security analysis for a single language with conf... Auto-detection, Token auth, Outputs
💾 common-cache Repository Standardized caching strategy for all actions Caching, Outputs
📦 common-file-check Repository A reusable action to check if a specific file or type of fil... Outputs
🔄 common-retry Repository Standardized retry utility for network operations and flaky ... Outputs
🖼️ compress-images Repository Compress images on demand (workflow_dispatch), and at 11pm e... Token auth, Outputs
📝 csharp-build Build Builds and tests C# projects. Auto-detection, Outputs
📝 csharp-lint-check Linting Runs linters like StyleCop or dotnet-format for C# code styl... Auto-detection, Outputs
📦 csharp-publish Publishing Publishes a C# project to GitHub Packages. Auto-detection, Token auth, Outputs
📦 docker-build Build Builds a Docker image for multiple architectures with enhanc... Caching, Auto-detection, Token auth, Outputs
☁️ docker-publish Publishing Publish a Docker image to GitHub Packages and Docker Hub. Auto-detection, Outputs
📦 docker-publish-gh Publishing Publishes a Docker image to GitHub Packages with advanced se... Caching, Auto-detection, Token auth, Outputs
📦 docker-publish-hub Publishing Publishes a Docker image to Docker Hub with enhanced securit... Caching, Auto-detection, Outputs
📝 dotnet-version-detect Setup Detects .NET SDK version from global.json or defaults to a s... Auto-detection, Outputs
eslint-check Linting Run ESLint check on the repository with advanced configurati... Caching, Outputs
📝 eslint-fix Linting Fixes ESLint violations in a project. Token auth, Outputs
🏷️ github-release Repository Creates a GitHub release with a version and changelog. Outputs
📦 go-build Build Builds the Go project. Caching, Auto-detection, Outputs
📝 go-lint Linting Run golangci-lint with advanced configuration, caching, and ... Caching, Outputs
📝 go-version-detect Setup Detects the Go version from the project's go.mod file or def... Auto-detection, Outputs
🖥️ node-setup Setup Sets up Node.js env with advanced version management, cachin... Caching, Auto-detection, Token auth, Outputs
📦 npm-publish Publishing Publishes the package to the NPM registry with configurable ... Outputs
🖥️ php-composer Testing Runs Composer install on a repository with advanced caching ... Auto-detection, Token auth, Outputs
💻 php-laravel-phpunit Testing Setup PHP, install dependencies, generate key, create databa... Auto-detection, Token auth, Outputs
php-tests Testing Run PHPUnit tests on the repository Token auth, Outputs
📝 php-version-detect Setup Detects the PHP version from the project's composer.json, ph... Auto-detection, Outputs
pr-lint Linting Runs MegaLinter against pull requests Caching, Auto-detection, Token auth, Outputs
📦 pre-commit Linting Runs pre-commit on the repository and pushes the fixes back ... Auto-detection, Token auth, Outputs
prettier-check Linting Run Prettier check on the repository with advanced configura... Caching, Outputs
📝 prettier-fix Linting Run Prettier to fix code style violations Token auth, Outputs
📝 python-lint-fix Linting Lints and fixes Python files, commits changes, and uploads S... Caching, Auto-detection, Token auth, Outputs
📝 python-version-detect Setup Detects Python version from project configuration files or d... Auto-detection, Outputs
📝 python-version-detect-v2 Setup Detects Python version from project configuration files usin... Auto-detection, Outputs
📦 release-monthly Repository Creates a release for the current month, incrementing patch ... Token auth, Outputs
🔀 set-git-config Setup Sets Git configuration for actions. Token auth, Outputs
📦 stale Repository A GitHub Action to close stale issues and pull requests. Token auth, Outputs
🏷️ sync-labels Repository Sync labels from a YAML file to a GitHub repository Token auth, Outputs
🖥️ terraform-lint-fix Linting Lints and fixes Terraform files with advanced validation and... Token auth, Outputs
🛡️ validate-inputs Other Centralized Python-based input validation for GitHub Actions... Token auth, Outputs
📦 version-file-parser Utilities Universal parser for common version detection files (.tool-v... Auto-detection, Outputs
version-validator Utilities Validates and normalizes version strings using customizable ... Auto-detection, Outputs

Actions by Category

🔧 Setup (7 actions)

Action Description Languages Features
📝 dotnet-version-detect Detects .NET SDK version from global.json or defau... C#, .NET Auto-detection, Outputs
📝 go-version-detect Detects the Go version from the project's go.mod f... Go Auto-detection, Outputs
🖥️ node-setup Sets up Node.js env with advanced version manageme... Node.js, JavaScript, TypeScript Caching, Auto-detection, Token auth, Outputs
📝 php-version-detect Detects the PHP version from the project's compose... PHP Auto-detection, Outputs
📝 python-version-detect Detects Python version from project configuration ... Python Auto-detection, Outputs
📝 python-version-detect-v2 Detects Python version from project configuration ... Python Auto-detection, Outputs
🔀 set-git-config Sets Git configuration for actions. - Token auth, Outputs

🛠️ Utilities (2 actions)

Action Description Languages Features
📦 version-file-parser Universal parser for common version detection file... - Auto-detection, Outputs
version-validator Validates and normalizes version strings using cus... - Auto-detection, Outputs

📝 Linting (13 actions)

Action Description Languages Features
📦 ansible-lint-fix Lints and fixes Ansible playbooks, commits changes... Ansible, YAML Token auth, Outputs
biome-check Run Biome check on the repository JavaScript, TypeScript, JSON Token auth, Outputs
biome-fix Run Biome fix on the repository JavaScript, TypeScript, JSON Token auth, Outputs
📝 csharp-lint-check Runs linters like StyleCop or dotnet-format for C#... C#, .NET Auto-detection, Outputs
eslint-check Run ESLint check on the repository with advanced c... JavaScript, TypeScript Caching, Outputs
📝 eslint-fix Fixes ESLint violations in a project. JavaScript, TypeScript Token auth, Outputs
📝 go-lint Run golangci-lint with advanced configuration, cac... Go Caching, Outputs
pr-lint Runs MegaLinter against pull requests - Caching, Auto-detection, Token auth, Outputs
📦 pre-commit Runs pre-commit on the repository and pushes the f... - Auto-detection, Token auth, Outputs
prettier-check Run Prettier check on the repository with advanced... JavaScript, TypeScript, Markdown, YAML, JSON Caching, Outputs
📝 prettier-fix Run Prettier to fix code style violations JavaScript, TypeScript, Markdown, YAML, JSON Token auth, Outputs
📝 python-lint-fix Lints and fixes Python files, commits changes, and... Python Caching, Auto-detection, Token auth, Outputs
🖥️ terraform-lint-fix Lints and fixes Terraform files with advanced vali... Terraform, HCL Token auth, Outputs

🧪 Testing (3 actions)

Action Description Languages Features
🖥️ php-composer Runs Composer install on a repository with advance... PHP Auto-detection, Token auth, Outputs
💻 php-laravel-phpunit Setup PHP, install dependencies, generate key, cre... PHP, Laravel Auto-detection, Token auth, Outputs
php-tests Run PHPUnit tests on the repository PHP Token auth, Outputs

🏗️ Build (3 actions)

Action Description Languages Features
📝 csharp-build Builds and tests C# projects. C#, .NET Auto-detection, Outputs
📦 docker-build Builds a Docker image for multiple architectures w... Docker Caching, Auto-detection, Token auth, Outputs
📦 go-build Builds the Go project. Go Caching, Auto-detection, Outputs

🚀 Publishing (5 actions)

Action Description Languages Features
📦 csharp-publish Publishes a C# project to GitHub Packages. C#, .NET Auto-detection, Token auth, Outputs
☁️ docker-publish Publish a Docker image to GitHub Packages and Dock... Docker Auto-detection, Outputs
📦 docker-publish-gh Publishes a Docker image to GitHub Packages with a... Docker Caching, Auto-detection, Token auth, Outputs
📦 docker-publish-hub Publishes a Docker image to Docker Hub with enhanc... Docker Caching, Auto-detection, Outputs
📦 npm-publish Publishes the package to the NPM registry with con... Node.js, npm Outputs

📦 Repository (8 actions)

Action Description Languages Features
💾 common-cache Standardized caching strategy for all actions - Caching, Outputs
📦 common-file-check A reusable action to check if a specific file or t... - Outputs
🔄 common-retry Standardized retry utility for network operations ... - Outputs
🖼️ compress-images Compress images on demand (workflow_dispatch), and... - Token auth, Outputs
🏷️ github-release Creates a GitHub release with a version and change... - Outputs
📦 release-monthly Creates a release for the current month, increment... - Token auth, Outputs
📦 stale A GitHub Action to close stale issues and pull req... - Token auth, Outputs
🏷️ sync-labels Sync labels from a YAML file to a GitHub repositor... - Token auth, Outputs

Feature Matrix

Action Caching Auto-detection Token auth Outputs
ansible-lint-fix - -
biome-check - -
biome-fix - -
codeql-analysis -
common-cache - -
common-file-check - - -
common-retry - - -
compress-images - -
csharp-build - -
csharp-lint-check - -
csharp-publish -
docker-build
docker-publish - -
docker-publish-gh
docker-publish-hub -
dotnet-version-detect - -
eslint-check - -
eslint-fix - -
github-release - - -
go-build -
go-lint - -
go-version-detect - -
node-setup
npm-publish - - -
php-composer -
php-laravel-phpunit -
php-tests - -
php-version-detect - -
pr-lint
pre-commit -
prettier-check - -
prettier-fix - -
python-lint-fix
python-version-detect - -
python-version-detect-v2 - -
release-monthly - -
set-git-config - -
stale - -
sync-labels - -
terraform-lint-fix - -
validate-inputs - -
version-file-parser - -
version-validator - -

Language Support

Language Actions
.NET csharp-build, csharp-lint-check, csharp-publish, dotnet-version-detect
Ansible ansible-lint-fix
C# csharp-build, csharp-lint-check, csharp-publish, dotnet-version-detect
Docker docker-build, docker-publish, docker-publish-gh, docker-publish-hub
Go go-build, go-lint, go-version-detect
HCL terraform-lint-fix
JSON biome-check, biome-fix, prettier-check, prettier-fix
JavaScript biome-check, biome-fix, eslint-check, eslint-fix, node-setup, prettier-check, prettier-fix
Laravel php-laravel-phpunit
Markdown prettier-check, prettier-fix
Node.js node-setup, npm-publish
PHP php-composer, php-laravel-phpunit, php-tests, php-version-detect
Python python-lint-fix, python-version-detect, python-version-detect-v2
Terraform terraform-lint-fix
TypeScript biome-check, biome-fix, eslint-check, eslint-fix, node-setup, prettier-check, prettier-fix
YAML ansible-lint-fix, prettier-check, prettier-fix
npm npm-publish

Action Usage

All actions can be used independently in your workflows:

# Recommended: Use pinned refs for supply-chain security
- uses: ivuorinen/actions/action-name@2025-01-15 # Date-based tag
  with:
    # action-specific inputs

# Alternative: Use commit SHA for immutability
- uses: ivuorinen/actions/action-name@abc123def456 # Full commit SHA
  with:
    # action-specific inputs

Security Note: Always pin to specific tags or commit SHAs instead of @main to ensure reproducible workflows and supply-chain integrity.


Usage

Using Actions Externally

All actions in this repository can be used in your workflows like any other GitHub Action.

⚠️ Security Best Practice: Always pin actions to specific tags or commit SHAs instead of @main to ensure:

  • Reproducibility: Workflows behave consistently over time
  • Supply-chain integrity: Protection against unexpected changes or compromises
  • Immutability: Reference exact versions that cannot be modified
steps:
  - name: Setup Node.js with Auto-Detection
    uses: ivuorinen/actions/node-setup@2025-01-15 # Date-based tag
    with:
      default-version: '20'

  - name: Detect PHP Version
    uses: ivuorinen/actions/php-version-detect@abc123def456 # Commit SHA
    with:
      default-version: '8.2'

  - name: Universal Version Parser
    uses: ivuorinen/actions/version-file-parser@2025-01-15
    with:
      language: 'python'
      tool-versions-key: 'python'
      dockerfile-image: 'python'
      version-file: '.python-version'
      default-version: '3.12'

Actions achieve modularity through composition:

steps:
  - name: Parse Version
    id: parse-version
    uses: ivuorinen/actions/version-file-parser@2025-01-15
    with:
      language: 'node'
      tool-versions-key: 'nodejs'
      dockerfile-image: 'node'
      version-file: '.nvmrc'
      default-version: '20'

  - name: Setup Node.js
    uses: actions/setup-node@sha
    with:
      node-version: ${{ steps.parse-version.outputs.detected-version }}

Development

This repository uses a Makefile-based build system for development tasks:

# Full workflow - docs, format, and lint
make all

# Individual operations
make docs          # Generate documentation for all actions
make format        # Format all files (markdown, YAML, JSON)
make lint          # Run all linters
make check         # Quick syntax and tool checks

# Development workflow
make dev           # Format then lint (good for development)
make ci            # CI workflow - check, docs, lint

Python Development

For Python development (validation system), use these specialized commands:

# Python development workflow
make dev-python         # Format, lint, and test Python code
make test-python        # Run Python unit tests
make test-python-coverage  # Run tests with coverage reporting

# Individual Python operations
make format-python      # Format Python files with ruff
make lint-python        # Lint Python files with ruff

The Python validation system (validate-inputs/) includes:

  • CalVer and SemVer Support: Flexible version validation for different schemes
  • Comprehensive Test Suite: Extensive test cases covering all validation types
  • Security Features: Command injection and path traversal protection
  • Performance: Efficient Python regex engine vs multiple bash processes

Testing

# Run all tests (Python + GitHub Actions)
make test

# Run specific test types
make test-python           # Python validation tests only
make test-actions          # GitHub Actions tests only
make test-action ACTION=node-setup  # Test specific action

# Coverage reporting
make test-coverage         # All tests with coverage
make test-python-coverage  # Python tests with coverage

For detailed development guidelines, see CLAUDE.md.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Description
No description provided
Readme 3.1 MiB
Languages
Python 72.9%
Shell 22.3%
Makefile 2.7%
JavaScript 1.1%
Dockerfile 1%