name: Rust Reusable Job on: workflow_call: inputs: run_command: description: "Shell command(s) to execute." required: true type: string timeout_minutes: description: "Job timeout in minutes." required: false default: 20 type: number toolchain: description: "Rust toolchain channel/version." required: false default: "stable" type: string components: description: "Optional rustup components." required: false default: "" type: string targets: description: "Optional rustup targets." required: false default: "" type: string use_cache: description: "Whether to enable rust-cache." required: false default: true type: boolean permissions: contents: read jobs: run: runs-on: blacksmith-2vcpu-ubuntu-2404 timeout-minutes: ${{ inputs.timeout_minutes }} steps: - name: Checkout repository uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable with: toolchain: ${{ inputs.toolchain }} components: ${{ inputs.components }} targets: ${{ inputs.targets }} - name: Restore Rust cache if: inputs.use_cache uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2 - name: Run command shell: bash run: | set -euo pipefail ${{ inputs.run_command }}