feat: Azure Blob Storage backup provider - #21
Merged
Conversation
Learn moreAll Green is an AI agent that automatically: ✅ Addresses code review comments ✅ Fixes failing CI checks ✅ Resolves merge conflicts |
There was a problem hiding this comment.
Pull request overview
This pull request adds comprehensive Azure Blob Storage support as a backup destination for MaxBackup. It introduces a provider abstraction layer that enables cloud-based backups while maintaining backward compatibility with local backups.
Changes:
- Implements Azure Blob Storage provider with DPAPI credential encryption for secure storage of account keys
- Adds CLI commands for managing storage providers (add, list, remove, test)
- Integrates cloud backup functionality into BackupExecutor with intelligent change detection and progress reporting
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 17 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/tasks/*.md | Task documentation for Azure Blob Storage implementation and future enhancements |
| docs/AzureBlobStorageProvider.md | Comprehensive design documentation for Azure Blob Storage integration |
| docs/AWSS3Provider.md | Design documentation for future AWS S3 provider |
| MaxBackup.Shared/ProviderConfig.cs | Base provider configuration with validation and Azure-specific config |
| MaxBackup.Shared/CredentialProtection.cs | Windows DPAPI-based encryption for sensitive credentials |
| MaxBackup.ServiceApp/Providers/IStorageProvider.cs | Storage provider abstraction interface |
| MaxBackup.ServiceApp/Providers/AzureBlobStorageProvider.cs | Azure Blob Storage implementation with metadata-based change detection |
| MaxBackup.ServiceApp/Providers/StorageProviderFactory.cs | Factory for creating provider instances from configuration |
| MaxBackup.ServiceApp/BackupExecutor.cs | Enhanced backup logic supporting both local and cloud destinations |
| MaxBackup.ServiceApp/UserBackupWorker.cs | Service integration for provider factory |
| MaxBackup.ServiceApp/ServiceRootConfig.cs | Root configuration including providers array |
| MaxBackup.ServiceApp/BackupJobConfig.cs | Added optional Provider field for cloud backups |
| Max/ProviderCommand.cs | New CLI commands for provider management with interactive TUI |
| Max/JobsCommand.cs | Updated job commands to support provider specification |
| Max/Program.cs | Registered provider command |
| *.csproj | Added required NuGet packages |
| AGENTS.md | Task management guidelines for AI agents |
| .agent/workflows/*.md | Workflow definitions for task management, git operations |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
kellyelton
added a commit
that referenced
this pull request
Jan 13, 2026
…rgumentNullException on null
Removed ValidateProviderName() method from ProviderCommand.cs and replaced with MaxBackup.Shared.ProviderConfig.ValidateNameGetError(). Used fully qualified name to avoid conflict with local ProviderConfig record in JobsCommand.cs.
Add warning about #N syntax being auto-linked by GitHub. Reference other comments by description, not local number.
- Add reply step with templates for accept/reject/defer - Add warning about using hash-number syntax in replies and commits - Remove hardcoded PR number from template - Use description instead of number in commit messages
Address PR review comment #10 - duplicate error message mapping between ProviderCommand.cs and AzureBlobStorageProvider.cs. Created MaxBackup.Shared.AzureErrorHelper with consolidated GetFriendlyErrorMessage() method. Both consumers now delegate to it.
Remove 2-second tolerance from mtime comparison. Since we store the exact mtime in blob metadata ourselves, any tolerance could skip legitimately changed files. Added comment explaining this decision. Resolves PR review comment #13.
Resolves PR review comment #16 - combined provider validation if statements as suggested.
… for asymmetric branches)
kellyelton
force-pushed
the
feature/azure-blob-provider-phase1
branch
from
January 13, 2026 01:38
26766e3 to
bc3f7ed
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Adds complete Azure Blob Storage support as a backup destination. Includes: storage provider infrastructure, CLI commands for managing providers, job integration with cloud destinations, BackupExecutor cloud upload support, progress reporting, and DPAPI credential encryption.