diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 1be3e839e..b88b04827 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -59,18 +59,18 @@ runs: protobuf-compiler - name: Install protoc - uses: rustfs/setup-protoc@v3.0.1 + uses: rustfs/setup-protoc@a3705324d8f9bf5b6c3573fb6cf8ae421db55dd6 # v3.0.1 with: version: "34.1" repo-token: ${{ github.token }} - name: Install flatc - uses: Nugine/setup-flatc@v1 + uses: Nugine/setup-flatc@e7855e994773ce90094a3f1626d4afc9080c23ae # v1 with: version: "25.12.19" - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable with: toolchain: ${{ inputs.rust-version }} targets: ${{ inputs.target }} @@ -78,17 +78,17 @@ runs: - name: Install Zig if: inputs.install-cross-tools == 'true' - uses: mlugg/setup-zig@v2 + uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2 - name: Install cargo-zigbuild 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 - uses: taiki-e/install-action@nextest + uses: taiki-e/install-action@96c7780c1d8a2b8723e12031def873a434d39d8d # nextest - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 + uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 with: cache-all-crates: true cache-on-failure: true diff --git a/.github/workflows/architecture-migration-rules.yml b/.github/workflows/architecture-migration-rules.yml index 46a6fcdea..6b9911245 100644 --- a/.github/workflows/architecture-migration-rules.yml +++ b/.github/workflows/architecture-migration-rules.yml @@ -32,7 +32,7 @@ jobs: name: Architecture Migration Rules runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Install ripgrep run: | diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index 9635009ba..5ec3f3678 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -50,10 +50,10 @@ jobs: timeout-minutes: 15 steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Install cargo-audit - uses: taiki-e/install-action@v2 + uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2 with: tool: cargo-audit @@ -63,7 +63,7 @@ jobs: - name: Upload audit results if: always() - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: security-audit-results-${{ github.run_number }} path: audit-results.json @@ -75,7 +75,7 @@ jobs: timeout-minutes: 20 steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -83,7 +83,7 @@ jobs: cache-shared-key: rustfs-cargo-deny - name: Install cargo-deny - uses: taiki-e/install-action@v2 + uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2 with: tool: cargo-deny @@ -96,10 +96,10 @@ jobs: timeout-minutes: 5 steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Report unpinned GitHub Actions - run: ./scripts/security/check_workflow_pins.sh + run: ./scripts/security/check_workflow_pins.sh --enforce dependency-review: name: Dependency Review @@ -110,10 +110,10 @@ jobs: pull-requests: write steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Dependency Review - uses: actions/dependency-review-action@v5 + uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5 with: fail-on-severity: moderate allow-ghsas: GHSA-2f9f-gq7v-9h6m diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9db8d2d50..2220e37c3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -82,7 +82,7 @@ jobs: is_prerelease: ${{ steps.check.outputs.is_prerelease }} steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 with: fetch-depth: 0 @@ -215,7 +215,7 @@ jobs: matrix: ${{ fromJson(needs.prepare-platform-matrix.outputs.matrix) }} steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 with: fetch-depth: 0 @@ -459,7 +459,7 @@ jobs: echo "📊 Version: ${VERSION}" - name: Upload to GitHub artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: ${{ steps.package.outputs.package_name }} path: "rustfs-*.zip" @@ -609,7 +609,7 @@ jobs: release_url: ${{ steps.create.outputs.release_url }} steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 with: fetch-depth: 0 @@ -693,10 +693,10 @@ jobs: actions: read steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Download all build artifacts - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7 with: path: ./artifacts pattern: rustfs-* @@ -837,7 +837,7 @@ jobs: contents: write steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Update release notes and publish env: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28fd3d19d..6643f468a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,7 +84,7 @@ jobs: steps: - name: Skip duplicate actions id: skip_check - uses: fkirc/skip-duplicate-actions@v5 + uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5 with: concurrent_skipping: "same_content_newer" cancel_others: true @@ -97,10 +97,10 @@ jobs: if: needs.skip-check.outputs.should_skip != 'true' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 - - uses: dtolnay/rust-toolchain@stable + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable - name: Typos check with custom config file - uses: crate-ci/typos@master + uses: crate-ci/typos@37bb98842b0d8c4ffebdb75301a13db0267cef89 # master test-and-lint: name: Test and Lint @@ -112,7 +112,7 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -160,7 +160,7 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -188,7 +188,7 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -204,7 +204,7 @@ jobs: cargo build -p rustfs --bins --jobs 2 - name: Upload debug binary - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: rustfs-debug-binary path: target/debug/rustfs @@ -221,7 +221,7 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -237,7 +237,7 @@ jobs: cargo build -p rustfs --bins --features rio-v2 --jobs 2 - name: Upload debug binary - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: rustfs-debug-binary-rio-v2 path: target/debug/rustfs @@ -252,10 +252,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Download debug binary - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7 with: name: rustfs-debug-binary path: target/debug @@ -264,13 +264,13 @@ jobs: run: chmod +x ./target/debug/rustfs - 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 run: cargo test -p e2e_test delete_marker_migration_semantics -- --nocapture --test-threads=1 - name: Install s3s-e2e test tool - uses: taiki-e/cache-cargo-install-action@v2 + uses: taiki-e/cache-cargo-install-action@7447f04c51f2ba27ca35e7f1e28fab848c5b3ba7 # v2 with: tool: s3s-e2e git: https://github.com/s3s-project/s3s.git @@ -288,7 +288,7 @@ jobs: - name: Upload test logs if: failure() - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: e2e-test-logs-${{ github.run_number }} path: ${{ runner.temp }}/rustfs-e2e-*/rustfs.log @@ -302,7 +302,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Clean up previous test run run: | @@ -310,7 +310,7 @@ jobs: rm -f /tmp/rustfs.log - name: Download debug binary - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7 with: name: rustfs-debug-binary-rio-v2 path: target/debug @@ -319,10 +319,10 @@ jobs: run: chmod +x ./target/debug/rustfs - 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 - uses: taiki-e/cache-cargo-install-action@v2 + uses: taiki-e/cache-cargo-install-action@7447f04c51f2ba27ca35e7f1e28fab848c5b3ba7 # v2 with: tool: s3s-e2e git: https://github.com/s3s-project/s3s.git @@ -335,7 +335,7 @@ jobs: - name: Upload test logs if: failure() - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: e2e-test-logs-rio-v2-${{ github.run_number }} path: /tmp/rustfs.log @@ -349,10 +349,10 @@ jobs: timeout-minutes: 60 steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Download debug binary - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7 with: name: rustfs-debug-binary path: target/debug @@ -376,7 +376,7 @@ jobs: - name: Upload s3 test artifacts if: always() - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: s3tests-implemented-${{ github.run_number }} path: artifacts/s3tests-single/** diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 750181051..713ac3fac 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Report CLA result for merge queue if: github.event_name == 'merge_group' - uses: actions/github-script@v8 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 with: script: | await github.rest.checks.create({ @@ -54,7 +54,7 @@ jobs: - name: Create token for rustfs/cla if: github.event_name != 'merge_group' id: registry-token - uses: actions/create-github-app-token@v3 + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3 with: app-id: ${{ vars.CLA_BOT_APP_ID }} private-key: ${{ secrets.CLA_BOT_APP_PRIVATE_KEY }} @@ -64,7 +64,7 @@ jobs: - name: Run CLA Bot if: github.event_name != 'merge_group' - uses: overtrue/cla-bot@v0.0.9 + uses: overtrue/cla-bot@5e5929846a60cfb42b16d0d38e135ef67d94fc88 # v0.0.9 with: github-token: ${{ github.token }} registry-token: ${{ steps.registry-token.outputs.token }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6e6732588..06e79e018 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -84,7 +84,7 @@ jobs: create_latest: ${{ steps.check.outputs.create_latest }} steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 with: fetch-depth: 0 # For workflow_run events, checkout the specific commit that triggered the workflow @@ -278,33 +278,33 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 with: username: ${{ env.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 with: registry: ghcr.io username: ${{ secrets.GHCR_USERNAME }} password: ${{ secrets.GHCR_PASSWORD }} - name: Login to Quay.io - uses: docker/login-action@v3 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 with: registry: quay.io username: ${{ secrets.QUAY_USERNAME }} password: ${{ secrets.QUAY_PASSWORD }} - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 - name: Extract metadata and generate tags id: meta @@ -386,7 +386,7 @@ jobs: echo "🔖 Version: $VERSION" - name: Build and push Docker image - uses: docker/build-push-action@v6 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6 with: context: . file: ${{ matrix.file }} diff --git a/.github/workflows/e2e-s3tests.yml b/.github/workflows/e2e-s3tests.yml index 6282006f7..e79ffa521 100644 --- a/.github/workflows/e2e-s3tests.yml +++ b/.github/workflows/e2e-s3tests.yml @@ -66,10 +66,10 @@ jobs: runs-on: ubicloud-standard-2 timeout-minutes: 120 steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Cache pip downloads - uses: actions/cache@v6 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-e2e-s3tests-${{ hashFiles('.github/workflows/e2e-s3tests.yml') }} @@ -82,7 +82,7 @@ jobs: echo "$HOME/.local/bin" >> "$GITHUB_PATH" - name: Enable buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 - name: Build RustFS image (source, cached) run: | @@ -218,7 +218,7 @@ jobs: - name: Upload artifacts if: always() && env.ACT != 'true' - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: s3tests-single path: artifacts/** @@ -228,10 +228,10 @@ jobs: runs-on: ubicloud-standard-2 timeout-minutes: 150 steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Cache pip downloads - uses: actions/cache@v6 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-e2e-s3tests-${{ hashFiles('.github/workflows/e2e-s3tests.yml') }} @@ -244,7 +244,7 @@ jobs: echo "$HOME/.local/bin" >> "$GITHUB_PATH" - name: Enable buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 - name: Build RustFS image (source, cached) run: | @@ -437,7 +437,7 @@ jobs: - name: Upload artifacts if: always() && env.ACT != 'true' - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: s3tests-multi path: artifacts/** diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index ef1e8b101..43fe3e422 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -65,7 +65,7 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -76,7 +76,7 @@ jobs: cache-save-if: ${{ github.ref == 'refs/heads/main' || github.event_name == 'schedule' }} - name: Install cargo-fuzz - uses: taiki-e/install-action@v2 + uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2 with: tool: cargo-fuzz @@ -92,7 +92,7 @@ jobs: done - name: Upload prebuilt fuzz binaries - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: fuzz-prebuilt-binaries-${{ github.run_number }} path: | @@ -123,10 +123,10 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Download prebuilt fuzz binaries - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7 with: name: fuzz-prebuilt-binaries-${{ github.run_number }} path: fuzz/prebuilt/${{ env.CARGO_BUILD_TARGET }}/release @@ -145,7 +145,7 @@ jobs: - name: Upload fuzz smoke artifacts if: always() - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: fuzz-smoke-${{ matrix.target }}-${{ github.run_number }} path: | @@ -174,10 +174,10 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Download prebuilt fuzz binaries - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7 with: name: fuzz-prebuilt-binaries-${{ github.run_number }} path: fuzz/prebuilt/${{ env.CARGO_BUILD_TARGET }}/release @@ -196,7 +196,7 @@ jobs: - name: Upload nightly fuzz artifacts if: always() - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: fuzz-nightly-${{ matrix.target }}-${{ github.run_number }} path: | diff --git a/.github/workflows/helm-package.yml b/.github/workflows/helm-package.yml index bc4c53ae1..49d038069 100644 --- a/.github/workflows/helm-package.yml +++ b/.github/workflows/helm-package.yml @@ -47,7 +47,7 @@ jobs: steps: - name: Checkout helm chart repo - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Normalize release version id: version @@ -78,7 +78,7 @@ jobs: sed -i -E 's/^appVersion:.*/appVersion: "${{ steps.version.outputs.app_version }}"/' helm/rustfs/Chart.yaml - name: Set up Helm - uses: azure/setup-helm@v4.3.0 + uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0 - name: Test Helm Chart Templates run: ./scripts/test_helm_templates.sh @@ -92,7 +92,7 @@ jobs: --version "${{ steps.version.outputs.chart_version }}" - name: Upload helm package as artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: helm-package path: helm/rustfs/*.tgz @@ -105,19 +105,19 @@ jobs: steps: - name: Checkout helm package repo - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 with: repository: rustfs/helm token: ${{ secrets.RUSTFS_HELM_PACKAGE }} - name: Download helm package - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7 with: name: helm-package path: ./ - name: Set up helm - uses: azure/setup-helm@v4.3.0 + uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0 - name: Generate index run: helm repo index . --url https://charts.rustfs.com diff --git a/.github/workflows/issue-translator.yml b/.github/workflows/issue-translator.yml index 97a058fdf..996ee5061 100644 --- a/.github/workflows/issue-translator.yml +++ b/.github/workflows/issue-translator.yml @@ -27,7 +27,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: usthe/issues-translate-action@v2.7 + - uses: usthe/issues-translate-action@b41f55ddc81d7d54bd542a4f289fe28ec081898e # v2.7 with: IS_MODIFY_TITLE: false # not require, default false. Decide whether to modify the issue title diff --git a/.github/workflows/nix-flake-update.yml b/.github/workflows/nix-flake-update.yml index e0081311f..8d4dc9be6 100644 --- a/.github/workflows/nix-flake-update.yml +++ b/.github/workflows/nix-flake-update.yml @@ -36,20 +36,20 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Install Nix - uses: DeterminateSystems/determinate-nix-action@v3 + uses: DeterminateSystems/determinate-nix-action@629b284231c2a82554b724e357e47fc6020833c8 # v3 - 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 - uses: DeterminateSystems/flake-checker-action@v12 + uses: DeterminateSystems/flake-checker-action@3164002371bc90729c68af0e24d5aacf20d7c9f6 # v12 - name: Update flake.lock id: update - uses: DeterminateSystems/update-flake-lock@main + uses: DeterminateSystems/update-flake-lock@fd9359ac79d0e912f1b4b947a48470b3e2799b56 # main with: git-author-name: houseme git-author-email: housemecn@gmail.com diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 4238a1b3f..1af16c0bf 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -52,10 +52,10 @@ jobs: NIX_CURL_FLAGS: -A cargo/stable steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Install Nix - uses: DeterminateSystems/determinate-nix-action@v3.21.0 + uses: DeterminateSystems/determinate-nix-action@4eea0b33e3d1f02ecfe37cf16e7204c424009606 # v3.21.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} extra-conf: | @@ -64,10 +64,10 @@ jobs: max-jobs = 1 - 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 - uses: DeterminateSystems/flake-checker-action@v12 + uses: DeterminateSystems/flake-checker-action@3164002371bc90729c68af0e24d5aacf20d7c9f6 # v12 with: fail-mode: true ignore-missing-flake-lock: false diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 0124c8204..badc00481 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -46,7 +46,7 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -60,7 +60,7 @@ jobs: run: rustup component add llvm-tools-preview - name: Install samply profiler - uses: taiki-e/cache-cargo-install-action@v2 + uses: taiki-e/cache-cargo-install-action@7447f04c51f2ba27ca35e7f1e28fab848c5b3ba7 # v2 with: tool: samply @@ -109,7 +109,7 @@ jobs: - name: Upload profile data if: steps.profiling.outputs.profile_generated == 'true' - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: performance-profile-${{ github.run_number }} path: samply-profile.json @@ -123,7 +123,7 @@ jobs: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout repository - uses: actions/checkout@v7 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Setup Rust environment uses: ./.github/actions/setup @@ -139,7 +139,7 @@ jobs: tee benchmark-results.json - name: Upload benchmark results - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: name: benchmark-results-${{ github.run_number }} path: benchmark-results.json diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 21dc93267..30520387b 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -21,7 +21,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v9 + - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9 with: 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.' diff --git a/README.md b/README.md index b8c70a77a..f9c40c04c 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ English | 简 Русский
-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. @@ -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. - **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 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. @@ -81,7 +81,7 @@ Unlike other storage systems, RustFS is released under the permissible Apache 2. | **Language & Safety** | **Rust-based**