🩹[Patch]: Workflow improvements (#55)
This pull request introduces several significant improvements to the GitHub Actions workflows, action implementation, and supporting test infrastructure. The most important changes include a complete overhaul of the release automation, enhancements to the action's prescript functionality, updates to workflow dependencies for improved security and reproducibility, and expanded test scripts for better validation and maintainability.
- Fixes #54
Workflow and Release Automation Updates:
-
Replaces
.github/workflows/Auto-Release.ymland.github/release.ymlwith a new.github/workflows/Release.ymlworkflow that is more targeted, triggers only on relevant changes, and uses a pinned version of thePSModule/Release-GHRepositoryaction for deterministic releases. -
Changes Dependabot update schedule from weekly to daily and introduces a cooldown period, improving dependency management responsiveness.
Action Implementation and Security:
- Refactors the action's execution logic to move prescript execution into a dedicated
src/prescript.ps1script, which safely handles both inline scripts and file paths. Updates references inaction.ymlto use this new script and pins all GitHub Actions to specific commit SHAs for security and reproducibility.
Linter and Workflow Improvements:
-
Updates linter workflow to use pinned versions of
actions/checkoutandsuper-linter/super-linter, disables certain validations for performance, and removes the.github/linters/.jscpd.jsonconfiguration file as duplicate code checks are now disabled. -
Adds an exclusion for the
PSAvoidUsingWriteHostrule in PowerShell Script Analyzer configuration, reflecting intentional usage for GitHub Actions output.
Documentation and Test Infrastructure:
-
Enhances the
README.mddocumentation for action inputs and outputs, improving formatting and clarity for users. -
Adds new PowerShell test scripts (
tests/Prescript.ps1,tests/Show-Status.ps1,tests/Test-ActionResults.ps1) to validate prescript execution, action status reporting, and aggregate test results with summary reporting. Updates test configuration to explicitly set code coverage paths.
Detailed list of most important changes:
1. Workflow and Release Automation
- Replaces legacy auto-release workflows with a new, more secure and targeted
Release.ymlworkflow, using pinned action versions and triggering only on relevant file changes. - Dependabot now checks for updates daily with a 7-day cooldown, improving dependency freshness.
2. Action Implementation and Security
- Moves prescript execution to a new
src/prescript.ps1script that safely handles both inline and file-based scripts, and updatesaction.ymlto use this script. - Pins all third-party GitHub Actions in workflows and action implementation to specific commit SHAs for enhanced security and reproducibility.
3. Linter and Workflow Improvements
- Updates linter workflow to use pinned versions and disables duplicate code checks and certain validations for performance; removes
.jscpd.jsonas it is no longer needed. - Excludes
PSAvoidUsingWriteHostin PowerShell linting to accommodate intentional usage in GitHub Actions.
4. Documentation and Test Infrastructure
- Improves documentation for action inputs and outputs in
README.md, providing clearer descriptions and formatting. - Adds new test scripts for prescript validation, action status display, and aggregate action results, and updates test configuration for code coverage.