--- name: Continuous Integration on: push: branches: - main paths-ignore: - "**/README.md" - "**/cd.yml" pull_request: paths-ignore: - "**/README.md" - "**/cd.yml" env: CARGO_TERM_COLOR: always jobs: continuous-integration: name: cargo ${{ matrix.action.command }} - ${{ matrix.job.os }} runs-on: ${{ matrix.job.os }} strategy: fail-fast: false matrix: job: - os: macos-latest os-name: macos - os: ubuntu-latest os-name: linux - os: windows-latest os-name: windows binary-postfix: ".exe" action: - command: build args: --release - command: test args: --all-features --workspace - command: fmt args: --all -- --check - command: clippy args: --all-targets --all-features --workspace -- -D warnings - command: doc args: --no-deps --document-private-items --all-features --workspace --examples - command: publish args: --dry-run steps: - name: Install dependencies if: ${{ matrix.job.os == 'ubuntu-latest' }} run: | sudo sed -i 's/azure.archive.ubuntu.com/archive.ubuntu.com/' /etc/apt/sources.list sudo apt-get update sudo apt-get install libudev-dev - name: Checkout repository uses: actions/checkout@v3 - name: Update Rust toolchain run: rustup update stable && rustup default stable - name: Enable caching uses: Swatinem/rust-cache@v2 - name: Build uses: actions-rs/cargo@v1 with: command: ${{ matrix.action.command }} args: ${{ matrix.action.args }} - name: Archive artifact if: ${{ matrix.action.command == 'build' }} uses: actions/upload-artifact@v3 with: name: espup-${{ matrix.job.os-name }}${{ matrix.job.binary-postfix }} path: target/release/espup${{ matrix.job.binary-postfix }}