Branch | Windows - PowerShell | Windows - pwsh | Linux | MacOS |
---|---|---|---|---|
main | ||||
Enhancements |
Catesta is a PowerShell module project generator. It uses templates to rapidly scaffold test and build integration for a variety of CI/CD platforms.
Catesta enables you to quickly scaffold a PowerShell module or Vault extension project with proper formatting, test + build automation, CI/CD integration, with just one line of code.
- Catesta scaffolds an empty PowerShell/Vault extension module project that adheres to PowerShell community guidelines.
- It generates a few Pester tests to get you started.
- It makes a build file that analyzes your code for best practices and styling, runs Pester tests, creates PowerShell help, and combines your functions together to build your project for publication.
- It will create resources you need to trigger CI/CD builds for your module.
- When you commit your code to your chosen repository, the build(s) will run, and you can view the results.
Catesta provides the following functions:
Simplify the process of structuring your module so that you can focus on building a great PowerShell module instead of the layout and build requirements.
# Install Catesta from the PowerShell Gallery
Install-Module -Name Catesta -Repository PSGallery -Scope CurrentUser
# Scaffolds a PowerShell module project for integration with AWS CodeBuild.
New-PowerShellProject -CICDChoice 'AWS' -DestinationPath C:\path\AWSProject
# Scaffolds a PowerShell module project for integration with GitHub Actions Workflows.
New-PowerShellProject -CICDChoice 'GitHubActions' -DestinationPath C:\path\GitHubActions
# Scaffolds a PowerShell module project for integration with Azure DevOps Pipelines.
New-PowerShellProject -CICDChoice 'Azure' -DestinationPath C:\path\AzurePipeline
# Scaffolds a PowerShell module project for integration with AppVeyor Projects.
New-PowerShellProject -CICDChoice 'AppVeyor' -DestinationPath C:\path\AppVeyor
# Scaffolds a basic PowerShell module project with no additional extras. You just get a basic PowerShell module construct.
New-PowerShellProject -CICDChoice 'ModuleOnly' -DestinationPath C:\path\ModuleOnly
# Scaffolds a PowerShell SecretManagement vault module project for integration with AWS CodeBuild.
New-VaultProject -CICDChoice 'AWS' -DestinationPath C:\path\AWSProject
# Scaffolds a PowerShell SecretManagement vault module project for integration with GitHub Actions Workflows.
New-VaultProject -CICDChoice 'GitHubActions' -DestinationPath C:\path\GitHubActions
# Scaffolds a PowerShell SecretManagement vault module project for integration with Azure DevOps Pipelines.
New-VaultProject -CICDChoice 'Azure' -DestinationPath C:\path\AzurePipeline
# Scaffolds a PowerShell SecretManagement vault module project for integration with AppVeyor Projects.
New-VaultProject -CICDChoice 'AppVeyor' -DestinationPath C:\path\AppVeyor
# Scaffolds a basic PowerShell SecretManagement vault module project with no additional extras. You just get a basic module construct.
New-VaultProject -CICDChoice 'ModuleOnly' -DestinationPath C:\path\ModuleOnly
- Use Catesta to scaffold your PowerShell/Vault project with your desired CI/CD platform and builds.
- Write your module (the hardest part)
- All build testing can be done locally by navigating to src and running
Invoke-Build
- If using VSCode as your primary editor you can use tasks to perform various local actions
- Examples:
Press Ctrl+P, then type 'task .'
- Runs complete build (all tasks)Press Ctrl+P, then type 'task Test'
- Invokes all Pester Unit TestsPress Ctrl+P, then type 'task Analyze'
- Invokes Script Analyzer checksPress Ctrl+P, then type 'task DevCC'
- Generates generate xml file to graphically display code coverage in VSCode using Coverage Gutters
- Examples:
- All build testing can be done locally by navigating to src and running
- Add any module dependencies to your CI/CD bootstrap file:
- AWS: install_modules.ps1
- GitHub Actions: actions_bootstrap.ps1
- Azure: actions_bootstrap.ps1
- AppVeyor: actions_bootstrap.ps1
- Commit your project to desired repository that is integrated with your CI/CD platform. This will trigger the build actions.
- Evaluate results of your builds and display your README badges proudly!
Additional Catesta documentation that covers the process of CI/CD integration in depth:
- Catesta - AWS Doc
- Catesta - GitHub Actions Doc
- Catesta - Azure Pipelines Doc
- Catesta - AppVeyor Doc
- Catesta - Vault Extension
- Catesta can build two types of module projects:
- PowerShell module layout following PowerShell community practices
- SecretManagement Vault extension module layout following PowerShell community practices
- [Selection] Required CI/CD integration files generated:
- [Selection] Build types for easy cross-platform testing
- Windows PowerShell
- Windows pwsh
- Linux
- MacOS
- InvokeBuild tasks for validation / analysis / test / build automation
- PSScriptAnalyzer code checks
- [Optional] Code Style Enforcement (Stroustrup, OTBS, Allman)
- Pester Tests
- Will run Unit / Infrastructure Tests if available
- Generates Code Coverage Report
- Coverage Gutters support
- [Optional] Create Help using platyPS
- Markdown-based help
- External XML help file generation
- Build and artifact creation
- PSScriptAnalyzer code checks
- [Optional] VSCode editor files
- [Optional] Helpful repository files
- .gitignore
- Project LICENSE (MIT / APACHE / GNU / ISC)
- Changelog
- GitHub community files:
- Code of Conduct
- Contributing guidelines
- Templates
- Issue Bug Report
- Issue Feature Request
- Pull Request
- Pester version selection. Choose between Pester version 5 or Pester version 4 for testing your project.
Jake Morrison - https://www.techthoughts.info/
Additional Catesta documentation that covers PowerShell Vault Extension module projects more in depth:
Reference the Changelog