name: 'AFFiNE Rust build' description: 'Rust build setup, including cache configuration' inputs: target: description: 'Cargo target' required: true package: description: 'Package to build' required: true nx_token: description: 'Nx Cloud access token' required: false runs: using: 'composite' steps: - name: Setup Rust uses: dtolnay/rust-toolchain@stable with: toolchain: stable targets: ${{ inputs.target }} - name: Cache cargo uses: actions/cache@v3 with: path: | ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ .cargo-cache target/${{ inputs.target }} key: stable-${{ inputs.target }}-cargo-cache - name: Build if: ${{ inputs.target != 'x86_64-unknown-linux-gnu' && inputs.target != 'aarch64-unknown-linux-gnu' }} shell: bash run: | yarn workspace ${{ inputs.package }} nx build ${{ inputs.package }} --target ${{ inputs.target }} env: NX_CLOUD_ACCESS_TOKEN: ${{ inputs.nx_token }} - name: Build if: ${{ inputs.target == 'x86_64-unknown-linux-gnu' }} uses: addnab/docker-run-action@v3 with: image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian options: --user 0:0 -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build -e NX_CLOUD_ACCESS_TOKEN=${{ inputs.nx_token }} run: | export CC=x86_64-unknown-linux-gnu-gcc export CC_x86_64_unknown_linux_gnu=x86_64-unknown-linux-gnu-gcc export RUSTFLAGS="-C debuginfo=1" yarn workspace ${{ inputs.package }} nx build ${{ inputs.package }} --target ${{ inputs.target }} chmod -R 777 node_modules/.cache chmod -R 777 target - name: Build if: ${{ inputs.target == 'aarch64-unknown-linux-gnu' }} uses: addnab/docker-run-action@v3 with: image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 options: --user 0:0 -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build -e NX_CLOUD_ACCESS_TOKEN=${{ inputs.nx_token }} run: | export RUSTFLAGS="-C debuginfo=1" yarn workspace ${{ inputs.package }} nx build ${{ inputs.package }} --target ${{ inputs.target }} chmod -R 777 node_modules/.cache chmod -R 777 target