Skip to content

Commit

Permalink
chore: add GitHub Actions for CI and package publishing
Browse files Browse the repository at this point in the history
This commit introduces two new GitHub Actions workflows: `rust.yml` for continuous integration, which includes linting and testing for Rust code, and `publish.yml` for publishing the package to crates.io on release. These additions ensure code quality and automate the package release process.
  • Loading branch information
shuhuiluo committed Nov 4, 2024
1 parent e1c5f14 commit 63f314d
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Publish package

on:
release:
types: [ published ]

env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

jobs:
cargo_publish:
name: Publish to crates.io
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Publish to crates.io
run: cargo publish
62 changes: 62 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Rust CI

on:
push:
branches:
- main
pull_request:

env:
CARGO_TERM_COLOR: always

jobs:
lint:
name: Rust Lint Check
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-cargo-registry-
- name: Install Rust toolchain via rustup
run: |
rustup component add clippy
rustup component add rustfmt
- name: Check linting
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Check formatting
run: cargo fmt --all -- --check

test:
needs: lint
name: Rust Tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-cargo-registry-
- name: Build
run: cargo build
- name: Run tests
run: cargo test

0 comments on commit 63f314d

Please sign in to comment.