Skip to content

Commit

Permalink
ci(ga): add benchmark to PR validation
Browse files Browse the repository at this point in the history
  • Loading branch information
Dwlad90 committed Dec 20, 2024
1 parent a10a15e commit ce90094
Show file tree
Hide file tree
Showing 3 changed files with 177 additions and 99 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,9 @@ jobs:
- host: macos-latest
target: x86_64-apple-darwin
architecture: x64
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
architecture: x64
node:
- '18'
- '20'
Expand Down
174 changes: 174 additions & 0 deletions .github/workflows/pr-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: Pull Request Validation

on:
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
- converted_to_draft
paths-ignore:
- '**/*.md'
- LICENSE
- '**/*.gitignore'
- .editorconfig
- docs/**
env:
APP_NAME: 'rs-compiler'

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true

jobs:
lint:
name: Lint code
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup environment
uses: ./.github/actions/setup

- name: Lint code
run: pnpm run -r lint:check

format:
name: Format code
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup environment
uses: ./.github/actions/setup

- name: Format code
run: pnpm run -r format:check

test:
name: Run tests
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup environment
uses: ./.github/actions/setup

- name: Run tests
run: pnpm run -r --filter='!@stylexswc/rs-compiler' test
env:
RUST_MIN_STACK: 16777216

build-wasm:
name: Build SWC plugin
runs-on: ubuntu-latest
needs: [test, lint, format]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup environment
uses: ./.github/actions/setup

- name: Build project
run: pnpm run --filter @stylexswc/swc-plugin build

- name: Check build artifacts
run: pnpm run --filter @stylexswc/swc-plugin check:artifacts

build-rs:
name: Build RS compiler
runs-on: ${{ matrix.settings.host }}
needs: [test, lint, format]
strategy:
fail-fast: false
matrix:
settings:
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup environment
uses: ./.github/actions/setup

- name: Build project
run: pnpm run --filter @stylexswc/rs-compiler build

- name: Check build artifacts
run: pnpm run --filter @stylexswc/rs-compiler check:artifacts
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: bindings-${{ matrix.settings.target }}
path: crates/stylex-rs-compiler/dist/${{ env.APP_NAME }}.*.node
if-no-files-found: error

benchmark:
name: Benchmark on ${{ matrix.settings.target }} - node@20
needs:
- build-rs
- build-wasm
strategy:
fail-fast: false
matrix:
settings:
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
runs-on: ${{ matrix.settings.host }}
permissions:
contents: write
pull-requests: write
repository-projects: write
steps:
- uses: actions/checkout@v4

- name: Setup environment
uses: ./.github/actions/setup

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bindings-${{ matrix.settings.target }}
path: crates/stylex-rs-compiler/dist

- name: Download previous benchmark data
uses: actions/cache@v4
with:
path: ./cache
key: ${{ matrix.settings.target }}-benchmark

- name: Run benchmarks
run: pnpm run --filter @stylexswc/rs-compiler bench

- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
tool: 'benchmarkjs'
output-file-path: 'crates/stylex-rs-compiler/benchmark/results/output.txt'
external-data-json-path: './cache/benchmark-data.json'
fail-on-alert: true
comment-on-alert: true
alert-comment-cc-users: '@Dwlad90'
summary-always: true
github-token: ${{ secrets.GITHUB_TOKEN }}
alert-threshold: '150%'
fail-threshold: '175%'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
99 changes: 0 additions & 99 deletions .github/workflows/validate.yml

This file was deleted.

0 comments on commit ce90094

Please sign in to comment.