mirror of
https://github.com/Grace-Solutions/PSMinIO.git
synced 2026-08-05 11:07:41 +00:00
90c64d3237
- Reorganized project structure with proper directory separation: * All scripts moved to scripts/ directory (including examples) * All documentation moved to docs/ directory (except README.md) * Centralized version management in Version.ps1 - Implemented centralized version management system: * Version.ps1 provides single source of truth for version information * Automatic yyyy.MM.dd.HHmm versioning based on build time * scripts/Update-Version.ps1 updates all version references * src/Properties/AssemblyInfo.cs for assembly version information - Enhanced build system: * scripts/Build.ps1 - Full build with validation and packaging * scripts/Quick-Build.ps1 - Fast build handling file locking issues * Removed automatic copy from project file to avoid locking * Integrated version updates into build process - Updated PowerShell Gallery publishing: * scripts/Publish-PSMinIOToGallery.ps1 updated for new structure * docs/POWERSHELL-GALLERY-RELEASE.md comprehensive publishing guide * Module manifest updated with proper metadata and release notes - Updated all documentation and examples: * README.md updated with PowerShell Gallery installation * All example scripts updated with correct import paths * scripts/examples/README.md updated for new location * docs/PROJECT-STRUCTURE.md documents new organization - Version updated to 2025.07.11.1151 with centralized management - All import paths corrected for new structure - Professional project organization following PowerShell best practices
5.5 KiB
5.5 KiB
PowerShell Gallery Release Guide for PSMinIO
This guide walks you through publishing PSMinIO to the PowerShell Gallery.
Prerequisites
1. PowerShell Gallery Account
- Create an account at PowerShell Gallery
- Generate an API key from your account settings
- Keep your API key secure and never commit it to source control
2. Required PowerShell Modules
# Install required modules if not already present
Install-Module -Name PowerShellGet -Force -AllowClobber
Install-Module -Name PackageManagement -Force -AllowClobber
3. Verify Module Build
Ensure the module has been built and all files are present:
# Build the module (if needed)
dotnet build PSMinIO.csproj --configuration Release
# Verify module structure
Get-ChildItem .\Module\PSMinIO\ -Recurse
Pre-Release Checklist
✅ Module Validation
- Module manifest (PSMinIO.psd1) is valid
- All required assemblies are present (PSMinIO.dll, Minio.dll)
- Type and format files are included
- Version number follows semantic versioning (2.0.0)
- Release notes are comprehensive and accurate
- All cmdlets are properly exported
✅ Documentation
- README.md is updated with latest features
- USAGE.md includes comprehensive examples
- Examples directory contains working scripts
- Release notes document all changes
- License file is present and correct
✅ Testing
- Module imports without errors
- All exported cmdlets are available
- Basic functionality tests pass
- Examples run successfully
- No Write-Host usage in production code
✅ Repository
- All changes are committed to Git
- Repository is pushed to GitHub
- Tags are created for the release
- GitHub release is created (optional but recommended)
Release Process
Step 1: Validate Everything
Run the automated validation:
# Test the release process without actually publishing
.\Publish-PSMinIOToGallery.ps1 -WhatIf
Step 2: Publish to PowerShell Gallery
# Publish with your API key
.\Publish-PSMinIOToGallery.ps1 -NuGetApiKey "YOUR_API_KEY_HERE"
# Or let the script prompt for the API key securely
.\Publish-PSMinIOToGallery.ps1
Step 3: Verify Publication
- Check the PowerShell Gallery: https://www.powershellgallery.com/packages/PSMinIO
- Test installation from the gallery:
Install-Module -Name PSMinIO -Force Import-Module PSMinIO Get-Command -Module PSMinIO
Post-Release Tasks
1. Update Documentation
- Update README.md with installation instructions from PowerShell Gallery
- Add PowerShell Gallery badge to README
- Update any version references in documentation
2. GitHub Release
Create a GitHub release with:
- Tag matching the module version (v2.0.0)
- Release title: "PSMinIO v2.0.0 - Major Enhancement Release"
- Copy release notes from the module manifest
- Attach any relevant assets
3. Announce the Release
- Update project documentation
- Notify users through appropriate channels
- Consider creating a blog post or announcement
Troubleshooting
Common Issues
1. Module Validation Errors
# Check manifest syntax
Test-ModuleManifest -Path .\Module\PSMinIO\PSMinIO.psd1
2. Missing Dependencies
Ensure all required files are in the module directory:
bin\PSMinIO.dllbin\Minio.dlltypes\PSMinIO.Types.ps1xmltypes\PSMinIO.Format.ps1xml
3. API Key Issues
- Verify your API key is correct
- Check that your PowerShell Gallery account has publishing permissions
- Ensure the API key hasn't expired
4. Version Conflicts
If the version already exists:
- Increment the version number in PSMinIO.psd1
- Rebuild the module
- Commit and push changes
Getting Help
PowerShell Gallery Support
- Documentation: https://docs.microsoft.com/en-us/powershell/gallery/
- Issues: https://github.com/PowerShell/PowerShellGallery/issues
Module-Specific Issues
- Check the validation output from the publish script
- Review the module manifest for syntax errors
- Ensure all dependencies are properly referenced
Security Considerations
API Key Management
- Never commit API keys to source control
- Use environment variables or secure prompts
- Rotate API keys regularly
- Limit API key permissions to publishing only
Module Security
- All assemblies are signed and from trusted sources
- No malicious code or backdoors
- Dependencies are from official NuGet packages
- Code has been reviewed for security issues
Version Management
Semantic Versioning
PSMinIO follows semantic versioning (MAJOR.MINOR.PATCH):
- MAJOR: Breaking changes
- MINOR: New features, backward compatible
- PATCH: Bug fixes, backward compatible
Current Release: v2.0.0
This is a major release with significant new features and improvements:
- Complete Get-MinIOObject implementation
- Enhanced directory management
- Advanced chunked operations
- Comprehensive documentation and examples
Next Release Planning
Future releases will follow the same process:
- Increment version number appropriately
- Update release notes
- Follow this release guide
- Publish to PowerShell Gallery
Success Metrics
After release, monitor:
- Download statistics on PowerShell Gallery
- User feedback and issues
- GitHub stars and forks
- Community adoption and usage
The PSMinIO module is now ready for enterprise use with professional-grade functionality and comprehensive documentation!