# Copyright 2024 RustFS Team # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: "Setup Rust Environment" description: "Setup Rust development environment with caching for RustFS" inputs: rust-version: description: "Rust version to install" required: false default: "stable" cache-shared-key: description: "Shared cache key for Rust dependencies" required: false default: "rustfs-deps" cache-save-if: description: "Condition for saving cache" required: false default: "true" install-cross-tools: description: "Install cross-compilation tools" required: false default: "false" target: description: "Target architecture to add" required: false default: "" github-token: description: "GitHub token for API access" required: false default: "" runs: using: "composite" steps: - name: Install system dependencies (Ubuntu) if: runner.os == 'Linux' shell: bash run: | sudo apt-get update sudo apt-get install -y \ musl-tools \ build-essential \ pkg-config \ libssl-dev \ ripgrep \ unzip \ zip \ protobuf-compiler - name: Install protoc uses: rustfs/setup-protoc@a3705324d8f9bf5b6c3573fb6cf8ae421db55dd6 # v3.0.1 with: version: "34.1" repo-token: ${{ github.token }} - name: Install flatc uses: Nugine/setup-flatc@e7855e994773ce90094a3f1626d4afc9080c23ae # v1 with: version: "25.12.19" - name: Install Rust toolchain uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable with: toolchain: ${{ inputs.rust-version }} targets: ${{ inputs.target }} components: rustfmt, clippy - name: Install Zig if: inputs.install-cross-tools == 'true' uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2 - name: Install cargo-zigbuild if: inputs.install-cross-tools == 'true' uses: taiki-e/install-action@a21ae4029b089b9ddc45704028756f51ab8abe48 # cargo-zigbuild - name: Install cargo-nextest uses: taiki-e/install-action@96c7780c1d8a2b8723e12031def873a434d39d8d # nextest - name: Setup Rust cache uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 with: cache-all-crates: true cache-on-failure: true shared-key: ${{ inputs.cache-shared-key }} save-if: ${{ inputs.cache-save-if }}