feat: add StyleX napi-rs
compiler
#112
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
env: | |
DEBUG: napi:* | |
APP_NAME: 'rs-compiler' | |
MACOSX_DEPLOYMENT_TARGET: '10.13' | |
CARGO_INCREMENTAL: '1' | |
permissions: | |
contents: write | |
id-token: write | |
'on': | |
push: | |
branches: | |
- master | |
tags-ignore: | |
- '**' | |
paths-ignore: | |
- '**/*.md' | |
- LICENSE | |
- '**/*.gitignore' | |
- .editorconfig | |
- docs/** | |
pull_request: null | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
build: pnpm run --filter @stylexswc/rs-compiler build --target x86_64-apple-darwin | |
- host: windows-latest | |
build: pnpm run --filter @stylexswc/rs-compiler build --target x86_64-pc-windows-msvc | |
target: x86_64-pc-windows-msvc | |
- host: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian | |
build: pnpm run --filter @stylexswc/rs-compiler build --target x86_64-unknown-linux-gnu | |
- host: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
build: pnpm run --filter @stylexswc/rs-compiler build --target x86_64-unknown-linux-musl | |
- host: macos-latest | |
target: aarch64-apple-darwin | |
build: pnpm run --filter @stylexswc/rs-compiler build --target aarch64-apple-darwin | |
- host: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 | |
build: pnpm run --filter @stylexswc/rs-compiler build --target aarch64-unknown-linux-gnu | |
name: stable - ${{ matrix.settings.target }} - node@18 | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- name: Enable long path support | |
run: git config --system core.longpaths true | |
if: ${{ matrix.settings.host == 'windows-latest' }} | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
uses: ./.github/actions/setup | |
# if: ${{ !matrix.settings.docker }} | |
# - name: Install | |
# uses: dtolnay/rust-toolchain@stable | |
# if: ${{ !matrix.settings.docker }} | |
# with: | |
# toolchain: stable | |
# targets: ${{ matrix.settings.target }} | |
# - name: Cache cargo | |
# uses: actions/cache@v4 | |
# with: | |
# path: | | |
# ~/.cargo/registry/index/ | |
# ~/.cargo/registry/cache/ | |
# ~/.cargo/git/db/ | |
# .cargo-cache | |
# target/ | |
# key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }} | |
- uses: goto-bus-stop/setup-zig@v2 | |
if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} | |
with: | |
version: 0.13.0 | |
- name: Setup toolchain | |
run: ${{ matrix.settings.setup }} | |
if: ${{ matrix.settings.setup }} | |
shell: bash | |
- name: Install dependencies | |
run: pnpm install | |
- name: Build in docker | |
uses: addnab/docker-run-action@v3 | |
if: ${{ matrix.settings.docker }} | |
with: | |
image: ${{ matrix.settings.docker }} | |
options: '--user 0:0 -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build' | |
run: ${{ matrix.settings.build }} | |
- name: Build | |
run: ${{ matrix.settings.build }} | |
if: ${{ !matrix.settings.docker }} | |
shell: bash | |
- 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 | |
test-macOS-windows-binding: | |
name: Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- host: windows-latest | |
target: x86_64-pc-windows-msvc | |
architecture: x64 | |
- host: macos-latest | |
target: aarch64-apple-darwin | |
architecture: arm64 | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
architecture: x64 | |
node: | |
- '18' | |
- '20' | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- name: Enable long path support | |
run: git config --system core.longpaths true | |
if: ${{ matrix.settings.host == 'windows-latest' }} | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
uses: ./.github/actions/setup-pnpm | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: pnpm | |
architecture: ${{ matrix.settings.architecture }} | |
- 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: List packages | |
run: ls -R crates/stylex-rs-compiler | |
shell: bash | |
- name: Test bindings | |
run: pnpm run --filter @stylexswc/rs-compiler test | |
test-linux-x64-gnu-binding: | |
name: Test bindings on Linux-x64-gnu - node@${{ matrix.node }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- '18' | |
- '20' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
uses: ./.github/actions/setup-pnpm | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: bindings-x86_64-unknown-linux-gnu | |
path: crates/stylex-rs-compiler/dist | |
- name: List packages | |
run: ls -R crates/stylex-rs-compiler | |
shell: bash | |
- name: Test bindings | |
run: | | |
docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-slim sh -c " | |
npm install -g pnpm && | |
pnpm run --filter @stylexswc/rs-compiler test | |
" | |
test-linux-x64-musl-binding: | |
name: Test bindings on x86_64-unknown-linux-musl - node@${{ matrix.node }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- '18' | |
- '20' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
uses: ./.github/actions/setup-pnpm | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: bindings-x86_64-unknown-linux-musl | |
path: crates/stylex-rs-compiler/dist | |
- name: List packages | |
run: ls -R crates/stylex-rs-compiler | |
shell: bash | |
- name: Test bindings | |
run: | | |
docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-alpine sh -c " | |
npm install -g pnpm && | |
pnpm run --filter @stylexswc/rs-compiler test | |
" | |
benchmark: | |
name: Benchmark on ${{ matrix.settings.target }} - node@${{ matrix.node }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- host: windows-latest | |
target: x86_64-pc-windows-msvc | |
architecture: x64 | |
- host: macos-latest | |
target: aarch64-apple-darwin | |
architecture: arm64 | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
architecture: x64 | |
node: | |
- '18' | |
- '20' | |
runs-on: ${{ matrix.settings.host }} | |
permissions: | |
contents: write | |
pull-requests: write | |
repository-projects: write | |
steps: | |
- name: Enable long path support | |
run: git config --system core.longpaths true | |
if: ${{ matrix.settings.host == 'windows-latest' }} | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
uses: ./.github/actions/setup-pnpm | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: pnpm | |
architecture: ${{ matrix.settings.architecture }} | |
- 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: List packages | |
run: | | |
cat ./cache/benchmark-data.json || echo "Not found" | |
shell: bash | |
- 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: false | |
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 }} | |
- name: List packages after benchmark | |
run: | | |
cat ./cache/benchmark-data.json || echo "Not found" | |
shell: bash | |
publish: | |
name: Publish | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
- benchmark | |
- test-macOS-windows-binding | |
- test-linux-x64-gnu-binding | |
- test-linux-x64-musl-binding | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
uses: ./.github/actions/setup | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: crates/stylex-rs-compiler/artifacts | |
- name: Move artifacts | |
run: pnpm run --filter @stylexswc/rs-compiler artifacts | |
- name: List packages | |
run: | | |
mv crates/stylex-rs-compiler/npm/*/*.node crates/stylex-rs-compiler/dist | |
ls -R crates/stylex-rs-compiler/dist | |
- name: Prepare artifacts | |
run: | | |
sed -i "s|require('@stylexswc/rs-compiler-[^']*')|require('@stylexswc/rs-compiler')|g" crates/stylex-rs-compiler/dist/index.js | |
shell: bash | |
# - name: Publish | |
# run: | | |
# npm config set provenance true | |
# if git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$"; | |
# then | |
# echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
# npm publish --access public | |
# elif git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+"; | |
# then | |
# echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
# npm publish --tag next --access public | |
# else | |
# echo "Not a release, skipping publish" | |
# fi | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |