Files
ChuSQL/.github/workflows/linux.yml
T

108 lines
3.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Linux 流水线:Rust 存储 + Haskell 引擎/Web/CLI 的构建与测试。
#
# 这里每条命令都在 WSL Debian(cargo 1.98 / GHC 9.10.3 / stack 3.11.1)上跑通过,
# 见仓库根 README 的「构建与测试」段。Haskell 这边链接并装入 libchusql_core_storage.so,
# 所以 Rust 先构建,LD_LIBRARY_PATH 指向它的输出目录,Haskell 用例才能真跑而不是 pending。
# 打包和发版资源走 .github/workflows/release.yml(tag 触发,也可手动 dispatch)。
name: linux
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
concurrency:
group: linux-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
LD_LIBRARY_PATH: ${{ github.workspace }}/chusql-core/storage/target/release
jobs:
linux:
name: build + test
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- uses: actions/checkout@v4
# ---------- Rust 存储 ----------
- name: Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
chusql-core/storage/target
key: ${{ runner.os }}-cargo-${{ hashFiles('chusql-core/storage/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: cargo build (release)
working-directory: chusql-core/storage
run: cargo build --release
- name: cargo test
working-directory: chusql-core/storage
run: cargo test --release
- name: cargo clippy (-D warnings)
working-directory: chusql-core/storage
run: cargo clippy --all-targets -- -D warnings
# 故意不做 rustfmt 检查:仓库里没有 rustfmt.toml,历史代码也不是按当前 rustfmt 的
# 默认风格排的,直接跑会报上百处折行与 use 排序差异;格式化不是本仓的门禁,别拿它
# 当交付标准。
# ---------- Haskell ----------
- name: Haskell toolchain
uses: haskell-actions/setup@v2
with:
ghc-version: '9.10.3'
enable-stack: true
stack-version: '3.11.1'
- name: Cache stack
uses: actions/cache@v4
with:
path: |
~/.stack
chusql-core/engine/.stack-work
chusql-bootstrap/.stack-work
chusql-server/.stack-work
chusql-web/.stack-work
chusql-cli/.stack-work
key: ${{ runner.os }}-stack-${{ hashFiles('**/stack.yaml', '**/stack.yaml.lock') }}
restore-keys: ${{ runner.os }}-stack-
- name: stack build (cabal 里带 -Wall)
working-directory: chusql-cli
run: stack build --fast
- name: bootstrap build
working-directory: chusql-bootstrap
run: stack build --fast
- name: engine tests
working-directory: chusql-core/engine
run: stack test --fast
- name: server tests
working-directory: chusql-server
run: stack test --fast
- name: web tests
working-directory: chusql-web
run: stack test --fast
- name: cli tests
working-directory: chusql-cli
run: stack test chusql-cli --fast