mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-04 11:15:39 +00:00
docs: close final architecture audit gaps (#3966)
This commit is contained in:
@@ -59,18 +59,18 @@ runs:
|
|||||||
protobuf-compiler
|
protobuf-compiler
|
||||||
|
|
||||||
- name: Install protoc
|
- name: Install protoc
|
||||||
uses: rustfs/setup-protoc@v3.0.1
|
uses: rustfs/setup-protoc@a3705324d8f9bf5b6c3573fb6cf8ae421db55dd6 # v3.0.1
|
||||||
with:
|
with:
|
||||||
version: "34.1"
|
version: "34.1"
|
||||||
repo-token: ${{ github.token }}
|
repo-token: ${{ github.token }}
|
||||||
|
|
||||||
- name: Install flatc
|
- name: Install flatc
|
||||||
uses: Nugine/setup-flatc@v1
|
uses: Nugine/setup-flatc@e7855e994773ce90094a3f1626d4afc9080c23ae # v1
|
||||||
with:
|
with:
|
||||||
version: "25.12.19"
|
version: "25.12.19"
|
||||||
|
|
||||||
- name: Install Rust toolchain
|
- name: Install Rust toolchain
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
|
||||||
with:
|
with:
|
||||||
toolchain: ${{ inputs.rust-version }}
|
toolchain: ${{ inputs.rust-version }}
|
||||||
targets: ${{ inputs.target }}
|
targets: ${{ inputs.target }}
|
||||||
@@ -78,17 +78,17 @@ runs:
|
|||||||
|
|
||||||
- name: Install Zig
|
- name: Install Zig
|
||||||
if: inputs.install-cross-tools == 'true'
|
if: inputs.install-cross-tools == 'true'
|
||||||
uses: mlugg/setup-zig@v2
|
uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2
|
||||||
|
|
||||||
- name: Install cargo-zigbuild
|
- name: Install cargo-zigbuild
|
||||||
if: inputs.install-cross-tools == 'true'
|
if: inputs.install-cross-tools == 'true'
|
||||||
uses: taiki-e/install-action@cargo-zigbuild
|
uses: taiki-e/install-action@a21ae4029b089b9ddc45704028756f51ab8abe48 # cargo-zigbuild
|
||||||
|
|
||||||
- name: Install cargo-nextest
|
- name: Install cargo-nextest
|
||||||
uses: taiki-e/install-action@nextest
|
uses: taiki-e/install-action@96c7780c1d8a2b8723e12031def873a434d39d8d # nextest
|
||||||
|
|
||||||
- name: Setup Rust cache
|
- name: Setup Rust cache
|
||||||
uses: Swatinem/rust-cache@v2
|
uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
|
||||||
with:
|
with:
|
||||||
cache-all-crates: true
|
cache-all-crates: true
|
||||||
cache-on-failure: true
|
cache-on-failure: true
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
name: Architecture Migration Rules
|
name: Architecture Migration Rules
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v7
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Install ripgrep
|
- name: Install ripgrep
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -50,10 +50,10 @@ jobs:
|
|||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Install cargo-audit
|
- name: Install cargo-audit
|
||||||
uses: taiki-e/install-action@v2
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2
|
||||||
with:
|
with:
|
||||||
tool: cargo-audit
|
tool: cargo-audit
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload audit results
|
- name: Upload audit results
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: security-audit-results-${{ github.run_number }}
|
name: security-audit-results-${{ github.run_number }}
|
||||||
path: audit-results.json
|
path: audit-results.json
|
||||||
@@ -75,7 +75,7 @@ jobs:
|
|||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -83,7 +83,7 @@ jobs:
|
|||||||
cache-shared-key: rustfs-cargo-deny
|
cache-shared-key: rustfs-cargo-deny
|
||||||
|
|
||||||
- name: Install cargo-deny
|
- name: Install cargo-deny
|
||||||
uses: taiki-e/install-action@v2
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2
|
||||||
with:
|
with:
|
||||||
tool: cargo-deny
|
tool: cargo-deny
|
||||||
|
|
||||||
@@ -96,10 +96,10 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Report unpinned GitHub Actions
|
- name: Report unpinned GitHub Actions
|
||||||
run: ./scripts/security/check_workflow_pins.sh
|
run: ./scripts/security/check_workflow_pins.sh --enforce
|
||||||
|
|
||||||
dependency-review:
|
dependency-review:
|
||||||
name: Dependency Review
|
name: Dependency Review
|
||||||
@@ -110,10 +110,10 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Dependency Review
|
- name: Dependency Review
|
||||||
uses: actions/dependency-review-action@v5
|
uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5
|
||||||
with:
|
with:
|
||||||
fail-on-severity: moderate
|
fail-on-severity: moderate
|
||||||
allow-ghsas: GHSA-2f9f-gq7v-9h6m
|
allow-ghsas: GHSA-2f9f-gq7v-9h6m
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ jobs:
|
|||||||
is_prerelease: ${{ steps.check.outputs.is_prerelease }}
|
is_prerelease: ${{ steps.check.outputs.is_prerelease }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ jobs:
|
|||||||
matrix: ${{ fromJson(needs.prepare-platform-matrix.outputs.matrix) }}
|
matrix: ${{ fromJson(needs.prepare-platform-matrix.outputs.matrix) }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -459,7 +459,7 @@ jobs:
|
|||||||
echo "📊 Version: ${VERSION}"
|
echo "📊 Version: ${VERSION}"
|
||||||
|
|
||||||
- name: Upload to GitHub artifacts
|
- name: Upload to GitHub artifacts
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.package.outputs.package_name }}
|
name: ${{ steps.package.outputs.package_name }}
|
||||||
path: "rustfs-*.zip"
|
path: "rustfs-*.zip"
|
||||||
@@ -609,7 +609,7 @@ jobs:
|
|||||||
release_url: ${{ steps.create.outputs.release_url }}
|
release_url: ${{ steps.create.outputs.release_url }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -693,10 +693,10 @@ jobs:
|
|||||||
actions: read
|
actions: read
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Download all build artifacts
|
- name: Download all build artifacts
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
||||||
with:
|
with:
|
||||||
path: ./artifacts
|
path: ./artifacts
|
||||||
pattern: rustfs-*
|
pattern: rustfs-*
|
||||||
@@ -837,7 +837,7 @@ jobs:
|
|||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Update release notes and publish
|
- name: Update release notes and publish
|
||||||
env:
|
env:
|
||||||
|
|||||||
+23
-23
@@ -84,7 +84,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Skip duplicate actions
|
- name: Skip duplicate actions
|
||||||
id: skip_check
|
id: skip_check
|
||||||
uses: fkirc/skip-duplicate-actions@v5
|
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5
|
||||||
with:
|
with:
|
||||||
concurrent_skipping: "same_content_newer"
|
concurrent_skipping: "same_content_newer"
|
||||||
cancel_others: true
|
cancel_others: true
|
||||||
@@ -97,10 +97,10 @@ jobs:
|
|||||||
if: needs.skip-check.outputs.should_skip != 'true'
|
if: needs.skip-check.outputs.should_skip != 'true'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v7
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
- uses: dtolnay/rust-toolchain@stable
|
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
|
||||||
- name: Typos check with custom config file
|
- name: Typos check with custom config file
|
||||||
uses: crate-ci/typos@master
|
uses: crate-ci/typos@37bb98842b0d8c4ffebdb75301a13db0267cef89 # master
|
||||||
|
|
||||||
test-and-lint:
|
test-and-lint:
|
||||||
name: Test and Lint
|
name: Test and Lint
|
||||||
@@ -112,7 +112,7 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -160,7 +160,7 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -188,7 +188,7 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -204,7 +204,7 @@ jobs:
|
|||||||
cargo build -p rustfs --bins --jobs 2
|
cargo build -p rustfs --bins --jobs 2
|
||||||
|
|
||||||
- name: Upload debug binary
|
- name: Upload debug binary
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: rustfs-debug-binary
|
name: rustfs-debug-binary
|
||||||
path: target/debug/rustfs
|
path: target/debug/rustfs
|
||||||
@@ -221,7 +221,7 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -237,7 +237,7 @@ jobs:
|
|||||||
cargo build -p rustfs --bins --features rio-v2 --jobs 2
|
cargo build -p rustfs --bins --features rio-v2 --jobs 2
|
||||||
|
|
||||||
- name: Upload debug binary
|
- name: Upload debug binary
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: rustfs-debug-binary-rio-v2
|
name: rustfs-debug-binary-rio-v2
|
||||||
path: target/debug/rustfs
|
path: target/debug/rustfs
|
||||||
@@ -252,10 +252,10 @@ jobs:
|
|||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Download debug binary
|
- name: Download debug binary
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
||||||
with:
|
with:
|
||||||
name: rustfs-debug-binary
|
name: rustfs-debug-binary
|
||||||
path: target/debug
|
path: target/debug
|
||||||
@@ -264,13 +264,13 @@ jobs:
|
|||||||
run: chmod +x ./target/debug/rustfs
|
run: chmod +x ./target/debug/rustfs
|
||||||
|
|
||||||
- name: Setup Rust toolchain for s3s-e2e installation
|
- name: Setup Rust toolchain for s3s-e2e installation
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
|
||||||
|
|
||||||
- name: Run delete-marker migration proof
|
- name: Run delete-marker migration proof
|
||||||
run: cargo test -p e2e_test delete_marker_migration_semantics -- --nocapture --test-threads=1
|
run: cargo test -p e2e_test delete_marker_migration_semantics -- --nocapture --test-threads=1
|
||||||
|
|
||||||
- name: Install s3s-e2e test tool
|
- name: Install s3s-e2e test tool
|
||||||
uses: taiki-e/cache-cargo-install-action@v2
|
uses: taiki-e/cache-cargo-install-action@7447f04c51f2ba27ca35e7f1e28fab848c5b3ba7 # v2
|
||||||
with:
|
with:
|
||||||
tool: s3s-e2e
|
tool: s3s-e2e
|
||||||
git: https://github.com/s3s-project/s3s.git
|
git: https://github.com/s3s-project/s3s.git
|
||||||
@@ -288,7 +288,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload test logs
|
- name: Upload test logs
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: e2e-test-logs-${{ github.run_number }}
|
name: e2e-test-logs-${{ github.run_number }}
|
||||||
path: ${{ runner.temp }}/rustfs-e2e-*/rustfs.log
|
path: ${{ runner.temp }}/rustfs-e2e-*/rustfs.log
|
||||||
@@ -302,7 +302,7 @@ jobs:
|
|||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Clean up previous test run
|
- name: Clean up previous test run
|
||||||
run: |
|
run: |
|
||||||
@@ -310,7 +310,7 @@ jobs:
|
|||||||
rm -f /tmp/rustfs.log
|
rm -f /tmp/rustfs.log
|
||||||
|
|
||||||
- name: Download debug binary
|
- name: Download debug binary
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
||||||
with:
|
with:
|
||||||
name: rustfs-debug-binary-rio-v2
|
name: rustfs-debug-binary-rio-v2
|
||||||
path: target/debug
|
path: target/debug
|
||||||
@@ -319,10 +319,10 @@ jobs:
|
|||||||
run: chmod +x ./target/debug/rustfs
|
run: chmod +x ./target/debug/rustfs
|
||||||
|
|
||||||
- name: Setup Rust toolchain for s3s-e2e installation
|
- name: Setup Rust toolchain for s3s-e2e installation
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
|
||||||
|
|
||||||
- name: Install s3s-e2e test tool
|
- name: Install s3s-e2e test tool
|
||||||
uses: taiki-e/cache-cargo-install-action@v2
|
uses: taiki-e/cache-cargo-install-action@7447f04c51f2ba27ca35e7f1e28fab848c5b3ba7 # v2
|
||||||
with:
|
with:
|
||||||
tool: s3s-e2e
|
tool: s3s-e2e
|
||||||
git: https://github.com/s3s-project/s3s.git
|
git: https://github.com/s3s-project/s3s.git
|
||||||
@@ -335,7 +335,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload test logs
|
- name: Upload test logs
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: e2e-test-logs-rio-v2-${{ github.run_number }}
|
name: e2e-test-logs-rio-v2-${{ github.run_number }}
|
||||||
path: /tmp/rustfs.log
|
path: /tmp/rustfs.log
|
||||||
@@ -349,10 +349,10 @@ jobs:
|
|||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Download debug binary
|
- name: Download debug binary
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
||||||
with:
|
with:
|
||||||
name: rustfs-debug-binary
|
name: rustfs-debug-binary
|
||||||
path: target/debug
|
path: target/debug
|
||||||
@@ -376,7 +376,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload s3 test artifacts
|
- name: Upload s3 test artifacts
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: s3tests-implemented-${{ github.run_number }}
|
name: s3tests-implemented-${{ github.run_number }}
|
||||||
path: artifacts/s3tests-single/**
|
path: artifacts/s3tests-single/**
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Report CLA result for merge queue
|
- name: Report CLA result for merge queue
|
||||||
if: github.event_name == 'merge_group'
|
if: github.event_name == 'merge_group'
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
await github.rest.checks.create({
|
await github.rest.checks.create({
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
- name: Create token for rustfs/cla
|
- name: Create token for rustfs/cla
|
||||||
if: github.event_name != 'merge_group'
|
if: github.event_name != 'merge_group'
|
||||||
id: registry-token
|
id: registry-token
|
||||||
uses: actions/create-github-app-token@v3
|
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ vars.CLA_BOT_APP_ID }}
|
app-id: ${{ vars.CLA_BOT_APP_ID }}
|
||||||
private-key: ${{ secrets.CLA_BOT_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.CLA_BOT_APP_PRIVATE_KEY }}
|
||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Run CLA Bot
|
- name: Run CLA Bot
|
||||||
if: github.event_name != 'merge_group'
|
if: github.event_name != 'merge_group'
|
||||||
uses: overtrue/cla-bot@v0.0.9
|
uses: overtrue/cla-bot@5e5929846a60cfb42b16d0d38e135ef67d94fc88 # v0.0.9
|
||||||
with:
|
with:
|
||||||
github-token: ${{ github.token }}
|
github-token: ${{ github.token }}
|
||||||
registry-token: ${{ steps.registry-token.outputs.token }}
|
registry-token: ${{ steps.registry-token.outputs.token }}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ jobs:
|
|||||||
create_latest: ${{ steps.check.outputs.create_latest }}
|
create_latest: ${{ steps.check.outputs.create_latest }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
# For workflow_run events, checkout the specific commit that triggered the workflow
|
# For workflow_run events, checkout the specific commit that triggered the workflow
|
||||||
@@ -278,33 +278,33 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
|
||||||
with:
|
with:
|
||||||
username: ${{ env.DOCKERHUB_USERNAME }}
|
username: ${{ env.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ secrets.GHCR_USERNAME }}
|
username: ${{ secrets.GHCR_USERNAME }}
|
||||||
password: ${{ secrets.GHCR_PASSWORD }}
|
password: ${{ secrets.GHCR_PASSWORD }}
|
||||||
|
|
||||||
- name: Login to Quay.io
|
- name: Login to Quay.io
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
|
||||||
with:
|
with:
|
||||||
registry: quay.io
|
registry: quay.io
|
||||||
username: ${{ secrets.QUAY_USERNAME }}
|
username: ${{ secrets.QUAY_USERNAME }}
|
||||||
password: ${{ secrets.QUAY_PASSWORD }}
|
password: ${{ secrets.QUAY_PASSWORD }}
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
|
||||||
|
|
||||||
- name: Extract metadata and generate tags
|
- name: Extract metadata and generate tags
|
||||||
id: meta
|
id: meta
|
||||||
@@ -386,7 +386,7 @@ jobs:
|
|||||||
echo "🔖 Version: $VERSION"
|
echo "🔖 Version: $VERSION"
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ${{ matrix.file }}
|
file: ${{ matrix.file }}
|
||||||
|
|||||||
@@ -66,10 +66,10 @@ jobs:
|
|||||||
runs-on: ubicloud-standard-2
|
runs-on: ubicloud-standard-2
|
||||||
timeout-minutes: 120
|
timeout-minutes: 120
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v7
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Cache pip downloads
|
- name: Cache pip downloads
|
||||||
uses: actions/cache@v6
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/pip
|
path: ~/.cache/pip
|
||||||
key: ${{ runner.os }}-pip-e2e-s3tests-${{ hashFiles('.github/workflows/e2e-s3tests.yml') }}
|
key: ${{ runner.os }}-pip-e2e-s3tests-${{ hashFiles('.github/workflows/e2e-s3tests.yml') }}
|
||||||
@@ -82,7 +82,7 @@ jobs:
|
|||||||
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Enable buildx
|
- name: Enable buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
|
||||||
|
|
||||||
- name: Build RustFS image (source, cached)
|
- name: Build RustFS image (source, cached)
|
||||||
run: |
|
run: |
|
||||||
@@ -218,7 +218,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
if: always() && env.ACT != 'true'
|
if: always() && env.ACT != 'true'
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: s3tests-single
|
name: s3tests-single
|
||||||
path: artifacts/**
|
path: artifacts/**
|
||||||
@@ -228,10 +228,10 @@ jobs:
|
|||||||
runs-on: ubicloud-standard-2
|
runs-on: ubicloud-standard-2
|
||||||
timeout-minutes: 150
|
timeout-minutes: 150
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v7
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Cache pip downloads
|
- name: Cache pip downloads
|
||||||
uses: actions/cache@v6
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/pip
|
path: ~/.cache/pip
|
||||||
key: ${{ runner.os }}-pip-e2e-s3tests-${{ hashFiles('.github/workflows/e2e-s3tests.yml') }}
|
key: ${{ runner.os }}-pip-e2e-s3tests-${{ hashFiles('.github/workflows/e2e-s3tests.yml') }}
|
||||||
@@ -244,7 +244,7 @@ jobs:
|
|||||||
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Enable buildx
|
- name: Enable buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
|
||||||
|
|
||||||
- name: Build RustFS image (source, cached)
|
- name: Build RustFS image (source, cached)
|
||||||
run: |
|
run: |
|
||||||
@@ -437,7 +437,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
if: always() && env.ACT != 'true'
|
if: always() && env.ACT != 'true'
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: s3tests-multi
|
name: s3tests-multi
|
||||||
path: artifacts/**
|
path: artifacts/**
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -76,7 +76,7 @@ jobs:
|
|||||||
cache-save-if: ${{ github.ref == 'refs/heads/main' || github.event_name == 'schedule' }}
|
cache-save-if: ${{ github.ref == 'refs/heads/main' || github.event_name == 'schedule' }}
|
||||||
|
|
||||||
- name: Install cargo-fuzz
|
- name: Install cargo-fuzz
|
||||||
uses: taiki-e/install-action@v2
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2
|
||||||
with:
|
with:
|
||||||
tool: cargo-fuzz
|
tool: cargo-fuzz
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
- name: Upload prebuilt fuzz binaries
|
- name: Upload prebuilt fuzz binaries
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: fuzz-prebuilt-binaries-${{ github.run_number }}
|
name: fuzz-prebuilt-binaries-${{ github.run_number }}
|
||||||
path: |
|
path: |
|
||||||
@@ -123,10 +123,10 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Download prebuilt fuzz binaries
|
- name: Download prebuilt fuzz binaries
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
||||||
with:
|
with:
|
||||||
name: fuzz-prebuilt-binaries-${{ github.run_number }}
|
name: fuzz-prebuilt-binaries-${{ github.run_number }}
|
||||||
path: fuzz/prebuilt/${{ env.CARGO_BUILD_TARGET }}/release
|
path: fuzz/prebuilt/${{ env.CARGO_BUILD_TARGET }}/release
|
||||||
@@ -145,7 +145,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload fuzz smoke artifacts
|
- name: Upload fuzz smoke artifacts
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: fuzz-smoke-${{ matrix.target }}-${{ github.run_number }}
|
name: fuzz-smoke-${{ matrix.target }}-${{ github.run_number }}
|
||||||
path: |
|
path: |
|
||||||
@@ -174,10 +174,10 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Download prebuilt fuzz binaries
|
- name: Download prebuilt fuzz binaries
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
||||||
with:
|
with:
|
||||||
name: fuzz-prebuilt-binaries-${{ github.run_number }}
|
name: fuzz-prebuilt-binaries-${{ github.run_number }}
|
||||||
path: fuzz/prebuilt/${{ env.CARGO_BUILD_TARGET }}/release
|
path: fuzz/prebuilt/${{ env.CARGO_BUILD_TARGET }}/release
|
||||||
@@ -196,7 +196,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload nightly fuzz artifacts
|
- name: Upload nightly fuzz artifacts
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: fuzz-nightly-${{ matrix.target }}-${{ github.run_number }}
|
name: fuzz-nightly-${{ matrix.target }}-${{ github.run_number }}
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout helm chart repo
|
- name: Checkout helm chart repo
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Normalize release version
|
- name: Normalize release version
|
||||||
id: version
|
id: version
|
||||||
@@ -78,7 +78,7 @@ jobs:
|
|||||||
sed -i -E 's/^appVersion:.*/appVersion: "${{ steps.version.outputs.app_version }}"/' helm/rustfs/Chart.yaml
|
sed -i -E 's/^appVersion:.*/appVersion: "${{ steps.version.outputs.app_version }}"/' helm/rustfs/Chart.yaml
|
||||||
|
|
||||||
- name: Set up Helm
|
- name: Set up Helm
|
||||||
uses: azure/setup-helm@v4.3.0
|
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
|
||||||
|
|
||||||
- name: Test Helm Chart Templates
|
- name: Test Helm Chart Templates
|
||||||
run: ./scripts/test_helm_templates.sh
|
run: ./scripts/test_helm_templates.sh
|
||||||
@@ -92,7 +92,7 @@ jobs:
|
|||||||
--version "${{ steps.version.outputs.chart_version }}"
|
--version "${{ steps.version.outputs.chart_version }}"
|
||||||
|
|
||||||
- name: Upload helm package as artifact
|
- name: Upload helm package as artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: helm-package
|
name: helm-package
|
||||||
path: helm/rustfs/*.tgz
|
path: helm/rustfs/*.tgz
|
||||||
@@ -105,19 +105,19 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout helm package repo
|
- name: Checkout helm package repo
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
with:
|
with:
|
||||||
repository: rustfs/helm
|
repository: rustfs/helm
|
||||||
token: ${{ secrets.RUSTFS_HELM_PACKAGE }}
|
token: ${{ secrets.RUSTFS_HELM_PACKAGE }}
|
||||||
|
|
||||||
- name: Download helm package
|
- name: Download helm package
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
|
||||||
with:
|
with:
|
||||||
name: helm-package
|
name: helm-package
|
||||||
path: ./
|
path: ./
|
||||||
|
|
||||||
- name: Set up helm
|
- name: Set up helm
|
||||||
uses: azure/setup-helm@v4.3.0
|
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
|
||||||
|
|
||||||
- name: Generate index
|
- name: Generate index
|
||||||
run: helm repo index . --url https://charts.rustfs.com
|
run: helm repo index . --url https://charts.rustfs.com
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: usthe/issues-translate-action@v2.7
|
- uses: usthe/issues-translate-action@b41f55ddc81d7d54bd542a4f289fe28ec081898e # v2.7
|
||||||
with:
|
with:
|
||||||
IS_MODIFY_TITLE: false
|
IS_MODIFY_TITLE: false
|
||||||
# not require, default false. Decide whether to modify the issue title
|
# not require, default false. Decide whether to modify the issue title
|
||||||
|
|||||||
@@ -36,20 +36,20 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: DeterminateSystems/determinate-nix-action@v3
|
uses: DeterminateSystems/determinate-nix-action@629b284231c2a82554b724e357e47fc6020833c8 # v3
|
||||||
|
|
||||||
- name: Cache Nix
|
- name: Cache Nix
|
||||||
uses: DeterminateSystems/flakehub-cache-action@v3.20.0
|
uses: DeterminateSystems/flakehub-cache-action@1f9a51a2959d3e26c7838c6f3bf9f48acae525ea # v3.20.0
|
||||||
|
|
||||||
- name: Check Nix flake inputs
|
- name: Check Nix flake inputs
|
||||||
uses: DeterminateSystems/flake-checker-action@v12
|
uses: DeterminateSystems/flake-checker-action@3164002371bc90729c68af0e24d5aacf20d7c9f6 # v12
|
||||||
|
|
||||||
- name: Update flake.lock
|
- name: Update flake.lock
|
||||||
id: update
|
id: update
|
||||||
uses: DeterminateSystems/update-flake-lock@main
|
uses: DeterminateSystems/update-flake-lock@fd9359ac79d0e912f1b4b947a48470b3e2799b56 # main
|
||||||
with:
|
with:
|
||||||
git-author-name: houseme
|
git-author-name: houseme
|
||||||
git-author-email: housemecn@gmail.com
|
git-author-email: housemecn@gmail.com
|
||||||
|
|||||||
@@ -52,10 +52,10 @@ jobs:
|
|||||||
NIX_CURL_FLAGS: -A cargo/stable
|
NIX_CURL_FLAGS: -A cargo/stable
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: DeterminateSystems/determinate-nix-action@v3.21.0
|
uses: DeterminateSystems/determinate-nix-action@4eea0b33e3d1f02ecfe37cf16e7204c424009606 # v3.21.0
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
extra-conf: |
|
extra-conf: |
|
||||||
@@ -64,10 +64,10 @@ jobs:
|
|||||||
max-jobs = 1
|
max-jobs = 1
|
||||||
|
|
||||||
- name: Cache Nix
|
- name: Cache Nix
|
||||||
uses: DeterminateSystems/flakehub-cache-action@v3.21.0
|
uses: DeterminateSystems/flakehub-cache-action@c01e819d047464c3edf6ba778f075952af5a3aa7 # v3.21.0
|
||||||
|
|
||||||
- name: Check Nix Flake Inputs
|
- name: Check Nix Flake Inputs
|
||||||
uses: DeterminateSystems/flake-checker-action@v12
|
uses: DeterminateSystems/flake-checker-action@3164002371bc90729c68af0e24d5aacf20d7c9f6 # v12
|
||||||
with:
|
with:
|
||||||
fail-mode: true
|
fail-mode: true
|
||||||
ignore-missing-flake-lock: false
|
ignore-missing-flake-lock: false
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -60,7 +60,7 @@ jobs:
|
|||||||
run: rustup component add llvm-tools-preview
|
run: rustup component add llvm-tools-preview
|
||||||
|
|
||||||
- name: Install samply profiler
|
- name: Install samply profiler
|
||||||
uses: taiki-e/cache-cargo-install-action@v2
|
uses: taiki-e/cache-cargo-install-action@7447f04c51f2ba27ca35e7f1e28fab848c5b3ba7 # v2
|
||||||
with:
|
with:
|
||||||
tool: samply
|
tool: samply
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload profile data
|
- name: Upload profile data
|
||||||
if: steps.profiling.outputs.profile_generated == 'true'
|
if: steps.profiling.outputs.profile_generated == 'true'
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: performance-profile-${{ github.run_number }}
|
name: performance-profile-${{ github.run_number }}
|
||||||
path: samply-profile.json
|
path: samply-profile.json
|
||||||
@@ -123,7 +123,7 @@ jobs:
|
|||||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||||
|
|
||||||
- name: Setup Rust environment
|
- name: Setup Rust environment
|
||||||
uses: ./.github/actions/setup
|
uses: ./.github/actions/setup
|
||||||
@@ -139,7 +139,7 @@ jobs:
|
|||||||
tee benchmark-results.json
|
tee benchmark-results.json
|
||||||
|
|
||||||
- name: Upload benchmark results
|
- name: Upload benchmark results
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
with:
|
with:
|
||||||
name: benchmark-results-${{ github.run_number }}
|
name: benchmark-results-${{ github.run_number }}
|
||||||
path: benchmark-results.json
|
path: benchmark-results.json
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9
|
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.'
|
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.'
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ English | <a href="https://github.com/rustfs/rustfs/blob/main/README_ZH.md">简
|
|||||||
<a href="https://readme-i18n.com/rustfs/rustfs?lang=ru">Русский</a>
|
<a href="https://readme-i18n.com/rustfs/rustfs?lang=ru">Русский</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
RustFS is a high-performance, distributed object storage system built in Rust—one of the most loved programming languages worldwide. RustFS combines the simplicity of MinIO with the memory safety and raw performance of Rust. It offers full S3 compatibility, is completely open-source, and is optimized for data lakes, AI, and big data workloads.
|
RustFS is a high-performance, distributed object storage system built in Rust—one of the most loved programming languages worldwide. RustFS combines the simplicity of MinIO with the memory safety and raw performance of Rust. It offers broad S3 API compatibility for supported features, is completely open-source, and is optimized for data lakes, AI, and big data workloads.
|
||||||
|
|
||||||
Unlike other storage systems, RustFS is released under the permissible Apache 2.0 license, avoiding the restrictions of AGPL. With Rust as its foundation, RustFS delivers superior speed and secure distributed features for next-generation object storage.
|
Unlike other storage systems, RustFS is released under the permissible Apache 2.0 license, avoiding the restrictions of AGPL. With Rust as its foundation, RustFS delivers superior speed and secure distributed features for next-generation object storage.
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ Unlike other storage systems, RustFS is released under the permissible Apache 2.
|
|||||||
|
|
||||||
- **High Performance**: Built with Rust to ensure maximum speed and resource efficiency.
|
- **High Performance**: Built with Rust to ensure maximum speed and resource efficiency.
|
||||||
- **Distributed Architecture**: Scalable and fault-tolerant design suitable for large-scale deployments.
|
- **Distributed Architecture**: Scalable and fault-tolerant design suitable for large-scale deployments.
|
||||||
- **S3 Compatibility**: Seamless integration with existing S3-compatible applications and tools.
|
- **S3 Compatibility**: Seamless integration with common S3-compatible applications and tools; current coverage is tracked in the [S3 compatibility matrix](docs/architecture/s3-compatibility-matrix.md).
|
||||||
- **OpenStack Swift API**: Native support for Swift protocol with Keystone authentication.
|
- **OpenStack Swift API**: Native support for Swift protocol with Keystone authentication.
|
||||||
- **OpenStack Keystone Integration**: Native support for OpenStack Keystone authentication with X-Auth-Token headers.
|
- **OpenStack Keystone Integration**: Native support for OpenStack Keystone authentication with X-Auth-Token headers.
|
||||||
- **Data Lake Support**: Optimized for high-throughput big data and AI workloads.
|
- **Data Lake Support**: Optimized for high-throughput big data and AI workloads.
|
||||||
@@ -81,7 +81,7 @@ Unlike other storage systems, RustFS is released under the permissible Apache 2.
|
|||||||
| **Language & Safety** | **Rust-based**<br>Memory safety by design. | **Go or C-based**<br>Potential for memory GC pauses or leaks. |
|
| **Language & Safety** | **Rust-based**<br>Memory safety by design. | **Go or C-based**<br>Potential for memory GC pauses or leaks. |
|
||||||
| **Data Sovereignty** | **No Telemetry / Full Compliance**<br>Guards against unauthorized cross-border data egress. Compliant with GDPR (EU/UK), CCPA (US), and APPI (Japan). | **Potential Risk**<br>Possible legal exposure and unwanted data telemetry. |
|
| **Data Sovereignty** | **No Telemetry / Full Compliance**<br>Guards against unauthorized cross-border data egress. Compliant with GDPR (EU/UK), CCPA (US), and APPI (Japan). | **Potential Risk**<br>Possible legal exposure and unwanted data telemetry. |
|
||||||
| **Licensing** | **Permissive Apache 2.0**<br>Business-friendly, no "poison pill" clauses. | **Restrictive AGPL v3**<br>Risk of license traps and intellectual property pollution. |
|
| **Licensing** | **Permissive Apache 2.0**<br>Business-friendly, no "poison pill" clauses. | **Restrictive AGPL v3**<br>Risk of license traps and intellectual property pollution. |
|
||||||
| **Compatibility** | **100% S3 Compatible**<br>Works with any cloud provider or client, anywhere. | **Variable Compatibility**<br>May lack support for local cloud vendors or specific APIs. |
|
| **Compatibility** | **S3-Compatible Core**<br>Works with common S3-compatible clients, with coverage tracked in the compatibility matrix. | **Variable Compatibility**<br>May lack support for local cloud vendors or specific APIs. |
|
||||||
| **Edge & IoT** | **Strong Edge Support**<br>Ideal for secure, innovative edge devices. | **Weak Edge Support**<br>Often too heavy for edge gateways. |
|
| **Edge & IoT** | **Strong Edge Support**<br>Ideal for secure, innovative edge devices. | **Weak Edge Support**<br>Often too heavy for edge gateways. |
|
||||||
| **Risk Profile** | **Enterprise Risk Mitigation**<br>Clear IP rights and safe for commercial use. | **Legal Risks**<br>Intellectual property ambiguity and usage restrictions. |
|
| **Risk Profile** | **Enterprise Risk Mitigation**<br>Clear IP rights and safe for commercial use. | **Legal Risks**<br>Intellectual property ambiguity and usage restrictions. |
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -34,7 +34,7 @@
|
|||||||
<a href="https://readme-i18n.com/rustfs/rustfs?lang=ru">Русский</a>
|
<a href="https://readme-i18n.com/rustfs/rustfs?lang=ru">Русский</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
RustFS 是一个基于 Rust 构建的高性能分布式对象存储系统。Rust 是全球最受开发者喜爱的编程语言之一,RustFS 完美结合了 MinIO 的简洁性与 Rust 的内存安全及高性能优势。它提供完整的 S3 兼容性,完全开源,并专为数据湖、人工智能(AI)和大数据负载进行了优化。
|
RustFS 是一个基于 Rust 构建的高性能分布式对象存储系统。Rust 是全球最受开发者喜爱的编程语言之一,RustFS 结合了 MinIO 的简洁性与 Rust 的内存安全及高性能优势。它为已支持功能提供广泛的 S3 API 兼容性,完全开源,并专为数据湖、人工智能(AI)和大数据负载进行了优化。
|
||||||
|
|
||||||
与其他存储系统不同,RustFS 采用更宽松、商业友好的 Apache 2.0 许可证,避免了 AGPL 协议的限制。以 Rust 为基石,RustFS 为下一代对象存储提供了更快的速度和更安全的分布式特性。
|
与其他存储系统不同,RustFS 采用更宽松、商业友好的 Apache 2.0 许可证,避免了 AGPL 协议的限制。以 Rust 为基石,RustFS 为下一代对象存储提供了更快的速度和更安全的分布式特性。
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ RustFS 是一个基于 Rust 构建的高性能分布式对象存储系统。Rust
|
|||||||
|
|
||||||
- **高性能**:基于 Rust 构建,确保极致的速度和资源效率。
|
- **高性能**:基于 Rust 构建,确保极致的速度和资源效率。
|
||||||
- **分布式架构**:可扩展且容错的设计,适用于大规模部署。
|
- **分布式架构**:可扩展且容错的设计,适用于大规模部署。
|
||||||
- **S3 兼容性**:与现有的 S3 兼容应用和工具无缝集成。
|
- **S3 兼容性**:与常见 S3 兼容应用和工具集成,当前覆盖范围见 [S3 兼容矩阵](docs/architecture/s3-compatibility-matrix.md)。
|
||||||
- **数据湖支持**:专为高吞吐量的大数据和 AI 工作负载优化。
|
- **数据湖支持**:专为高吞吐量的大数据和 AI 工作负载优化。
|
||||||
- **完全开源**:采用 Apache 2.0 许可证,鼓励社区贡献和商业使用。
|
- **完全开源**:采用 Apache 2.0 许可证,鼓励社区贡献和商业使用。
|
||||||
- **简单易用**:设计简洁,易于部署和管理。
|
- **简单易用**:设计简洁,易于部署和管理。
|
||||||
@@ -77,7 +77,7 @@ RustFS 是一个基于 Rust 构建的高性能分布式对象存储系统。Rust
|
|||||||
| **语言与安全** | **基于 Rust 开发**<br>天生的内存安全。 | **基于 Go 或 C 开发**<br>存在内存 GC 停顿或内存泄漏的潜在风险。 |
|
| **语言与安全** | **基于 Rust 开发**<br>天生的内存安全。 | **基于 Go 或 C 开发**<br>存在内存 GC 停顿或内存泄漏的潜在风险。 |
|
||||||
| **数据主权** | **无遥测 / 完全合规**<br>防止未经授权的数据跨境传输。完全符合 GDPR (欧盟/英国)、CCPA (美国) 和 APPI (日本) 等法规。 | **潜在风险**<br>可能存在法律风险和隐蔽的数据遥测(Telemetry)。 |
|
| **数据主权** | **无遥测 / 完全合规**<br>防止未经授权的数据跨境传输。完全符合 GDPR (欧盟/英国)、CCPA (美国) 和 APPI (日本) 等法规。 | **潜在风险**<br>可能存在法律风险和隐蔽的数据遥测(Telemetry)。 |
|
||||||
| **开源协议** | **宽松的 Apache 2.0**<br>商业友好,无“毒丸”条款。 | **受限的 AGPL v3**<br>存在许可证陷阱和知识产权污染的风险。 |
|
| **开源协议** | **宽松的 Apache 2.0**<br>商业友好,无“毒丸”条款。 | **受限的 AGPL v3**<br>存在许可证陷阱和知识产权污染的风险。 |
|
||||||
| **兼容性** | **100% S3 兼容**<br>适用于任何云提供商和客户端,随处运行。 | **兼容性不一**<br>虽然支持 S3,但可能缺乏对本地云厂商或特定 API 的支持。 |
|
| **兼容性** | **S3 核心兼容**<br>适配常见 S3 兼容客户端,覆盖范围以兼容矩阵为准。 | **兼容性不一**<br>虽然支持 S3,但可能缺乏对本地云厂商或特定 API 的支持。 |
|
||||||
| **边缘与 IoT** | **强大的边缘支持**<br>非常适合安全、创新的边缘设备。 | **边缘支持较弱**<br>对于边缘网关来说通常过于沉重。 |
|
| **边缘与 IoT** | **强大的边缘支持**<br>非常适合安全、创新的边缘设备。 | **边缘支持较弱**<br>对于边缘网关来说通常过于沉重。 |
|
||||||
| **成本** | **稳定且免费**<br>免费社区支持,稳定的商业定价。 | **高昂成本**<br>1PiB 的成本可能高达 250,000 美元。 |
|
| **成本** | **稳定且免费**<br>免费社区支持,稳定的商业定价。 | **高昂成本**<br>1PiB 的成本可能高达 250,000 美元。 |
|
||||||
| **风险控制** | **企业级风险规避**<br>清晰的知识产权,商业使用安全无忧。 | **法律风险**<br>知识产权归属模糊及使用限制风险。 |
|
| **风险控制** | **企业级风险规避**<br>清晰的知识产权,商业使用安全无忧。 | **法律风险**<br>知识产权归属模糊及使用限制风险。 |
|
||||||
|
|||||||
@@ -5,7 +5,10 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
|
|||||||
## Current Context
|
## Current Context
|
||||||
|
|
||||||
- Issue: [`rustfs/backlog#660`](https://github.com/rustfs/backlog/issues/660)
|
- Issue: [`rustfs/backlog#660`](https://github.com/rustfs/backlog/issues/660)
|
||||||
- Branch: `overtrue/arch-final-migration-validation`
|
is closed after PR #3965; execution index
|
||||||
|
[`rustfs/backlog#665`](https://github.com/rustfs/backlog/issues/665) is
|
||||||
|
treated as the historical task split once final sync is posted.
|
||||||
|
- Branch: `main` closeout state, with final audit remediation recorded here.
|
||||||
- Baseline: completed `C-011/C-012/C-013/API-055/API-059/API-079/API-080/API-081/API-082/API-083/API-084/API-085/API-086/API-087/API-088/API-089/API-090/API-091/API-092/API-093/API-094/API-095/API-096/API-097/API-098/API-099/API-100/API-101/API-102/API-103/API-104/API-105/API-106/API-107/API-108/API-109/API-110/API-111/API-112/API-113/API-114/API-115/API-116/API-117/API-118/API-119/API-120/API-121/API-122/API-123/API-124/API-125/API-126/API-127/API-128/API-129/API-130/API-131/API-132/API-133/API-134/API-135/API-136/API-137/API-138/API-139/API-140/API-141/API-142/API-143/API-144/API-145/API-146/API-147/API-148/API-149/API-150/API-151/API-152/API-153/API-154/API-155/API-156/API-157/API-158/API-159/API-160/API-161/API-162/API-163/API-164/API-165/API-166/API-167/API-168/API-169/API-170/API-171/API-172/API-173/API-174/API-175/API-176/API-177/API-178/API-179/API-180/API-181/API-182/API-183/API-184/API-185/API-186/API-187/API-188/API-189/API-190/API-191/API-192/API-193/API-194/API-195/API-196/API-197/API-198/API-199/API-200/API-201/API-202/API-203/API-204/API-205/API-206/API-207/API-208/API-209/API-210/API-211/API-212/API-213/API-214/API-215/API-216/API-217/API-218/API-219/API-220/API-221/API-222/API-223/API-224/API-225/API-226/API-227/API-228/API-229/API-230/API-231/API-232/API-233/API-234/API-235/API-236/API-237/API-238/API-239/API-240/API-241/API-242/API-243/API-244/API-245/API-246/API-247/API-248/API-249/API-250/API-251/API-252/API-253/API-254/CTX-002`.
|
- Baseline: completed `C-011/C-012/C-013/API-055/API-059/API-079/API-080/API-081/API-082/API-083/API-084/API-085/API-086/API-087/API-088/API-089/API-090/API-091/API-092/API-093/API-094/API-095/API-096/API-097/API-098/API-099/API-100/API-101/API-102/API-103/API-104/API-105/API-106/API-107/API-108/API-109/API-110/API-111/API-112/API-113/API-114/API-115/API-116/API-117/API-118/API-119/API-120/API-121/API-122/API-123/API-124/API-125/API-126/API-127/API-128/API-129/API-130/API-131/API-132/API-133/API-134/API-135/API-136/API-137/API-138/API-139/API-140/API-141/API-142/API-143/API-144/API-145/API-146/API-147/API-148/API-149/API-150/API-151/API-152/API-153/API-154/API-155/API-156/API-157/API-158/API-159/API-160/API-161/API-162/API-163/API-164/API-165/API-166/API-167/API-168/API-169/API-170/API-171/API-172/API-173/API-174/API-175/API-176/API-177/API-178/API-179/API-180/API-181/API-182/API-183/API-184/API-185/API-186/API-187/API-188/API-189/API-190/API-191/API-192/API-193/API-194/API-195/API-196/API-197/API-198/API-199/API-200/API-201/API-202/API-203/API-204/API-205/API-206/API-207/API-208/API-209/API-210/API-211/API-212/API-213/API-214/API-215/API-216/API-217/API-218/API-219/API-220/API-221/API-222/API-223/API-224/API-225/API-226/API-227/API-228/API-229/API-230/API-231/API-232/API-233/API-234/API-235/API-236/API-237/API-238/API-239/API-240/API-241/API-242/API-243/API-244/API-245/API-246/API-247/API-248/API-249/API-250/API-251/API-252/API-253/API-254/CTX-002`.
|
||||||
- Current baseline also includes API-255 from PR #3923, API-256 from PR
|
- Current baseline also includes API-255 from PR #3923, API-256 from PR
|
||||||
#3925, CFG-009 from PR #3927, C-007/C-009 from PR #3935, C-008/C-010
|
#3925, CFG-009 from PR #3927, C-007/C-009 from PR #3935, C-008/C-010
|
||||||
@@ -28,16 +31,18 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
|
|||||||
the GLOB-007 specialized resolver fallback
|
the GLOB-007 specialized resolver fallback
|
||||||
boundary from PR #3958, the GLOB-007 root runtime fallback facade cleanup
|
boundary from PR #3958, the GLOB-007 root runtime fallback facade cleanup
|
||||||
from PR #3961, the Phase 7 global-state/crate-split closeout from
|
from PR #3961, the Phase 7 global-state/crate-split closeout from
|
||||||
PR #3962, and the combined `TEST-RUN-001`/`TEST-REP-001` preservation tests
|
PR #3962, the combined `TEST-RUN-001`/`TEST-REP-001` preservation tests
|
||||||
from PR #3964.
|
from PR #3964, and the final issue #660 validation closeout from PR #3965.
|
||||||
- Current phase PR: final issue #660 validation and closeout after backlog
|
- Current phase PR: post-closeout audit remediation for stale ledger/issue
|
||||||
sub-issues #668 and #669 were closed.
|
wording, S3 compatibility claim alignment, and workflow-pin enforcement.
|
||||||
- Based on: `origin/main` at PR #3964 (`82bbef0b6`).
|
- Based on: `origin/main` at PR #3965 (`79234c030`).
|
||||||
- PR type for this branch: `ci-gate`.
|
- PR type for this branch: `ci-gate`.
|
||||||
- Runtime behavior changes: none.
|
- Runtime behavior changes: none.
|
||||||
- Rust code changes: none.
|
- Rust code changes: none.
|
||||||
- CI/script changes: none intended.
|
- CI/script changes: pin GitHub Actions to commit SHAs and make the workflow
|
||||||
- Docs changes: record final #660 validation status and closeout handoff.
|
pin audit enforce the existing supply-chain check.
|
||||||
|
- Docs changes: align README S3 compatibility wording with the s3tests
|
||||||
|
compatibility matrix and record final #660/#665 closeout state.
|
||||||
|
|
||||||
## Phase 0 Tasks
|
## Phase 0 Tasks
|
||||||
|
|
||||||
@@ -6137,14 +6142,17 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
|
|||||||
|
|
||||||
## Next PRs
|
## Next PRs
|
||||||
|
|
||||||
1. `ci-gate`: merge this final issue #660 validation closeout branch.
|
1. `ci-gate`: merge the post-closeout audit remediation branch.
|
||||||
2. No further issue #660 migration PRs remain after this branch lands; close
|
2. No further issue #660 migration implementation PRs remain; future
|
||||||
backlog #660 with the merged PR reference.
|
architecture work should use a new backlog issue.
|
||||||
|
|
||||||
## Pre-Push Review Log
|
## Pre-Push Review Log
|
||||||
|
|
||||||
| Expert | Status | Notes |
|
| Expert | Status | Notes |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| Quality/architecture | pass | Final audit found no storage-api, ECStore, runtime/lifecycle, extension/security, or background-controller module blocker; this remediation only tightens documentation and CI supply-chain gates. |
|
||||||
|
| Migration preservation | pass | The original local plan is historical; the progress ledger plus backlog closeout agree that #660/#668/#669 are closed, while #665 is only the historical execution index pending final sync. |
|
||||||
|
| Testing/verification | pass | Final audit found runtime/repair/scheduler/KMS/CFG/CTX/API/BGC coverage aligned; it corrected S3 compatibility claim drift and upgraded workflow pin checking from report-only to enforced after pinning all action refs. |
|
||||||
| Quality/architecture | pass | Final validation is docs-only and records the merged #3964 preservation-test closeout without changing runtime, storage, or migration guard code. |
|
| Quality/architecture | pass | Final validation is docs-only and records the merged #3964 preservation-test closeout without changing runtime, storage, or migration guard code. |
|
||||||
| Migration preservation | pass | The latest backlog #660 execution index and migration-progress agree that #668/#669 were the last incomplete sub-issues and are closed after #3964; older local plan files are historical. |
|
| Migration preservation | pass | The latest backlog #660 execution index and migration-progress agree that #668/#669 were the last incomplete sub-issues and are closed after #3964; older local plan files are historical. |
|
||||||
| Testing/verification | pass | Ledger status scan, backlog issue-state check, architecture migration guard, diff hygiene, and docs-only source scan passed for the closeout. |
|
| Testing/verification | pass | Ledger status scan, backlog issue-state check, architecture migration guard, diff hygiene, and docs-only source scan passed for the closeout. |
|
||||||
@@ -9970,8 +9978,8 @@ Notes:
|
|||||||
- `rg -n "^- \[[~! ]\]" docs/architecture/migration-progress.md`:
|
- `rg -n "^- \[[~! ]\]" docs/architecture/migration-progress.md`:
|
||||||
passed; no in-progress, blocked, or not-started task rows remain in the
|
passed; no in-progress, blocked, or not-started task rows remain in the
|
||||||
progress ledger.
|
progress ledger.
|
||||||
- Backlog issue-state check: passed; #668 and #669 are closed, while #660
|
- Backlog issue-state check: passed; #660, #668, and #669 are closed after
|
||||||
remains open until this final validation branch lands.
|
PR #3965, while #665 is a historical execution index pending final sync.
|
||||||
- Historical plan reconciliation: passed; the original local plan files are
|
- Historical plan reconciliation: passed; the original local plan files are
|
||||||
superseded by the latest backlog #660 execution index and this
|
superseded by the latest backlog #660 execution index and this
|
||||||
`migration-progress.md` ledger.
|
`migration-progress.md` ledger.
|
||||||
@@ -9980,13 +9988,24 @@ Notes:
|
|||||||
- Docs-only scope scan: passed; only
|
- Docs-only scope scan: passed; only
|
||||||
`docs/architecture/migration-progress.md` changed.
|
`docs/architecture/migration-progress.md` changed.
|
||||||
|
|
||||||
|
- Issue #660 post-closeout audit remediation:
|
||||||
|
- Five-agent audit: completed across plan/ledger alignment, module structure,
|
||||||
|
behavior invariants, test/quality gates, and document/issue sync.
|
||||||
|
- S3 compatibility claim audit: fixed README overclaim wording and added
|
||||||
|
[`s3-compatibility-matrix.md`](s3-compatibility-matrix.md) tied to
|
||||||
|
`implemented_tests.txt`, `unimplemented_tests.txt`, and
|
||||||
|
`excluded_tests.txt`.
|
||||||
|
- Supply-chain workflow pin audit: all third-party GitHub Actions are pinned
|
||||||
|
to full-length commit SHAs, and `check_workflow_pins.sh --enforce` is the
|
||||||
|
audit workflow gate.
|
||||||
|
|
||||||
## Handoff Notes
|
## Handoff Notes
|
||||||
|
|
||||||
- PR #3951, PR #3961, PR #3962, and PR #3964 are merged. Backlog sub-issues
|
- PR #3951, PR #3961, PR #3962, PR #3964, and PR #3965 are merged. Backlog
|
||||||
#668 (`TEST-RUN-001`) and #669 (`TEST-REP-001`) are closed.
|
issues #660, #668 (`TEST-RUN-001`), and #669 (`TEST-REP-001`) are closed.
|
||||||
- After this final validation branch lands, close backlog #660 with the merged
|
- #665 is the historical execution index for #660. After final issue sync is
|
||||||
PR reference. No further issue #660 migration PRs remain in the progress
|
posted, close #665 rather than reopening #660.
|
||||||
ledger.
|
- The final audit remediated stale closeout wording, README S3 compatibility
|
||||||
|
overclaiming, and report-only workflow pin checking.
|
||||||
- Treat the original local plan files as historical context; the current source
|
- Treat the original local plan files as historical context; the current source
|
||||||
of truth is this progress ledger plus the latest backlog #660 execution
|
of truth is this progress ledger plus the final #660/#665 issue sync.
|
||||||
index.
|
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# S3 Compatibility Matrix
|
||||||
|
|
||||||
|
This matrix records the user-facing S3 compatibility claim for RustFS and ties
|
||||||
|
it to the executable Ceph s3tests lists under `scripts/s3-tests/`.
|
||||||
|
|
||||||
|
## Current Claim
|
||||||
|
|
||||||
|
RustFS provides broad S3 API compatibility for supported features. It does not
|
||||||
|
claim complete coverage of every standard or vendor-specific S3 behavior.
|
||||||
|
|
||||||
|
The root README should use the same wording: supported S3-compatible clients and
|
||||||
|
features are covered by the compatibility matrix and test lists.
|
||||||
|
|
||||||
|
## Test List Sources
|
||||||
|
|
||||||
|
| List | Purpose | Current count | Source |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Implemented tests | Standard S3 tests expected to pass and used by the default local s3tests run. | 449 | `scripts/s3-tests/implemented_tests.txt` |
|
||||||
|
| Unimplemented tests | Standard S3 features planned but not yet implemented. | 17 | `scripts/s3-tests/unimplemented_tests.txt` |
|
||||||
|
| Excluded tests | Vendor-specific or intentionally unsupported behavior excluded from RustFS compatibility gating. | 281 | `scripts/s3-tests/excluded_tests.txt` |
|
||||||
|
|
||||||
|
Counts ignore blank lines and comments.
|
||||||
|
|
||||||
|
## Supported Coverage
|
||||||
|
|
||||||
|
The implemented test list currently covers the common object-storage surface:
|
||||||
|
|
||||||
|
| Area | Status | Evidence |
|
||||||
|
|---|---|---|
|
||||||
|
| Bucket create/delete/list/head | Supported | `implemented_tests.txt` |
|
||||||
|
| Object put/get/delete/copy/head | Supported | `implemented_tests.txt` |
|
||||||
|
| ListObjects/ListObjectsV2 prefix, delimiter, marker, max-keys | Supported | `implemented_tests.txt` |
|
||||||
|
| Multipart upload create/upload/complete/abort and selected multipart copy/checksum/object-attribute behavior | Supported | `implemented_tests.txt` |
|
||||||
|
| Bucket and object tagging | Supported | `implemented_tests.txt` |
|
||||||
|
| Bucket policy put/get/delete | Supported | `implemented_tests.txt` |
|
||||||
|
| Public access block put/get/delete | Supported | `implemented_tests.txt` |
|
||||||
|
| Presigned GET and PUT URLs | Supported | `implemented_tests.txt` |
|
||||||
|
| Range and conditional reads | Supported | `implemented_tests.txt` |
|
||||||
|
| User metadata | Supported | `implemented_tests.txt` |
|
||||||
|
| SSE-C and selected SSE-KMS edge cases | Supported | `implemented_tests.txt` |
|
||||||
|
| Selected versioning, object-lock, checksum, CORS, raw request, and conditional write behavior | Supported | `implemented_tests.txt` |
|
||||||
|
|
||||||
|
## Planned Standard Coverage
|
||||||
|
|
||||||
|
These are standard S3 areas that remain planned work and must not be described
|
||||||
|
as already complete:
|
||||||
|
|
||||||
|
| Area | Status | Evidence |
|
||||||
|
|---|---|---|
|
||||||
|
| Bucket access logging | Planned | `unimplemented_tests.txt` |
|
||||||
|
| POST Object form upload checksum handling | Planned | `unimplemented_tests.txt` |
|
||||||
|
| Bucket ownership controls | Planned | `unimplemented_tests.txt` |
|
||||||
|
| Multipart upload listing and part lookup compatibility edge cases | Not part of default gate | `excluded_tests.txt` |
|
||||||
|
| IAM-account or multi-storage-class dependent cases | Not part of default gate | `unimplemented_tests.txt` |
|
||||||
|
| Tenanted bucket policy edge cases | Needs investigation | `unimplemented_tests.txt` |
|
||||||
|
|
||||||
|
## Intentional Exclusions
|
||||||
|
|
||||||
|
`excluded_tests.txt` contains tests that should not block the RustFS
|
||||||
|
compatibility gate. They fall into two classes:
|
||||||
|
|
||||||
|
- vendor-specific or non-portable behavior not required for RustFS S3
|
||||||
|
compatibility;
|
||||||
|
- intentionally unsupported product behavior, such as ACL authorization.
|
||||||
|
|
||||||
|
## Update Rule
|
||||||
|
|
||||||
|
When a planned S3 feature is implemented, move its passing test entries from
|
||||||
|
`unimplemented_tests.txt` to `implemented_tests.txt`, update this matrix, and
|
||||||
|
avoid changing README wording beyond the supported coverage.
|
||||||
+3
-3
@@ -21,7 +21,7 @@ English | <a href="https://github.com/rustfs/rustfs/blob/main/README_ZH.md">Simp
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
RustFS is a high-performance distributed object storage software built using Rust, one of the most popular languages
|
RustFS is a high-performance distributed object storage software built using Rust, one of the most popular languages
|
||||||
worldwide. Along with MinIO, it shares a range of advantages such as simplicity, S3 compatibility, open-source nature,
|
worldwide. Along with MinIO, it shares a range of advantages such as simplicity, broad S3 API compatibility for supported features, open-source nature,
|
||||||
support for data lakes, AI, and big data. Furthermore, it has a better and more user-friendly open-source license in
|
support for data lakes, AI, and big data. Furthermore, it has a better and more user-friendly open-source license in
|
||||||
comparison to other storage systems, being constructed under the Apache license. As Rust serves as its foundation,
|
comparison to other storage systems, being constructed under the Apache license. As Rust serves as its foundation,
|
||||||
RustFS provides faster speed and safer distributed features for high-performance object storage.
|
RustFS provides faster speed and safer distributed features for high-performance object storage.
|
||||||
@@ -30,7 +30,7 @@ RustFS provides faster speed and safer distributed features for high-performance
|
|||||||
|
|
||||||
- **High Performance**: Built with Rust, ensuring speed and efficiency.
|
- **High Performance**: Built with Rust, ensuring speed and efficiency.
|
||||||
- **Distributed Architecture**: Scalable and fault-tolerant design for large-scale deployments.
|
- **Distributed Architecture**: Scalable and fault-tolerant design for large-scale deployments.
|
||||||
- **S3 Compatibility**: Seamless integration with existing S3-compatible applications.
|
- **S3 Compatibility**: Integration with common S3-compatible applications; current coverage is tracked in the S3 compatibility matrix.
|
||||||
- **Data Lake Support**: Optimized for big data and AI workloads.
|
- **Data Lake Support**: Optimized for big data and AI workloads.
|
||||||
- **Open Source**: Licensed under Apache 2.0, encouraging community contributions and transparency.
|
- **Open Source**: Licensed under Apache 2.0, encouraging community contributions and transparency.
|
||||||
- **User-Friendly**: Designed with simplicity in mind, making it easy to deploy and manage.
|
- **User-Friendly**: Designed with simplicity in mind, making it easy to deploy and manage.
|
||||||
@@ -56,7 +56,7 @@ Stress test server parameters
|
|||||||
| Developed based on Rust language, memory is safer | Developed in Go or C, with potential issues like memory GC/leaks |
|
| Developed based on Rust language, memory is safer | Developed in Go or C, with potential issues like memory GC/leaks |
|
||||||
| Does not report logs to third-party countries | Reporting logs to other third countries may violate national security laws |
|
| Does not report logs to third-party countries | Reporting logs to other third countries may violate national security laws |
|
||||||
| Licensed under Apache, more business-friendly | AGPL V3 License and other License, polluted open source and License traps, infringement of intellectual property rights |
|
| Licensed under Apache, more business-friendly | AGPL V3 License and other License, polluted open source and License traps, infringement of intellectual property rights |
|
||||||
| Comprehensive S3 support, works with domestic and international cloud providers | Full support for S3, but no local cloud vendor support |
|
| S3-compatible core, with coverage tracked in the compatibility matrix | Variable S3 support and local cloud vendor coverage |
|
||||||
| Rust-based development, strong support for secure and innovative devices | Poor support for edge gateways and secure innovative devices |
|
| Rust-based development, strong support for secure and innovative devices | Poor support for edge gateways and secure innovative devices |
|
||||||
| Stable commercial prices, free community support | High pricing, with costs up to $250,000 for 1PiB |
|
| Stable commercial prices, free community support | High pricing, with costs up to $250,000 for 1PiB |
|
||||||
| No risk | Intellectual property risks and risks of prohibited uses |
|
| No risk | Intellectual property risks and risks of prohibited uses |
|
||||||
|
|||||||
Reference in New Issue
Block a user