name: Rust on: push: branches: [ "main" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Cache Cargo registry uses: actions/cache@v3 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-registry- - name: Cache Cargo index uses: actions/cache@v3 with: path: ~/.cargo/git key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-index- - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable - name: Build run: cargo build --verbose - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: build-artifacts path: target/debug/linutil test: runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v4 - name: Cache Cargo registry uses: actions/cache@v3 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-registry- - name: Cache Cargo index uses: actions/cache@v3 with: path: ~/.cargo/git key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-index- - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable - name: Download build artifacts uses: actions/download-artifact@v4 with: name: build-artifacts path: target/debug - name: Run tests run: cargo test --verbose - name: Replace linutil binary run: cp target/debug/linutil ./linutil