fix: repair references the rename broke; pin s3 v1.0.2

The seaweedfs->s3 sweep rewrote third-party names it had no business
touching, turning working references into ones that resolve to nothing:

- deploy manifests and helm values asked for chrislusf/s3-csi and
  chrislusf/s3-mount. Neither exists (Docker Hub 404s; upstream's real name
  is chrislusf/seaweedfs-csi-driver). Pointed them at the images our own CI
  publishes instead — ghcr.io/hanzoai/s3-{csi,mount} — which is what #1
  moved us to and what the static manifest should have said all along.
- README linked github.com/s3/s3, s3.github.io/s3-csi-driver/helm and
  chrislusf/s3-csi-driver badges. Restored the genuine upstream where we
  cite upstream, and pointed our own links at hanzoai/s3-csi. Also fixed a
  path that named a file we do not have.
- sync-s3.yaml grepped go.mod for github.com/s3/s3 and would `go get -u`
  that module. Our module is github.com/hanzoai/s3, so the grep matched
  nothing and the fetch could only fail. Deleted rather than repaired: it
  syncs from an upstream this fork has deliberately left behind, and
  pulling it forward would put gRPC back under a ZAP driver.

Also pins github.com/hanzoai/s3 v1.0.2 in place of the pseudo-version, now
that s3 tags its own v1 line (its 4.34.x/v2026.x tags were never resolvable
— the module has no major suffix, so only v1.x.x can be required), and moves
the integration test onto v1.0.2. That pin matters: 4.34.6 predates the ZAP
filer entirely, so the test was pointing a ZAP driver at a gRPC filer, and
v1.0.2 is the first build without the promise-ID deadlock on concurrent
filer calls.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
zooqueen
2026-07-27 19:24:11 -07:00
co-authored by Hanzo Dev
parent afa6b2c16e
commit bff525f849
8 changed files with 26 additions and 151 deletions
+5 -5
View File
@@ -65,11 +65,11 @@ jobs:
# the rollout. Retry the docker pull a few times to ride through # the rollout. Retry the docker pull a few times to ride through
# transient registry hiccups. # transient registry hiccups.
for i in 1 2 3; do for i in 1 2 3; do
docker pull ghcr.io/hanzoai/s3:4.34.6 && break docker pull ghcr.io/hanzoai/s3:v1.0.2 && break
echo "docker pull attempt $i failed, retrying..." echo "docker pull attempt $i failed, retrying..."
sleep 10 sleep 10
done done
kind load docker-image ghcr.io/hanzoai/s3:4.34.6 --name csi-test kind load docker-image ghcr.io/hanzoai/s3:v1.0.2 --name csi-test
- name: Deploy S3 - name: Deploy S3
run: | run: |
@@ -117,7 +117,7 @@ jobs:
spec: spec:
containers: containers:
- name: s3 - name: s3
image: ghcr.io/hanzoai/s3:4.34.6 image: ghcr.io/hanzoai/s3:v1.0.2
# Use the image preloaded into kind by the workflow so we # Use the image preloaded into kind by the workflow so we
# do not re-pull from Docker Hub (anonymous rate limits # do not re-pull from Docker Hub (anonymous rate limits
# have caused ImagePullBackOff in CI). # have caused ImagePullBackOff in CI).
@@ -172,12 +172,12 @@ jobs:
# The s3-csi.yaml is rendered from the helm chart and pins # The s3-csi.yaml is rendered from the helm chart and pins
# the released image tag (e.g. ghcr.io/hanzoai/s3-csi:v1.4.5), # the released image tag (e.g. ghcr.io/hanzoai/s3-csi:v1.4.5),
# so we rewrite *any* ghcr.io/hanzoai/s3-csi:* and # so we rewrite *any* ghcr.io/hanzoai/s3-csi:* and
# chrislusf/s3-mount:* reference to the test images we # ghcr.io/hanzoai/s3-mount:* reference to the test images we
# kind-loaded in the previous step. This guarantees CI is exercising # kind-loaded in the previous step. This guarantees CI is exercising
# the code in this PR, not whatever the helm chart happens to pin. # the code in this PR, not whatever the helm chart happens to pin.
cat deploy/kubernetes/s3-csi.yaml | \ cat deploy/kubernetes/s3-csi.yaml | \
sed -E 's|ghcr.io/hanzoai/s3-csi:[^[:space:]]+|s3-csi:test|g' | \ sed -E 's|ghcr.io/hanzoai/s3-csi:[^[:space:]]+|s3-csi:test|g' | \
sed -E 's|chrislusf/s3-mount:[^[:space:]]+|s3-mount:test|g' | \ sed -E 's|ghcr.io/hanzoai/s3-mount:[^[:space:]]+|s3-mount:test|g' | \
sed 's|S3_FILER:8888|s3.s3.svc.cluster.local:8888|g' | \ sed 's|S3_FILER:8888|s3.s3.svc.cluster.local:8888|g' | \
kubectl apply -f - kubectl apply -f -
-127
View File
@@ -1,127 +0,0 @@
name: Sync S3 Dependency
on:
# Run weekly on Friday at 11 PM UTC
schedule:
- cron: '0 23 * * 5'
# Allow manual trigger
workflow_dispatch:
inputs:
force_update:
description: 'Force update even if no changes detected'
required: false
default: 'false'
type: boolean
jobs:
sync:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Get current S3 version
id: current_version
run: |
CURRENT=$(grep 'github.com/s3/s3' go.mod | grep -v module | awk '{print $2}')
echo "version=$CURRENT" >> $GITHUB_OUTPUT
echo "Current S3 version: $CURRENT"
- name: Update S3 dependency
run: |
go get -u github.com/s3/s3@latest
go mod tidy
- name: Get new S3 version
id: new_version
run: |
NEW=$(grep 'github.com/s3/s3' go.mod | grep -v module | awk '{print $2}')
echo "version=$NEW" >> $GITHUB_OUTPUT
echo "New S3 version: $NEW"
# Extract commit hash (last part after the final dash)
COMMIT_HASH=$(echo "$NEW" | sed 's/.*-//')
echo "commit=$COMMIT_HASH" >> $GITHUB_OUTPUT
echo "Commit hash: $COMMIT_HASH"
- name: Update Dockerfile commit hashes
run: |
COMMIT="${{ steps.new_version.outputs.commit }}"
echo "Updating Dockerfiles to commit: $COMMIT"
# Update both Dockerfiles with the new commit hash
sed -i "s/^ARG S3_COMMIT=.*/ARG S3_COMMIT=$COMMIT/" cmd/s3-mount/Dockerfile
sed -i "s/^ARG S3_COMMIT=.*/ARG S3_COMMIT=$COMMIT/" cmd/s3-mount/Dockerfile.dev
# Show the changes
grep "ARG S3_COMMIT" cmd/s3-mount/Dockerfile cmd/s3-mount/Dockerfile.dev
- name: Check for changes
id: check_changes
run: |
if git diff --quiet go.mod go.sum cmd/s3-mount/Dockerfile cmd/s3-mount/Dockerfile.dev; then
echo "changed=false" >> $GITHUB_OUTPUT
echo "No changes detected"
else
echo "changed=true" >> $GITHUB_OUTPUT
echo "Changes detected:"
git diff --stat
fi
- name: Run tests
if: steps.check_changes.outputs.changed == 'true' || github.event.inputs.force_update == 'true'
id: run_tests
run: |
echo "Validating compilation and running tests"
go version
go test ./... -v
- name: Create Pull Request
if: (steps.check_changes.outputs.changed == 'true' || github.event.inputs.force_update == 'true') && steps.run_tests.outcome == 'success'
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: |
chore: sync s3 dependency to latest
Updated from ${{ steps.current_version.outputs.version }}
to ${{ steps.new_version.outputs.version }}
See changes: https://github.com/s3/s3/compare/${{ steps.current_version.outputs.version }}...${{ steps.new_version.outputs.version }}
branch: auto-sync-s3
delete-branch: true
title: 'chore: sync s3 dependency to latest'
body: |
## Automated S3 Dependency Update
This PR was automatically created by the sync workflow.
### Changes
- **From:** `${{ steps.current_version.outputs.version }}`
- **To:** `${{ steps.new_version.outputs.version }}`
### S3 Changelog
[View changes on GitHub](https://github.com/s3/s3/compare/${{ steps.current_version.outputs.version }}...${{ steps.new_version.outputs.version }})
### Next Steps
After merging, the dev Docker images will be automatically rebuilt with the latest S3 code.
---
*This PR was auto-generated by [sync-s3.yaml](.github/workflows/sync-s3.yaml)*
labels: |
dependencies
automated
reviewers: chrislusf
+11 -11
View File
@@ -1,11 +1,11 @@
# Container Storage Interface (CSI) for S3 # Container Storage Interface (CSI) for S3
[![Docker Pulls](https://img.shields.io/docker/pulls/chrislusf/s3-csi-driver.svg?maxAge=4800)](https://hub.docker.com/r/chrislusf/s3-csi-driver/) [![Docker Pulls](https://img.shields.io/docker/pulls/chrislusf/seaweedfs-csi-driver.svg?maxAge=4800)](https://hub.docker.com/r/chrislusf/seaweedfs-csi-driver/)
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/s3-csi-driver)](https://artifacthub.io/packages/search?repo=s3-csi-driver) [![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/seaweedfs-csi-driver)](https://artifacthub.io/packages/search?repo=seaweedfs-csi-driver)
[Container storage interface](https://kubernetes-csi.github.io/docs/) is an [industry standard](https://github.com/container-storage-interface/spec/blob/master/spec.md) that enables storage vendors to develop a plugin once and have it work across a number of container orchestration systems. [Container storage interface](https://kubernetes-csi.github.io/docs/) is an [industry standard](https://github.com/container-storage-interface/spec/blob/master/spec.md) that enables storage vendors to develop a plugin once and have it work across a number of container orchestration systems.
[S3](https://github.com/s3/s3) is a simple and highly scalable distributed file system, to store and serve billions of files fast! [S3](https://github.com/hanzoai/s3) is a simple and highly scalable distributed file system, to store and serve billions of files fast!
<br> <br>
@@ -34,16 +34,16 @@
1. Add the helm repo; 1. Add the helm repo;
```sh ```sh
helm repo add s3-csi-driver https://s3.github.io/s3-csi-driver/helm helm repo add s3-csi https://hanzoai.github.io/s3-csi/helm
``` ```
2. Check versions by `helm repo update s3-csi-driver` and `helm search repo s3-csi-driver` 2. Check versions by `helm repo update s3-csi` and `helm search repo s3-csi`
#### Source #### Source
1. Clone this repository 1. Clone this repository
```sh ```sh
git clone https://github.com/s3/s3-csi-driver.git git clone https://github.com/hanzoai/s3-csi.git
``` ```
2. Adjust your S3 Filer address via variable S3_FILER in `deploy/kubernetes/s3-csi.yaml` (2 places) 2. Adjust your S3 Filer address via variable S3_FILER in `deploy/kubernetes/s3-csi.yaml` (2 places)
@@ -53,7 +53,7 @@ git clone https://github.com/s3/s3-csi-driver.git
### To generate an up to date manifest from the helm chart, do: ### To generate an up to date manifest from the helm chart, do:
``` ```
$ helm template s3 ./deploy/helm/s3-csi-driver > deploy/kubernetes/s3-csi.yaml $ helm template s3 ./deploy/helm/s3-csi > deploy/kubernetes/s3-csi.yaml
``` ```
Check the kubelet root directory ,Execute the following command Check the kubelet root directory ,Execute the following command
``` ```
@@ -89,15 +89,15 @@ $ kubectl delete -f deploy/kubernetes/s3-csi.yaml
1. Clone project 1. Clone project
```bash ```bash
git clone https://github.com/s3/s3-csi-driver.git git clone https://github.com/hanzoai/s3-csi.git
``` ```
2. Edit `./deploy/helm/s3-csi-driver/values.yaml` if required and Install 2. Edit `./deploy/helm/s3-csi/values.yaml` if required and Install
```bash ```bash
helm install --set s3Filer=<filerHost:port> s3-csi-driver ./deploy/helm/s3-csi-driver helm install --set s3Filer=<filerHost:port> s3-csi-driver ./deploy/helm/s3-csi
``` ```
Example with multiple filers : Example with multiple filers :
```bash ```bash
helm install s3-csi-driver ./deploy/helm/s3-csi-driver/ \ helm install s3-csi-driver ./deploy/helm/s3-csi/ \
--namespace s3-csi-driver \ --namespace s3-csi-driver \
--set s3Filer="<filerHost:port>\,<filerHost:port>\,<filerHost:port>\,<filerHost:port>\,<filerHost:port>" --set s3Filer="<filerHost:port>\,<filerHost:port>\,<filerHost:port>\,<filerHost:port>\,<filerHost:port>"
``` ```
+2 -2
View File
@@ -91,7 +91,7 @@ csiLivenessProbe:
resources: {} resources: {}
s3CsiPlugin: s3CsiPlugin:
image: chrislusf/s3-csi image: ghcr.io/hanzoai/s3-csi
# tag defaults to Chart.appVersion when not set # tag defaults to Chart.appVersion when not set
securityContext: securityContext:
privileged: true privileged: true
@@ -108,7 +108,7 @@ s3CsiPlugin:
mountService: mountService:
# Must be enabled for the CSI driver node component to mount volumes # Must be enabled for the CSI driver node component to mount volumes
enabled: true enabled: true
image: chrislusf/s3-mount image: ghcr.io/hanzoai/s3-mount
# tag defaults to Chart.appVersion when not set # tag defaults to Chart.appVersion when not set
# Endpoint for communication between CSI driver and mount service # Endpoint for communication between CSI driver and mount service
endpoint: unix:///var/lib/s3-mount/s3-mount.sock endpoint: unix:///var/lib/s3-mount/s3-mount.sock
+2 -2
View File
@@ -299,7 +299,7 @@ spec:
mountPath: /var/lib/csi/sockets/pluginproxy/ mountPath: /var/lib/csi/sockets/pluginproxy/
# S3 Plugin # S3 Plugin
- name: s3-csi-plugin - name: s3-csi-plugin
image: chrislusf/s3-csi:latest image: ghcr.io/hanzoai/s3-csi:latest
args : args :
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--filer=$(S3_FILER)" - "--filer=$(S3_FILER)"
@@ -379,7 +379,7 @@ spec:
capabilities: capabilities:
add: ["SYS_ADMIN"] add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true allowPrivilegeEscalation: true
image: chrislusf/s3-csi:latest image: ghcr.io/hanzoai/s3-csi:latest
args : args :
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--filer=$(S3_FILER)" - "--filer=$(S3_FILER)"
+3 -3
View File
@@ -215,7 +215,7 @@ spec:
add: add:
- SYS_ADMIN - SYS_ADMIN
privileged: true privileged: true
image: chrislusf/s3-mount:v1.4.5 image: ghcr.io/hanzoai/s3-mount:v1.4.5
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
args: args:
- --endpoint=$(MOUNT_ENDPOINT) - --endpoint=$(MOUNT_ENDPOINT)
@@ -289,7 +289,7 @@ spec:
add: add:
- SYS_ADMIN - SYS_ADMIN
privileged: true privileged: true
image: chrislusf/s3-csi:v1.4.5 image: ghcr.io/hanzoai/s3-csi:v1.4.5
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
args: args:
- --endpoint=$(CSI_ENDPOINT) - --endpoint=$(CSI_ENDPOINT)
@@ -450,7 +450,7 @@ spec:
containers: containers:
# S3 Plugin (controller) # S3 Plugin (controller)
- name: s3-csi-plugin - name: s3-csi-plugin
image: chrislusf/s3-csi:v1.4.5 image: ghcr.io/hanzoai/s3-csi:v1.4.5
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
args : args :
- --endpoint=$(CSI_ENDPOINT) - --endpoint=$(CSI_ENDPOINT)
+1 -1
View File
@@ -10,7 +10,7 @@ require (
) )
require ( require (
github.com/hanzoai/s3 v1.0.2-0.20260727225537-6dda4e4d6bca github.com/hanzoai/s3 v1.0.2
golang.org/x/sys v0.47.0 golang.org/x/sys v0.47.0
k8s.io/api v0.32.0 k8s.io/api v0.32.0
k8s.io/apimachinery v0.32.0 k8s.io/apimachinery v0.32.0
+2
View File
@@ -61,6 +61,8 @@ github.com/hanzoai/goexif v1.0.4 h1:ttNObsfiO3z8A4jA91l3YtMELGAXyMfVr8ckgNm9AwE=
github.com/hanzoai/goexif v1.0.4/go.mod h1:eZsa4Rlv4Vqf/hGAjq5kRGBQTDDiZdkqsw6vEXTs3p4= github.com/hanzoai/goexif v1.0.4/go.mod h1:eZsa4Rlv4Vqf/hGAjq5kRGBQTDDiZdkqsw6vEXTs3p4=
github.com/hanzoai/s3 v1.0.2-0.20260727225537-6dda4e4d6bca h1:6VGjgNyfCA2zGAijeCVxNnHD9arp2t6jqs7WU3JE2oQ= github.com/hanzoai/s3 v1.0.2-0.20260727225537-6dda4e4d6bca h1:6VGjgNyfCA2zGAijeCVxNnHD9arp2t6jqs7WU3JE2oQ=
github.com/hanzoai/s3 v1.0.2-0.20260727225537-6dda4e4d6bca/go.mod h1:lXS9m0Ba+tV7PCtAYuEeJnf58j6cSWmkmV5JxVR1LBY= github.com/hanzoai/s3 v1.0.2-0.20260727225537-6dda4e4d6bca/go.mod h1:lXS9m0Ba+tV7PCtAYuEeJnf58j6cSWmkmV5JxVR1LBY=
github.com/hanzoai/s3 v1.0.2 h1:9QLf/WVV0V7ykPOcgkSaDyMOWl3LEmULGEKNU0xW/XA=
github.com/hanzoai/s3 v1.0.2/go.mod h1:lXS9m0Ba+tV7PCtAYuEeJnf58j6cSWmkmV5JxVR1LBY=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=