Files
PSMinIO/docs/POWERSHELL-GALLERY-RELEASE.md
PSMinIO Developer 90c64d3237 Major project reorganization: Centralized version management and improved structure
- 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
2025-07-11 11:53:08 -04:00

5.5 KiB

PowerShell Gallery Release Guide for PSMinIO

This guide walks you through publishing PSMinIO to the PowerShell Gallery.

Prerequisites

  • 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
# 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

  1. Check the PowerShell Gallery: https://www.powershellgallery.com/packages/PSMinIO
  2. 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.dll
  • bin\Minio.dll
  • types\PSMinIO.Types.ps1xml
  • types\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

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:

  1. Increment version number appropriately
  2. Update release notes
  3. Follow this release guide
  4. 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!