Skip to content

docs: document why abandoned azure-storage-blob is kept#153

Closed
CybotTM wants to merge 1 commit into
mainfrom
chore/azure-abandoned-note
Closed

docs: document why abandoned azure-storage-blob is kept#153
CybotTM wants to merge 1 commit into
mainfrom
chore/azure-abandoned-note

Conversation

@CybotTM

@CybotTM CybotTM commented Jun 20, 2026

Copy link
Copy Markdown
Member

Follow-up to #152. Documents the microsoft/azure-storage-blob abandonment surfaced by Gemini Code Assist there, so it reads as a known/accepted decision rather than recurring as review noise.

Context

  • microsoft/azure-storage-blob is a direct require in app/full/composer.json — nothing transitive pulls it. It's there so phpbu's Azure Blob sync adapter works.
  • phpbu's Backup\Sync\AzureBlob is hardwired to MicrosoftAzure\Storage\Blob\BlobRestProxy::createBlobService() — there's no abstraction to swap the client.
  • Microsoft abandoned the whole microsoft/azure-storage-* family (abandoned: true, no Composer replacement). The maintained community successor is azure-oss/storage, but it's a different namespace — not drop-in, so the migration has to happen in phpbu upstream first.
  • Real risk is low: the package is a thin Guzzle-based REST wrapper, and Guzzle (its only moving security surface) is patched via Dependabot — see chore(deps): refresh app/full composer.lock #152.

What this PR does

Documentation only — no dependency or behavior change:

  • README sync-targets table: flags the Azure row and adds a note explaining why the abandoned package is kept and pointing Azure-free users to the minimal image.
  • Dockerfile: a comment at the full composer install site so the abandonment warning in the build log reads as intentional.

Not done here (by design)

  • No .trivyignore — Trivy scans CVEs, not abandonment; it never flagged this.
  • No composer audit suppression — CI doesn't run composer audit.
  • Removing the adapter / dropping Azure sync is a separate product decision; this PR keeps current behavior.

An upstream phpbu issue proposing the azure-oss/storage migration is being drafted; its link will be added here once filed.

phpbu's Azure Blob sync adapter (Backup\Sync\AzureBlob) is hardwired to
the MicrosoftAzure\Storage\Blob\BlobRestProxy client from
microsoft/azure-storage-blob, which Microsoft has abandoned with no
Composer replacement. The package is kept intentionally so the full
image retains Azure sync; its only moving security surface (Guzzle) is
patched via Dependabot.

Adds a tracking note to the README sync-targets table and a comment at
the Dockerfile install site so the recurring composer/bot abandonment
advisory reads as a known, accepted decision. Upstream migration to the
maintained azure-oss/storage SDK has to land in phpbu first.

Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval for maintainer PR

All automated quality gates passed. See SECURITY_CONTROLS.md for compensating controls.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds documentation in both the Dockerfile and README.md explaining why the abandoned microsoft/azure-storage-blob package is intentionally retained in the "full" image. The feedback suggests improving the README by adding an active hyperlink to the upstream issue tracker instead of using plain text for "tracked there".

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread README.md
Comment on lines +256 to +258
> surface (Guzzle) is patched via Dependabot. A migration to the maintained `azure-oss/storage`
> SDK has to happen in phpbu upstream first; tracked there. If you don't sync to Azure, use the
> `minimal` image, which doesn't carry this dependency.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The phrase "tracked there" is plain text and lacks a hyperlink. Since the upstream issue is being drafted, it would be highly beneficial to turn this into an active hyperlink to the phpbu issues page (or the specific issue once created) so users can easily navigate to and track the progress.

For example:

> surface (Guzzle) is patched via Dependabot. A migration to the maintained `azure-oss/storage`
> SDK has to happen in phpbu upstream first; [tracked upstream](https://github.com/sebastianfeldmann/phpbu/issues). If you don't sync to Azure, use the
> `minimal` image, which doesn't carry this dependency.

@CybotTM

CybotTM commented Jun 20, 2026

Copy link
Copy Markdown
Member Author

Superseded by #154 — phpbu 6.0.32 migrated its Azure adapter to the maintained azure-oss/storage (sebastianfeldmann/phpbu#402), so the full image now drops the abandoned microsoft/azure-storage-blob entirely rather than documenting it. Closing in favour of the actual fix.

@CybotTM CybotTM closed this Jun 20, 2026
@CybotTM CybotTM deleted the chore/azure-abandoned-note branch June 20, 2026 16:50
@sonarqubecloud

Copy link
Copy Markdown

CybotTM added a commit that referenced this pull request Jun 20, 2026
#154)

Removes the abandoned `microsoft/azure-storage-blob` SDK from the
**full** image by adopting phpbu 6.0.32's migration to the maintained
`azure-oss/storage`.

## Background

`microsoft/azure-storage-blob` is abandoned upstream (Microsoft archived
it; Packagist `abandoned: true`, no replacement). It was a direct
require in the full image only because phpbu's Azure Blob sync adapter
was hardwired to it. That's now fixed at the root: phpbu migrated the
adapter to `azure-oss/storage` in
[sebastianfeldmann/phpbu#402](sebastianfeldmann/phpbu#402),
released in [phpbu
6.0.32](https://github.com/sebastianfeldmann/phpbu/releases/tag/6.0.32).

## What changed (`app/full/composer.json` + lock)

- `phpbu/phpbu` `^6.0` → `^6.0.32` (the release whose Azure adapter uses
azure-oss).
- Direct require `microsoft/azure-storage-blob: ^1.4` →
`azure-oss/storage: ^1.9` (phpbu lists azure-oss as
`suggest`/`require-dev`, so the full image still declares it explicitly
to enable the adapter).
- `composer update` removed `microsoft/azure-storage-blob` +
`microsoft/azure-storage-common` entirely; pulled `azure-oss/storage`
1.9.0, `azure-oss/storage-common`, `azure-oss/identity`.

## Verification

- `composer validate` clean; **no abandoned packages remain in the
lock**; `composer audit` reports no advisories.
- phpbu 6.0.32's `azureblob` sync runs in `--simulate` under PHP 8.5:
loads `AzureOss\Storage\Blob\BlobServiceClient` (no "SDK not loaded")
and masks the credential (`connectionString: ********`).
- The Security Scan (Trivy) runs on this PR and rebuilds the full image
— it should now be clean of the abandonment finding.

## Supersedes

This replaces the documentation-only workaround in #153 (which explained
why the abandoned package was kept). With the package removed, that note
is obsolete — closing #153 in favour of this fix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant