diff --git a/.github/workflows/npm.yml b/.github/workflows/npm.yml index 79059085..212e2f7a 100644 --- a/.github/workflows/npm.yml +++ b/.github/workflows/npm.yml @@ -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' diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml new file mode 100644 index 00000000..f86fdf12 --- /dev/null +++ b/.github/workflows/pr-validation.yml @@ -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 }} diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml deleted file mode 100644 index 8c34e824..00000000 --- a/.github/workflows/validate.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: Validate StyleX SWC plugin - -on: - pull_request: - types: - - opened - - reopened - - synchronize - - ready_for_review - - converted_to_draft - paths-ignore: - - '**/*.md' - - LICENSE - - '**/*.gitignore' - - .editorconfig - - docs/** - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} - cancel-in-progress: true - -jobs: - lint: - 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: - 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: - 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: - 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: - 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/rs-compiler build - - - name: Check build artifacts - run: pnpm run --filter @stylexswc/rs-compiler check:artifacts