Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(en): merge rollup/master into rollup-docs-cn/master @ 2f261358 #68

Closed
wants to merge 17 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 4 additions & 2 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@ module.exports = {
'coverage',
'_tmp',
'cache',
'wasm',
'native*.*',
'/test/*/samples/**/*.*',
'!/test/*/samples/**/_config.js',
'!/test/*/samples/**/rollup.config.js',
'!.vitepress'
'!.vitepress',
'/wasm/',
'/wasm-node/'
],
overrides: [
{
Expand Down
350 changes: 350 additions & 0 deletions .github/workflows/build-and-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,350 @@
name: CI
env:
DEBUG: napi:*
APP_NAME: rollup
MACOSX_DEPLOYMENT_TARGET: '10.13'

on:
push:
branches:
- master
tags:
- 'v*.*.**'
pull_request:
types:
- synchronize
- opened
- reopened
merge_group:

permissions:
contents: read

jobs:
lint:
name: Lint and Audit
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout Commit
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 20
- name: Cache Node Modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
- name: Install dependencies
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: npm ci --ignore-scripts
- name: Lint
run: npm run ci:lint
- name: Vulnerabilities
run: npm audit
- name: Optional Dependencies
run: npm run test:package
- name: CLI Docs
run: npm run test:options

build:
strategy:
fail-fast: false
matrix:
settings:
- host: windows-latest
target: x86_64-pc-windows-msvc
name: wasm
is-wasm-build: true
build: npm run build:wasm
path: |
wasm/
.empty
- host: windows-latest
target: x86_64-pc-windows-msvc
name: wasm-node
is-wasm-build: true
build: npm run build:wasm:node
path: |
wasm-node/
.empty
- host: macos-latest
target: x86_64-apple-darwin
build: |
npm run build:napi -- --release
strip -x *.node
- host: windows-latest
build: npm run build:napi -- --release
target: x86_64-pc-windows-msvc
- host: windows-latest
build: |
npm run build:napi -- --release --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: |-
set -e &&
rustup default nightly &&
npm run build:napi -- --release --target x86_64-unknown-linux-gnu &&
strip *.node
- host: ubuntu-latest
target: x86_64-unknown-linux-musl
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
build: |-
set -e &&
rustup default nightly &&
npm run build:napi -- --release && strip *.node
- host: macos-latest
target: aarch64-apple-darwin
build: |
npm run build:napi -- --release --target aarch64-apple-darwin
strip -x *.node
- host: ubuntu-latest
target: aarch64-unknown-linux-gnu
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
build: |-
set -e &&
rustup default nightly &&
rustup target add aarch64-unknown-linux-gnu &&
npm run build:napi -- --release --target aarch64-unknown-linux-gnu &&
aarch64-unknown-linux-gnu-strip *.node
- host: ubuntu-latest
target: armv7-unknown-linux-gnueabihf
zig: true
setup: |
sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabihf -y
build: |
npm run build:napi -- --release --target armv7-unknown-linux-gnueabihf
arm-linux-gnueabihf-strip *.node
- host: ubuntu-latest
target: aarch64-linux-android
build: |
npm run build:napi -- --release --target aarch64-linux-android
${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node
- host: ubuntu-latest
target: armv7-linux-androideabi
build: |
npm run build:napi -- --release --target armv7-linux-androideabi
${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node
# TODO SWC this does not work yet, also add back in package.json
# - host: ubuntu-latest
# target: aarch64-unknown-linux-musl
# docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
# build: |-
# set -e &&
# rustup default nightly &&
# rustup target add aarch64-unknown-linux-musl &&
# npm run build:napi -- --release --target aarch64-unknown-linux-musl &&
# /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node
- host: windows-latest
target: aarch64-pc-windows-msvc
build: npm run build:napi -- --release --target aarch64-pc-windows-msvc
name: Build ${{ matrix.settings.name || matrix.settings.target }}
runs-on: ${{ matrix.settings.host }}
timeout-minutes: 30
steps:
- name: Checkout Commit
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v3
if: ${{ !matrix.settings.docker }}
with:
node-version: 20
- name: Install Toolchain
uses: dtolnay/rust-toolchain@stable
if: ${{ !matrix.settings.docker }}
with:
toolchain: nightly
targets: ${{ matrix.settings.target }}
- name: Cache cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
.cargo-cache
rust/target/
key: ${{ matrix.settings.name || matrix.settings.target }}-cargo-${{ matrix.settings.host }}-${{ hashFiles('rust/Cargo.lock') }}
restore-keys: ${{ matrix.settings.name || matrix.settings.target }}-cargo-${{ matrix.settings.host }}
- uses: goto-bus-stop/setup-zig@v2
if: ${{ matrix.settings.zig }}
with:
version: 0.10.1
- name: Setup toolchain
run: ${{ matrix.settings.setup }}
if: ${{ matrix.settings.setup }}
shell: bash
- name: Cache Node Modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
- name: Install dependencies
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: npm ci --ignore-scripts
- 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 wasm artifact
uses: actions/upload-artifact@v3
with:
name: bindings-${{ matrix.settings.name }}
path: ${{ matrix.settings.path }}
if-no-files-found: error
if: ${{ matrix.settings.is-wasm-build }}
- name: Upload napi artifact
uses: actions/upload-artifact@v3
with:
name: bindings-${{ matrix.settings.target }}
path: ${{ env.APP_NAME }}.*.node
if-no-files-found: error
if: ${{ !matrix.settings.is-wasm-build }}

test:
name: Test${{ matrix.additionalName || '' }} Node ${{ matrix.node }} (${{ matrix.settings.target }})
needs:
- build
strategy:
fail-fast: false
matrix:
settings:
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
- host: windows-latest
target: x86_64-pc-windows-msvc
- host: macos-latest
target: x86_64-apple-darwin
node:
- '18.0.0'
- '20'
include:
- settings:
host: ubuntu-latest
target: x86_64-unknown-linux-gnu
node: '20'
command: 'ci:coverage'
additionalName: ' with Coverage'
coverage: true
- settings:
host: ubuntu-latest
target: x86_64-unknown-linux-gnu
node: '18.0.0'
command: 'ci:test:all'
additionalName: ' with Additional Tests'
runs-on: ${{ matrix.settings.host }}
timeout-minutes: 15
steps:
- name: Checkout Commit
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
check-latest: true
- name: Cache Node Modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
- name: Install dependencies
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: npm ci --ignore-scripts
- name: Download napi artifacts
uses: actions/download-artifact@v3
with:
name: bindings-${{ matrix.settings.target }}
path: .
- name: Download wasm artifacts
uses: actions/download-artifact@v3
with:
name: bindings-wasm
- name: Build and test Rollup
run: npm run ${{ matrix.command || 'ci:test:only' }}
env:
CI: true
- name: Upload coverage
uses: codecov/codecov-action@v3
if: matrix.coverage
with:
# It appears adding the token may result in the coverage comment not being added
# token: ${{ secrets.CODECOV_TOKEN }}
commit_parent: ${{ github.event.pull_request.head.sha }}

publish:
permissions:
pull-requests: write # for writing comments
issues: write # for writing comments
contents: write # for creating a release
name: Publish
runs-on: ubuntu-latest
timeout-minutes: 15
needs:
- test
- lint
# TODO SWC once v4 is live, this should be changed
if: startsWith(github.ref_name, 'v4')
steps:
- name: Checkout Commit
uses: actions/checkout@v4
with:
# Necessary to find the commits included in the release
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
check-latest: true
- name: Cache Node Modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
- name: Install dependencies
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: npm ci --ignore-scripts
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Copy wasm files
run: cp -R artifacts/bindings-wasm/wasm .
- name: Build JavaScript
run: npm run build:cjs && cp artifacts/*/*.node dist/ && npm run build:bootstrap
- name: Move artifacts
run: npm run ci:artifacts
- name: Publish
run: |
if git --no-pager log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$";
then
echo "Publishing regular release"
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
npm publish --access public
elif git --no-pager log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+-[0-9]\+$";
then
echo "Publishing beta release"
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
npm publish --tag beta --access public
else
echo "Not a release, skipping publish"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
ROLLUP_RELEASE: 'releasing'
2 changes: 1 addition & 1 deletion .github/workflows/repl-artefacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
#TODO: remove after or before merging release-4.0
if: ${{ github.head_ref == 'release-4.0' || github.base_ref == 'release-4.0' }}
run: npm exec -- concurrently -c green,blue,yellow 'npm:build:napi -- --release' 'npm run build:wasm' 'npm:build:cjs' && npm run build:copy-native && npm run build:bootstrap
#TODO: remove after or before merging release-4.0
#TODO: remove after or before merging release-4.0
- name: Build artefacts
if: ${{ github.head_ref != 'release-4.0' && github.base_ref != 'release-4.0' }}
run: npm run build:cjs && npm run build:bootstrap
Expand Down
Loading
Loading