Skip to content

Commit

Permalink
CI Setup (#171)
Browse files Browse the repository at this point in the history
Setup CI to run typescript check, eslint on changed files, and unit tests
<!-- ELLIPSIS_HIDDEN -->

----

> [!IMPORTANT]
> Sets up CI workflow to run ESLint, TypeScript checks, and unit tests on pull requests using GitHub Actions.
> 
>   - **CI Setup**:
>     - Adds `.github/workflows/ci.yml` to configure CI for pull requests.
>     - Runs on `ubuntu-latest`.
>   - **Linting and Testing**:
>     - Uses `actions/checkout@v4` for code checkout.
>     - Sets up Node.js 20 with `actions/setup-node@v4`.
>     - Caches `node_modules` using `actions/cache@v4`.
>     - Installs dependencies with `npm ci` if cache is not hit.
>     - Collects changed files with `git diff` and filters for `.js`, `.jsx`, `.ts`, `.tsx`.
>     - Runs `eslint` on changed files if any.
>     - Executes TypeScript checks with `npx tsc --emitDeclarationOnly`.
>     - Runs unit tests with `npm run test`.
> 
> <sup>This description was created by </sup>[<img alt="Ellipsis" src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=nomic-ai%2Fdeepscatter&utm_source=github&utm_medium=referral)<sup> for 970b2ec. It will automatically update as commits are pushed.</sup>

<!-- ELLIPSIS_HIDDEN -->
  • Loading branch information
rguo123 authored Nov 5, 2024
1 parent 8d15942 commit e6ca7db
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: CI Testing
on: pull_request
permissions: read-all

jobs:
lint-and-test:
name: Run ESLint, TypeScript, and Tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

- name: cache node modules
id: cache-dep
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: node_modules
key: ${{ runner.os }}-lint-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}

- name: Install dependencies
if: steps.cache-dep.outputs.cache-hit != 'true'
run: npm ci

- name: Collect changed files
run: |
git diff ${{ github.event.pull_request.base.sha }} ${{ github.sha }} --diff-filter=ACM --name-only | grep -E '\.(js|jsx|ts|tsx)$' > ~/lintable_files || true
echo "Files to lint:"
cat ~/lintable_files
- name: Lint
run: |
if [ -s ~/lintable_files ]; then
npx eslint $(cat ~/lintable_files)
else
echo "No files to lint"
fi
- name: TypeScript Checker
run: npx tsc --emitDeclarationOnly

- name: Run Tests
run: npm run test

0 comments on commit e6ca7db

Please sign in to comment.