Skip to content

Commit 27a668c

Browse files
feat: major refactor with memory-based concurrency, improved testing, and helm chart restructuring
- Refactor handlers into modular packages (objects/, multipart/) - Add memory-based concurrency limiting (replacing count-based) - Add state management with Redis coordination and recovery - Add streaming utilities and metrics collection - Restructure helm chart (manifests/ -> chart/) with PDB and helpers - Consolidate and expand e2e tests (clickhouse, elasticsearch, postgres, scylla, s3-compat) - Add comprehensive unit and integration test suites - Slim down Dockerfile and improve CI workflows (add lint, test) - Harden error handling, input validation, XML escaping, and streaming safety - Update README and add chart configuration reference - Fix data loss on multipart complete and part retry
1 parent b450484 commit 27a668c

142 files changed

Lines changed: 20927 additions & 6243 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/cluster-test.yml

Lines changed: 0 additions & 243 deletions
This file was deleted.

.github/workflows/docker-publish.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Build and Push Docker Image
33
on:
44
push:
55
branches: [main]
6-
tags: ['v*']
6+
tags: ['*']
77

88
jobs:
99
build-and-push:
@@ -20,8 +20,8 @@ jobs:
2020
id: tags
2121
run: |
2222
OWNER=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
23-
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
24-
VERSION=${GITHUB_REF#refs/tags/v}
23+
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
24+
VERSION=${GITHUB_REF#refs/tags/}
2525
echo "tags=ghcr.io/${OWNER}/s3proxy-python:${VERSION}" >> $GITHUB_OUTPUT
2626
else
2727
echo "tags=ghcr.io/${OWNER}/s3proxy-python:latest" >> $GITHUB_OUTPUT

.github/workflows/helm-lint.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Helm Lint
33
on:
44
pull_request:
55
paths:
6-
- 'manifests/**'
6+
- 'chart/**'
77

88
jobs:
99
helm-lint:
@@ -22,12 +22,12 @@ jobs:
2222
2323
- name: Update Helm dependencies
2424
run: |
25-
helm dependency update manifests/
25+
helm dependency update chart/
2626
2727
- name: Lint Helm chart
2828
run: |
29-
helm lint manifests/
29+
helm lint chart/
3030
3131
- name: Validate Helm template
3232
run: |
33-
helm template s3proxy manifests/ --debug > /dev/null
33+
helm template s3proxy chart/ --debug > /dev/null

.github/workflows/helm-publish.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Package and Push Helm Chart
33
on:
44
push:
55
branches: [main]
6-
tags: ['v*']
6+
tags: ['*']
77

88
jobs:
99
helm-publish:
@@ -30,30 +30,30 @@ jobs:
3030
3131
- name: Update Helm dependencies
3232
run: |
33-
helm dependency update manifests/
33+
helm dependency update chart/
3434
3535
- name: Get version
3636
id: version
3737
run: |
38-
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
39-
VERSION=${GITHUB_REF#refs/tags/v}
38+
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
39+
VERSION=${GITHUB_REF#refs/tags/}
4040
else
4141
VERSION="0.0.0-latest"
4242
fi
4343
echo "version=$VERSION" >> $GITHUB_OUTPUT
4444
4545
- name: Update chart version
4646
run: |
47-
sed -i "s/^version:.*/version: ${{ steps.version.outputs.version }}/" manifests/Chart.yaml
48-
sed -i "s/^appVersion:.*/appVersion: \"${{ steps.version.outputs.version }}\"/" manifests/Chart.yaml
47+
sed -i "s/^version:.*/version: ${{ steps.version.outputs.version }}/" chart/Chart.yaml
48+
sed -i "s/^appVersion:.*/appVersion: \"${{ steps.version.outputs.version }}\"/" chart/Chart.yaml
4949
5050
- name: Lint Helm chart
5151
run: |
52-
helm lint manifests/
52+
helm lint chart/
5353
5454
- name: Package Helm chart
5555
run: |
56-
helm package manifests/ --destination .
56+
helm package chart/ --destination .
5757
5858
- name: Push Helm chart to OCI registry
5959
run: |

.github/workflows/lint.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Lint
2+
3+
on:
4+
push:
5+
6+
jobs:
7+
ruff:
8+
runs-on: ubuntu-latest
9+
timeout-minutes: 5
10+
steps:
11+
- uses: actions/checkout@v6
12+
13+
- name: Install ruff
14+
run: pipx install ruff
15+
16+
- name: Ruff check
17+
run: ruff check .
18+
19+
- name: Ruff format
20+
run: ruff format --check .

.github/workflows/test.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
paths:
8+
- 's3proxy/**'
9+
- 'tests/**'
10+
- 'pyproject.toml'
11+
workflow_dispatch:
12+
13+
jobs:
14+
tests:
15+
runs-on: ubuntu-latest
16+
timeout-minutes: 15
17+
steps:
18+
- uses: actions/checkout@v6
19+
20+
- name: Set up Python
21+
uses: actions/setup-python@v6
22+
with:
23+
python-version: '3.14'
24+
cache: 'pip'
25+
26+
- name: Install uv
27+
run: pip install uv
28+
29+
- name: Install dependencies
30+
run: uv sync --extra dev
31+
32+
- name: Run all tests
33+
run: make test-all

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,7 @@ htmlcov/
4949
Thumbs.db
5050

5151
# Helm dependencies (downloaded via helm dependency build)
52-
manifests/charts/*.tgz
52+
chart/charts/*.tgz
53+
54+
# Database backup testing
55+
db-backup-tests/

0 commit comments

Comments
 (0)