Skip to content
This repository has been archived by the owner on Oct 13, 2023. It is now read-only.

Support Rust stable #141

Open
2 of 3 tasks
williamdes opened this issue Nov 27, 2022 · 2 comments
Open
2 of 3 tasks

Support Rust stable #141

williamdes opened this issue Nov 27, 2022 · 2 comments
Labels
bug Something isn't working

Comments

@williamdes
Copy link

williamdes commented Nov 27, 2022

Do the checklist before filing an issue:

Description

rust-lang/rust#90132

@williamdes williamdes added the bug Something isn't working label Nov 27, 2022
@williamdes
Copy link
Author

williamdes commented Nov 27, 2022

Ref: https://blog.rng0.io/how-to-do-code-coverage-in-rust
A working workflow (added on my PR: williamdes/mariadb-mysql-kbs#288):

name: Build and test rust code

on:
    pull_request:
    push:

permissions:
    contents: read

concurrency:
    group: ${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true

jobs:
    build_and_test:
        runs-on: ubuntu-latest
        name: Build and test
        steps:
            - name: Cache cargo registry
              uses: actions/cache@v3
              with:
                  path: ~/.cargo/registry
                  key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
            - name: Cache cargo index
              uses: actions/cache@v3
              with:
                  path: ~/.cargo/git
                  key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
            - name: Cache cargo build
              uses: actions/cache@v3
              with:
                  path: target
                  key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
            - name: Checkout repository
              uses: actions/checkout@v3
            - name: Set up toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: 1.64.0
                  override: true
                  components: llvm-tools-preview
            - name: Build
              uses: actions-rs/cargo@v1
              with:
                  command: build
                  args: --release
              env:
                CARGO_INCREMENTAL: '0'
                RUSTFLAGS: '-Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cinstrument-coverage'
                RUSTDOCFLAGS: '-Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cinstrument-coverage'
            - name: Test
              uses: actions-rs/cargo@v1
              with:
                  command: test
                  args: --all-features --no-fail-fast
              env:
                CARGO_INCREMENTAL: '0'
                RUSTFLAGS: '-Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cinstrument-coverage'
                RUSTDOCFLAGS: '-Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cinstrument-coverage'
            - name: Download grcov
              run: |
                set -eux;
                mkdir -p "${HOME}/.local/bin"
                curl -sL https://github.com/mozilla/grcov/releases/download/v0.8.13/grcov-x86_64-unknown-linux-gnu.tar.bz2 | tar jxf - -C "${HOME}/.local/bin"
                echo "$HOME/.local/bin" >> $GITHUB_PATH
            - name: grcov
              id: coverage
              run: |
                set -eux;
                grcov . --binary-path ./target/debug/deps/ -s . -t lcov --branch --ignore-not-existing --ignore '../*' --ignore "/*" -o ./lcov.info
                echo "report=./lcov.info" >> $GITHUB_OUTPUT
              #uses: actions-rs/grcov@v0.1
            - uses: codecov/codecov-action@v3
              with:
                files: ${{ steps.coverage.outputs.report }}
                flags: rust
                fail_ci_if_error: true # optional (default = false)

@williamdes
Copy link
Author

name: Build and test rust code

on:
    pull_request:
    push:

permissions:
    contents: read

concurrency:
    group: ${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true

jobs:
    build_and_test:
        runs-on: ubuntu-latest
        name: Build and test
        steps:
            - name: Cache cargo registry
              uses: actions/cache@v3
              with:
                  path: ~/.cargo/registry
                  key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
            - name: Cache cargo index
              uses: actions/cache@v3
              with:
                  path: ~/.cargo/git
                  key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
            - name: Cache cargo binaries
              uses: actions/cache@v3
              with:
                  path: ~/.cargo/bin
                  key: ${{ runner.os }}-cargo-bin-${{ hashFiles('**/Cargo.lock') }}
            - name: Cache cargo build
              uses: actions/cache@v3
              with:
                  path: target
                  key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
            - name: Checkout repository
              uses: actions/checkout@v3
            - name: Set up toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: 1.64.0
                  override: true
                  components: rustfmt, llvm-tools-preview
            - name: Build
              uses: actions-rs/cargo@v1
              with:
                  command: build
                  args: --release
              env:
                  CARGO_INCREMENTAL: "0"
                  RUSTFLAGS: "-Cinstrument-coverage"
                  RUSTDOCFLAGS: "-Cinstrument-coverage"
            - name: Test
              uses: actions-rs/cargo@v1
              with:
                  command: test
                  args: --all-features --no-fail-fast
              env:
                  CARGO_INCREMENTAL: "0"
                  RUSTFLAGS: "-Cinstrument-coverage"
                  RUSTDOCFLAGS: "-Cinstrument-coverage"
            - name: Install grcov
              run: if [[ ! -e ~/.cargo/bin/grcov ]]; then cargo install grcov; fi
            - name: Run grcov
              run: grcov . --binary-path target/debug/deps/ -s . -t lcov --branch --ignore-not-existing --ignore '../**' --ignore '/*' -o coverage.lcov
            - uses: codecov/codecov-action@v3
              with:
                  files: ./coverage.lcov
                  flags: rust
                  fail_ci_if_error: true # optional (default = false)

It's an alternative way inspired by #105

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Development

No branches or pull requests

1 participant