Repository navigation
Conversation
1 of 4 tasks
This was referenced May 10, 2026
Add S3 backend as an alternative to GitLab for target file storage, enabling sparrow deployments on any S3-compatible object storage (AWS, GCP, Azure, MinIO, etc.) without requiring a GitLab instance. - Implement S3 interactor with FetchFiles, PostFile, PutFile, DeleteFile - Add ETag-based conditional GETs to reduce bandwidth on polling - Refactor remote.File to generic struct (Name + Content only) - Move GitLab-specific commit metadata into gitlab package - Add config validation with sentinel errors for all auth paths - Support static credentials with OIDC auth stubs for PR 2 - Wire S3 validation into TargetManagerConfig.Validate - Change NewManager and sparrow.New to return errors - Add Helm values.yaml S3 config block (commented) - Add comprehensive tests: S3 operations, ETag caching, config validation, and targetmanager S3 validation cases
- Fix fumpt formatting on multi-line fmt.Sprintf call - Update gosec annotation to gosec:disable directive format
lvlcn-t
force-pushed
the
feat/s3-target-manager
branch
from
May 14, 2026 18:22
d1f8db1 to
6044698
Compare
Signed-off-by: lvlcn-t <75443136+lvlcn-t@users.noreply.github.com>
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.
Motivation
The target manager currently only supports GitLab as a remote state backend
(issue #414). This couples sparrow to GitLab infrastructure and limits
deployment flexibility across AWS, GCP, Azure, and on-prem environments.
An S3-compatible backend removes this dependency — any provider that speaks
the S3 API (AWS, MinIO, Ceph, GCS via interop) can serve as the target store.
Stack: PR 1/3 — S3 interactor + static auth. Followed by OIDC auth and
polling jitter PRs stacked on top.
Changes
pkg/sparrow/targets/remote/s3/package withInteractorimplementationusing
minio-go/v7(Apache 2.0)FetchFiles,PostFile,PutFile,DeleteFileagainst S3 objectsIf-None-Match/ 304 detection) to reduce bandwidthAuthConfigwithstaticprovider (access key + secret key)remote.Fileto generic struct (Name+Content); moveGitLab-specific fields into gitlab package
interactor.Configfactory andtargetmanager.Validate()NewManagerandsparrow.New()return errors for invalid configchart/values.yaml(commented)For additional information look at the commits.
Tests done
TODO