name: CI on: push: tags: - 'v*.*.*' branches: - main pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true - uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-is - name: Setup Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - name: Check formatting run: cargo fmt -- --check - name: Clippy run: cargo clippy -- -Dwarnings - name: Tests run: cargo test --all-features - name: List bundled examples run: cargo run list-examples publish: needs: [ build ] if: "startsWith(github.ref, 'refs/tags/v')" runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true - uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-is - name: Setup Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - id: get_version uses: battila7/get-version-action@v2 - name: Publish crate env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} run: | export VERSION="${{ steps.get_version.outputs.version-without-v }}" sed -i "s/0.0.0/$VERSION/g" Cargo.toml cargo publish --all-features --allow-dirty