cicd: new workflow
This commit is contained in:
parent
1b1c3974f7
commit
cc4f932d17
14 changed files with 611 additions and 228 deletions
150
.github/workflows/ci.yml
vendored
150
.github/workflows/ci.yml
vendored
|
|
@ -1,150 +0,0 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- v*
|
||||
pull_request:
|
||||
branches:
|
||||
- "**"
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
CARGO_INCREMENTAL: 0
|
||||
|
||||
jobs:
|
||||
unix-tests:
|
||||
name: Unix tests
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
os:
|
||||
- macos-latest
|
||||
- ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Work around https://github.com/actions/cache/issues/403.
|
||||
- name: Use GNU tar
|
||||
if: matrix.os == 'macos-latest'
|
||||
run: |
|
||||
echo PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH" >> $GITHUB_ENV
|
||||
|
||||
- name: Read Emscripten version
|
||||
run: |
|
||||
printf 'EMSCRIPTEN_VERSION=%s\n' "$(cat cli/emscripten-version)" >> $GITHUB_ENV
|
||||
|
||||
- name: Cache artifacts
|
||||
id: cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }}-emscripten-${{ env.EMSCRIPTEN_VERSION }}
|
||||
|
||||
- name: Install rust
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
profile: minimal
|
||||
components: rustfmt, clippy
|
||||
|
||||
- name: Check Rust code formatting
|
||||
run: cargo fmt -- --check
|
||||
|
||||
- name: Install emscripten
|
||||
uses: mymindstorm/setup-emsdk@v12
|
||||
with:
|
||||
version: ${{ env.EMSCRIPTEN_VERSION }}
|
||||
|
||||
- name: Build C library
|
||||
run: make
|
||||
|
||||
- name: Build wasm library
|
||||
run: script/build-wasm
|
||||
|
||||
- name: Build CLI
|
||||
run: |
|
||||
RUSTFLAGS="-D warnings"
|
||||
cargo build --release
|
||||
|
||||
- name: Set up fixture parsers
|
||||
run: |
|
||||
script/fetch-fixtures
|
||||
script/generate-fixtures
|
||||
script/generate-fixtures-wasm
|
||||
|
||||
- name: Run main tests
|
||||
run: cargo test
|
||||
|
||||
- name: Run wasm tests
|
||||
run: script/test-wasm
|
||||
|
||||
- name: Run benchmarks
|
||||
run: script/benchmark
|
||||
|
||||
- name: Compress CLI binary
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
run: |
|
||||
cp target/release/tree-sitter .
|
||||
export platform=$(echo ${{ runner.os }} | awk '{print tolower($0)}')
|
||||
gzip --suffix "-${platform}-x64.gz" tree-sitter
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
with:
|
||||
draft: true
|
||||
files: |
|
||||
tree-sitter-*.gz
|
||||
lib/binding_web/tree-sitter.js
|
||||
lib/binding_web/tree-sitter.wasm
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
windows-tests:
|
||||
name: Windows tests
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Cache artifacts
|
||||
id: cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }}
|
||||
|
||||
- name: Install rust
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
profile: minimal
|
||||
|
||||
- name: Check Rust code formatting
|
||||
run: cargo fmt -- --check
|
||||
|
||||
- name: Build CLI
|
||||
run: |
|
||||
$env:RUSTFLAGS="-D warnings"
|
||||
cargo build --release
|
||||
|
||||
- name: Set up fixture parsers
|
||||
run: |
|
||||
script/fetch-fixtures.cmd
|
||||
script/generate-fixtures.cmd
|
||||
|
||||
- name: Run main tests
|
||||
run: script/test
|
||||
Loading…
Add table
Add a link
Reference in a new issue