1
0
Fork 0
mirror of https://github.com/chrislusf/seaweedfs synced 2025-07-11 06:02:47 +02:00
seaweedfs/.github/workflows
Chris Lu cf5a24983a
S3: add object versioning (#6945)
* add object versioning

* add missing file

* Update weed/s3api/s3api_object_versioning.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update weed/s3api/s3api_object_versioning.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update weed/s3api/s3api_object_versioning.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* ListObjectVersionsResult is better to show multiple version entries

* fix test

* Update weed/s3api/s3api_object_handlers_put.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update weed/s3api/s3api_object_versioning.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* multiple improvements

* move PutBucketVersioningHandler into weed/s3api/s3api_bucket_handlers.go file
* duplicated code for reading bucket config, versioningEnabled, etc. try to use functions
* opportunity to cache bucket config

* error handling if bucket is not found

* in case bucket is not found

* fix build

* add object versioning tests

* remove non-existent tests

* add tests

* add versioning tests

* skip a new test

* ensure .versions directory exists before saving info into it

* fix creating version entry

* logging on creating version directory

* Update s3api_object_versioning_test.go

* retry and wait for directory creation

* revert add more logging

* Update s3api_object_versioning.go

* more debug messages

* clean up logs, and touch directory correctly

* log the .versions creation and then parent directory listing

* use mkFile instead of touch

touch is for update

* clean up data

* add versioning test in go

* change location

* if modified, latest version is moved to .versions directory, and create a new latest version

 Core versioning functionality: WORKING
TestVersioningBasicWorkflow - PASS
TestVersioningDeleteMarkers - PASS
TestVersioningMultipleVersionsSameObject - PASS
TestVersioningDeleteAndRecreate - PASS
TestVersioningListWithPagination - PASS
 Some advanced features still failing:
ETag calculation issues (using mtime instead of proper MD5)
Specific version retrieval (EOF error)
Version deletion (internal errors)
Concurrent operations (race conditions)

* calculate multi chunk md5

Test Results - All Passing:
 TestBucketListReturnDataVersioning - PASS
 TestVersioningCreateObjectsInOrder - PASS
 TestVersioningBasicWorkflow - PASS
 TestVersioningMultipleVersionsSameObject - PASS
 TestVersioningDeleteMarkers - PASS

* dedupe

* fix TestVersioningErrorCases

* fix eof error of reading old versions

* get specific version also check current version

* enable integration tests for versioning

* trigger action to work for now

* Fix GitHub Actions S3 versioning tests workflow

- Fix syntax error (incorrect indentation)
- Update directory paths from weed/s3api/versioning_tests/ to test/s3/versioning/
- Add push trigger for add-object-versioning branch to enable CI during development
- Update artifact paths to match correct directory structure

* Improve CI robustness for S3 versioning tests

Makefile improvements:
- Increase server startup timeout from 30s to 90s for CI environments
- Add progressive timeout reporting (logs at 30s, full logs at 90s)
- Better error handling with server logs on failure
- Add server PID tracking for debugging
- Improved test failure reporting

GitHub Actions workflow improvements:
- Increase job timeouts to account for CI environment delays
- Add system information logging (memory, disk space)
- Add detailed failure reporting with server logs
- Add process and network diagnostics on failure
- Better error messaging and log collection

These changes should resolve the 'Server failed to start within 30 seconds' issue
that was causing the CI tests to fail.

* adjust testing volume size

* Update Makefile

* Update Makefile

* Update Makefile

* Update Makefile

* Update s3-versioning-tests.yml

* Update s3api_object_versioning.go

* Update Makefile

* do not clean up

* log received version id

* more logs

* printout response

* print out list version response

* use tmp files when put versioned object

* change to versions folder layout

* Delete weed-test.log

* test with mixed versioned and unversioned objects

* remove versionDirCache

* remove unused functions

* remove unused function

* remove fallback checking

* minor

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-09 01:51:45 -07:00
..
binaries_dev.yml change version directory 2025-06-03 22:46:10 -07:00
binaries_release0.yml change version directory 2025-06-03 22:46:10 -07:00
binaries_release1.yml change version directory 2025-06-03 22:46:10 -07:00
binaries_release2.yml change version directory 2025-06-03 22:46:10 -07:00
binaries_release3.yml change version directory 2025-06-03 22:46:10 -07:00
binaries_release4.yml change version directory 2025-06-03 22:46:10 -07:00
binaries_release5.yml change version directory 2025-06-03 22:46:10 -07:00
codeql.yml chore(deps): bump actions/checkout from 4.1.1 to 4.1.2 (#5390) 2024-03-18 11:06:22 -07:00
container_dev.yml chore(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 (#6910) 2025-06-23 10:48:17 -07:00
container_latest.yml chore(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 (#6910) 2025-06-23 10:48:17 -07:00
container_release1.yml chore(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 (#6910) 2025-06-23 10:48:17 -07:00
container_release2.yml chore(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 (#6910) 2025-06-23 10:48:17 -07:00
container_release3.yml chore(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 (#6910) 2025-06-23 10:48:17 -07:00
container_release4.yml chore(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 (#6910) 2025-06-23 10:48:17 -07:00
container_release5.yml chore(deps): bump docker/setup-buildx-action from 3.11.0 to 3.11.1 (#6910) 2025-06-23 10:48:17 -07:00
deploy_telemetry.yml chore(deps): bump actions/setup-go from 4.2.1 to 5.5.0 (#6948) 2025-07-07 10:36:21 -07:00
depsreview.yml chore(deps): bump actions/dependency-review-action from 4.7.0 to 4.7.1 (#6797) 2025-05-19 11:18:40 -07:00
e2e.yml chore(deps): bump actions/setup-go from 4.2.1 to 5.5.0 (#6948) 2025-07-07 10:36:21 -07:00
go.yml chore(deps): bump actions/setup-go from 4.2.1 to 5.5.0 (#6948) 2025-07-07 10:36:21 -07:00
helm_chart_release.yml chore(deps): bump actions/checkout from 4.1.1 to 4.1.2 (#5390) 2024-03-18 11:06:22 -07:00
helm_ci.yml chore(deps): bump helm/kind-action from 1.11.0 to 1.12.0 (#6460) 2025-01-20 11:02:56 -08:00
s3-versioning-tests.yml S3: add object versioning (#6945) 2025-07-09 01:51:45 -07:00
s3tests.yml S3: add object versioning (#6945) 2025-07-09 01:51:45 -07:00
test-s3-over-https-using-awscli.yml chore(deps): bump actions/setup-go from 4.2.1 to 5.5.0 (#6948) 2025-07-07 10:36:21 -07:00