Skip to content

Session 4: API Integration Issues Resolution - 93%+ Error Reduction #94

Session 4: API Integration Issues Resolution - 93%+ Error Reduction

Session 4: API Integration Issues Resolution - 93%+ Error Reduction #94

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
env:
RUST_BACKTRACE: 1
CARGO_TERM_COLOR: always
jobs:
test:
name: Test Suite
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
rust: [stable, beta]
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
components: rustfmt, clippy
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Check formatting
if: matrix.rust == 'stable' && matrix.os == 'ubuntu-latest'
run: cargo fmt --all -- --check
- name: Run Clippy
if: matrix.rust == 'stable'
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Run tests
run: cargo test --all-features
- name: Build documentation
if: matrix.rust == 'stable' && matrix.os == 'ubuntu-latest'
run: cargo doc --no-deps --all-features
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install tarpaulin
run: cargo install cargo-tarpaulin
- name: Generate coverage
run: cargo tarpaulin --out Xml --all-features
- name: Upload coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./cobertura.xml
release:
name: Release Check
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
needs: [test]
steps:
- uses: actions/checkout@v4
- name: Check for version changes
id: version
run: |
VERSION=$(grep "^version" linkml-service/Cargo.toml | cut -d'"' -f2)
echo "version=$VERSION" >> $GITHUB_OUTPUT
# Check if tag exists
if git ls-remote --tags origin | grep -q "refs/tags/v$VERSION"; then
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "exists=false" >> $GITHUB_OUTPUT
fi
- name: Create Release
if: steps.version.outputs.exists == 'false'
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.version.outputs.version }}
release_name: Release v${{ steps.version.outputs.version }}
body: |
See [CHANGELOG.md](https://github.com/TextPast/linkml-rs/blob/main/CHANGELOG.md) for details.
draft: false
prerelease: false