feat: add StyleX napi-rs
compiler
#106
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: windows-latest | |
# # # build: pnpm run --filter @stylexswc/rs-compiler build --target i686-pc-windows-msvc | |
# # # target: i686-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 | |
# - host: ubuntu-latest | |
# target: armv7-unknown-linux-gnueabihf | |
# setup: | | |
# sudo apt-get update | |
# sudo apt-get install gcc-arm-linux-gnueabihf -y | |
# build: | | |
# pnpm run --filter @stylexswc/rs-compiler§ build --target armv7-unknown-linux-gnueabihf | |
# - host: ubuntu-latest | |
# target: aarch64-linux-android | |
# build: pnpm run --filter @stylexswc/rs-compiler build --target aarch64-linux-android | |
# - host: ubuntu-latest | |
# target: armv7-linux-androideabi | |
# build: pnpm run --filter @stylexswc/rs-compiler build --target armv7-linux-androideabi | |
# - host: ubuntu-latest | |
# target: aarch64-unknown-linux-musl | |
# docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
# build: |- | |
# set -e && | |
# rustup target add aarch64-unknown-linux-musl && | |
# pnpm run --filter @stylexswc/rs-compiler build --target aarch64-unknown-linux-musl | |
# - host: windows-latest | |
# target: aarch64-pc-windows-msvc | |
# build: pnpm run --filter @stylexswc/rs-compiler build --target aarch64-pc-windows-msvc | |
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 | |
# build-freebsd: | |
# runs-on: ubuntu-latest | |
# name: Build FreeBSD | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Build | |
# id: build | |
# uses: cross-platform-actions/action@v0.25.0 | |
# env: | |
# DEBUG: napi:* | |
# RUSTUP_IO_THREADS: 1 | |
# with: | |
# operating_system: freebsd | |
# version: '14.0' | |
# memory: 8G | |
# cpu_count: 3 | |
# environment_variables: DEBUG RUSTUP_IO_THREADS | |
# shell: bash | |
# run: | | |
# sudo pkg install -y -f curl node libnghttp2 npm | |
# sudo npm install -g yarn --ignore-scripts | |
# curl https://sh.rustup.rs -sSf --output rustup.sh | |
# sh rustup.sh -y --profile minimal --default-toolchain beta | |
# source "$HOME/.cargo/env" | |
# echo "~~~~ rustc --version ~~~~" | |
# rustc --version | |
# echo "~~~~ node -v ~~~~" | |
# node -v | |
# echo "~~~~ yarn --version ~~~~" | |
# yarn --version | |
# pwd | |
# ls -lah | |
# whoami | |
# env | |
# freebsd-version | |
# pnpm install | |
# pnpm run --filter @stylexswc/rs-compiler build | |
# rm -rf node_modules | |
# rm -rf target | |
# rm -rf .yarn/cache | |
# - name: Upload artifact | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: bindings-freebsd | |
# path: ${{ env.APP_NAME }}.*.node | |
# if-no-files-found: error | |
test-macOS-windows-binding: | |
if: false | |
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: Move artifacts | |
run: | | |
ls -R 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 node | |
# uses: actions/setup-node@v4 | |
# with: | |
# node-version: ${{ matrix.node }} | |
# cache: yarn | |
# - name: Install dependencies | |
# run: pnpm install | |
# - name: Download artifacts | |
# uses: actions/download-artifact@v4 | |
# with: | |
# name: bindings-x86_64-unknown-linux-gnu | |
# path: . | |
# - name: List packages | |
# run: ls -R . | |
# shell: bash | |
# - name: Test bindings | |
# run: docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-slim yarn 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 node | |
# uses: actions/setup-node@v4 | |
# with: | |
# node-version: ${{ matrix.node }} | |
# cache: yarn | |
# - name: Install dependencies | |
# run: | | |
# yarn config set supportedArchitectures.libc "musl" | |
# pnpm install | |
# - name: Download artifacts | |
# uses: actions/download-artifact@v4 | |
# with: | |
# name: bindings-x86_64-unknown-linux-musl | |
# path: . | |
# - name: List packages | |
# run: ls -R . | |
# shell: bash | |
# - name: Test bindings | |
# run: docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-alpine yarn test | |
# test-linux-aarch64-gnu-binding: | |
# name: Test bindings on aarch64-unknown-linux-gnu - node@${{ matrix.node }} | |
# needs: | |
# - build | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# node: | |
# - '18' | |
# - '20' | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Download artifacts | |
# uses: actions/download-artifact@v4 | |
# with: | |
# name: bindings-aarch64-unknown-linux-gnu | |
# path: . | |
# - name: List packages | |
# run: ls -R . | |
# shell: bash | |
# - name: Install dependencies | |
# run: | | |
# yarn config set supportedArchitectures.cpu "arm64" | |
# yarn config set supportedArchitectures.libc "glibc" | |
# pnpm install | |
# - name: Set up QEMU | |
# uses: docker/setup-qemu-action@v3 | |
# with: | |
# platforms: arm64 | |
# - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
# - name: Setup and run tests | |
# uses: addnab/docker-run-action@v3 | |
# with: | |
# image: node:${{ matrix.node }}-slim | |
# options: '--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build' | |
# run: | | |
# set -e | |
# yarn test | |
# ls -la | |
# test-linux-aarch64-musl-binding: | |
# name: Test bindings on aarch64-unknown-linux-musl - node@lts | |
# needs: | |
# - build | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Download artifacts | |
# uses: actions/download-artifact@v4 | |
# with: | |
# name: bindings-aarch64-unknown-linux-musl | |
# path: . | |
# - name: List packages | |
# run: ls -R . | |
# shell: bash | |
# - name: Install dependencies | |
# run: | | |
# yarn config set supportedArchitectures.cpu "arm64" | |
# yarn config set supportedArchitectures.libc "musl" | |
# pnpm install | |
# - name: Set up QEMU | |
# uses: docker/setup-qemu-action@v3 | |
# with: | |
# platforms: arm64 | |
# - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
# - name: Setup and run tests | |
# uses: addnab/docker-run-action@v3 | |
# with: | |
# image: node:lts-alpine | |
# options: '--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build' | |
# run: | | |
# set -e | |
# yarn test | |
# test-linux-arm-gnueabihf-binding: | |
# name: Test bindings on armv7-unknown-linux-gnueabihf - node@${{ matrix.node }} | |
# needs: | |
# - build | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# node: | |
# - '18' | |
# - '20' | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Download artifacts | |
# uses: actions/download-artifact@v4 | |
# with: | |
# name: bindings-armv7-unknown-linux-gnueabihf | |
# path: . | |
# - name: List packages | |
# run: ls -R . | |
# shell: bash | |
# - name: Install dependencies | |
# run: | | |
# yarn config set supportedArchitectures.cpu "arm" | |
# pnpm install | |
# - name: Set up QEMU | |
# uses: docker/setup-qemu-action@v3 | |
# with: | |
# platforms: arm | |
# - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
# - name: Setup and run tests | |
# uses: addnab/docker-run-action@v3 | |
# with: | |
# image: node:${{ matrix.node }}-bullseye-slim | |
# options: '--platform linux/arm/v7 -v ${{ github.workspace }}:/build -w /build' | |
# run: | | |
# set -e | |
# yarn test | |
# ls -la | |
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: write-all | |
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: rhysd/github-action-benchmark@v1 | |
# with: | |
# tool: 'benchmarkjs' | |
# output-file-path: 'crates/stylex-rs-compiler/benchmark/results/benchmark-results.json' | |
# auto-push: true | |
# github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Store benchmark result | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
# What benchmark tool the output.txt came from | |
tool: 'benchmarkjs' | |
# Where the output from the benchmark tool is stored | |
output-file-path: 'crates/stylex-rs-compiler/benchmark/results/output.txt' | |
# Where the previous data file is stored | |
external-data-json-path: './cache/benchmark-data.json' | |
# Workflow will fail when an alert happens | |
fail-on-alert: false | |
comment-on-alert: true | |
alert-comment-cc-users: '@Dwlad90' | |
# Enable Job Summary for PRs | |
summary-always: true | |
# comment-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 | |
# - build-freebsd | |
- test-macOS-windows-binding | |
# - test-linux-x64-gnu-binding | |
# - test-linux-x64-musl-binding | |
# - test-linux-aarch64-gnu-binding | |
# # - test-linux-aarch64-musl-binding | |
# - test-linux-arm-gnueabihf-binding | |
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 | |
- 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 }} |