Skip to content

Commit

Permalink
ci: add CI, pre-commit, rustfmt, and dependabot configs
Browse files Browse the repository at this point in the history
  • Loading branch information
m4tx committed Jul 5, 2024
1 parent 30f469d commit eec66b1
Show file tree
Hide file tree
Showing 10 changed files with 246 additions and 6 deletions.
21 changes: 21 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
version: 2

updates:
- package-ecosystem: cargo
directory: /
schedule:
interval: monthly
groups:
dependencies:
update-types:
- minor
- patch

- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
groups:
dependencies:
patterns:
- "*"
27 changes: 27 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Pre-commit checks

on:
push:
pull_request:

jobs:
pre-commit:
# Run on external PRs and pushes to branches on the repo
# This is to avoid double running on PRs from internal branches
if:
github.event_name == 'push' || github.event.pull_request.head.repo.full_name !=
github.repository

name: Linting Checks
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Check files
uses: pre-commit/[email protected]
148 changes: 148 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
name: Rust CI

on:
push:
pull_request:
schedule:
- cron: "0 0 * * *"

env:
CARGO_TERM_COLOR: always

# See: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency.
# This will ensure that only one commit will be running tests at a time on each PR.
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true

jobs:
build:
# Run on external PRs and pushes to branches on the repo
# This is to avoid double running on PRs from internal branches
if: github.event_name == 'push' || github.event_name == 'schedule' ||
github.event.pull_request.head.repo.full_name != github.repository
strategy:
matrix:
rust: [stable, nightly]
os: [ubuntu-latest, macos-latest, windows-latest]

runs-on: ${{ matrix.os }}
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.toml') }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}

- name: Build
run: cargo +${{ matrix.rust }} build

- name: Test
run: cargo +${{ matrix.rust }} test

clippy:
if: github.event_name == 'push' || github.event_name == 'schedule' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: ubuntu-latest
needs: ["build"]
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.toml') }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: clippy

- name: Run clippy
run: cargo clippy -- -Dclippy::all

coverage:
if: github.event_name == 'push' || github.event_name == 'schedule' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: ubuntu-latest
needs: ["build"]
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.toml') }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: llvm-tools-preview

- name: Test
run: cargo test --all-features --no-fail-fast
env:
CARGO_INCREMENTAL: "0"
RUSTFLAGS: "-Cinstrument-coverage"

- name: Install grcov
uses: baptiste0928/cargo-install@v3
with:
crate: grcov

- 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@v4
with:
files: ./coverage.lcov
flags: rust
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

rustfmt:
if: github.event_name == 'push' || github.event_name == 'schedule' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: ubuntu-latest
needs: ["build"]
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.toml') }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: rustfmt

- name: Run fmt
run: cargo fmt --all -- --check
27 changes: 27 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
fail_fast: false
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-toml
- id: detect-private-key
- id: end-of-file-fixer
- id: mixed-line-ending
args: ["--fix=lf"]
- id: trailing-whitespace

- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.1.0
hooks:
- id: prettier
types_or: [json, yaml]

- repo: https://github.com/doublify/pre-commit-rust
rev: v1.0
hooks:
- id: fmt
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ members = [
"flareon",
"flareon-admin",
"flareon-auth",
"flareon-macros ",
"flareon-macros",
"flareon-orm",
# Examples
"examples/hello-world",
Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
# flareon
flareon
=======

[![Rust Build Status](https://github.com/flareon-rs/flareon/workflows/Rust%20CI/badge.svg)](https://github.com/flareon-rs/flareon/actions/workflows/rust.yml)
[![codecov](https://codecov.io/gh/flareon-rs/flareon/branch/master/graph/badge.svg)](https://codecov.io/gh/flareon-rs/flareon)

# flareon
4 changes: 1 addition & 3 deletions examples/hello-world/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
fn main() {

}
fn main() {}
2 changes: 1 addition & 1 deletion flareon-admin/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub fn add(left: u64, right: u64) -> u64 {
pub fn add(left: u64, right: u64) -> u64 {
left + right
}

Expand Down
6 changes: 6 additions & 0 deletions flareon-macros/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
use proc_macro::TokenStream;

#[proc_macro]
pub fn flareon(_input: TokenStream) -> TokenStream {
unimplemented!()
}
7 changes: 7 additions & 0 deletions rustfmt.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
unstable_features = true
imports_granularity = "module"
group_imports = "StdExternalCrate"
normalize_comments = true
reorder_impl_items = true
use_field_init_shorthand = true
wrap_comments = true

0 comments on commit eec66b1

Please sign in to comment.