Update turbo to version 1.10.12 #3
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: Release Insiders | |
on: | |
push: | |
branches: [master] | |
env: | |
APP_NAME: tailwindcss-oxide | |
NODE_VERSION: 16 | |
OXIDE_LOCATION: ./oxide/crates/node | |
RELEASE_CHANNEL: insiders | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Windows | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
# Mac OS | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
strip: strip -x # Must use -x on macOS. This produces larger results on linux. | |
name: Build ${{ matrix.target }} (OXIDE) | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache node_modules | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-${{ matrix.target }}-${{ env.NODE_VERSION }}-node_modules-${{ hashFiles('**/package-lock.json') }} | |
# Cargo already skips downloading dependencies if they already exist | |
- name: Cache cargo | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
# Cache the `oxide` Rust build | |
- name: Cache oxide build | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./oxide/target/ | |
./oxide/crates/node/*.node | |
./oxide/crates/node/index.js | |
./oxide/crates/node/index.d.ts | |
key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./oxide/crates/**/*') }} | |
- name: Install Node.JS | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Setup rust target | |
run: rustup target add ${{ matrix.target }} | |
- name: Install dependencies | |
run: npm install | |
- name: Build release | |
run: cd ${{ env.OXIDE_LOCATION }} && npm run build | |
env: | |
RUST_TARGET: ${{ matrix.target }} | |
- name: Strip debug symbols # https://github.com/rust-lang/rust/issues/46034 | |
if: ${{ matrix.strip }} | |
run: ${{ matrix.strip }} ${{ env.OXIDE_LOCATION }}/*.node | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bindings-${{ matrix.target }} | |
path: | | |
${{ env.OXIDE_LOCATION }}/*.node | |
${{ matrix.binary }} | |
build-apple-silicon: | |
name: Build Apple Silicon (OXIDE) | |
runs-on: macos-latest | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache node_modules | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-${{ env.NODE_VERSION }}-node_modules-${{ hashFiles('**/package-lock.json') }} | |
# Cargo already skips downloading dependencies if they already exist | |
- name: Cache cargo | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
# Cache the `oxide` Rust build | |
- name: Cache oxide build | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./oxide/target/ | |
./oxide/crates/node/*.node | |
./oxide/crates/node/index.js | |
./oxide/crates/node/index.d.ts | |
key: ${{ runner.os }}-oxide-${{ hashFiles('./oxide/crates/**/*') }} | |
- name: Install Node.JS | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Setup rust target | |
run: rustup target add aarch64-apple-darwin | |
- name: Install dependencies | |
run: npm install | |
- name: Build release | |
run: cd ${{ env.OXIDE_LOCATION }} && npm run build | |
env: | |
RUST_TARGET: aarch64-apple-darwin | |
JEMALLOC_SYS_WITH_LG_PAGE: 14 | |
- name: Strip debug symbols # https://github.com/rust-lang/rust/issues/46034 | |
run: strip -x ${{ env.OXIDE_LOCATION }}/*.node | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bindings-aarch64-apple-darwin | |
path: | | |
${{ env.OXIDE_LOCATION }}/*.node | |
${{ env.APP_NAME }} | |
build-linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- target: x86_64-unknown-linux-gnu | |
strip: strip | |
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian | |
- target: aarch64-unknown-linux-gnu | |
strip: llvm-strip | |
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 | |
- target: armv7-unknown-linux-gnueabihf | |
strip: llvm-strip | |
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-zig | |
- target: aarch64-unknown-linux-musl | |
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
strip: aarch64-linux-musl-strip | |
- target: x86_64-unknown-linux-musl | |
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
strip: strip | |
name: Build ${{ matrix.target }} (OXIDE) | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
container: | |
image: ${{ matrix.image }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache node_modules | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-${{ matrix.target }}-${{ env.NODE_VERSION }}-node_modules-${{ hashFiles('**/package-lock.json') }} | |
# Cargo already skips downloading dependencies if they already exist | |
- name: Cache cargo | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
# Cache the `oxide` Rust build | |
- name: Cache oxide build | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./oxide/target/ | |
./oxide/crates/node/*.node | |
./oxide/crates/node/index.js | |
./oxide/crates/node/index.d.ts | |
key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./oxide/crates/**/*') }} | |
- name: Install Node.JS | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Setup cross compile toolchain | |
if: ${{ matrix.setup }} | |
run: ${{ matrix.setup }} | |
- name: Setup rust target | |
run: rustup target add ${{ matrix.target }} | |
- name: Install dependencies | |
run: npm install | |
- name: Build release | |
run: cd ${{ env.OXIDE_LOCATION }} && npm run build | |
env: | |
RUST_TARGET: ${{ matrix.target }} | |
- name: Strip debug symbols # https://github.com/rust-lang/rust/issues/46034 | |
if: ${{ matrix.strip }} | |
run: ${{ matrix.strip }} ${{ env.OXIDE_LOCATION }}/*.node | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bindings-${{ matrix.target }} | |
path: | | |
${{ env.OXIDE_LOCATION }}/*.node | |
${{ env.APP_NAME }} | |
release: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
name: Build and release | |
needs: | |
- build | |
- build-linux | |
- build-apple-silicon | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache node_modules | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-${{ env.NODE_VERSION }}-node_modules-${{ hashFiles('**/package-lock.json') }} | |
# Cargo already skips downloading dependencies if they already exist | |
- name: Cache cargo | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
# Cache the `oxide` Rust build | |
- name: Cache oxide build | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./oxide/target/ | |
./oxide/crates/node/*.node | |
./oxide/crates/node/index.js | |
./oxide/crates/node/index.d.ts | |
key: ${{ runner.os }}-oxide-${{ hashFiles('./oxide/crates/**/*') }} | |
- name: Install dependencies | |
run: npm install | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: ${{ env.OXIDE_LOCATION }} | |
- run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > ~/.npmrc | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Move artifacts | |
run: | | |
cd ${{ env.OXIDE_LOCATION }} | |
cp bindings-aarch64-apple-darwin/oxide/crates/node/* ./npm/darwin-arm64/ | |
cp bindings-aarch64-unknown-linux-gnu/oxide/crates/node/* ./npm/linux-arm64-gnu/ | |
cp bindings-aarch64-unknown-linux-musl/oxide/crates/node/* ./npm/linux-arm64-musl/ | |
cp bindings-armv7-unknown-linux-gnueabihf/oxide/crates/node/* ./npm/linux-arm-gnueabihf/ | |
cp bindings-x86_64-apple-darwin/* ./npm/darwin-x64/ | |
cp bindings-x86_64-pc-windows-msvc/* ./npm/win32-x64-msvc/ | |
cp bindings-x86_64-unknown-linux-gnu/oxide/crates/node/* ./npm/linux-x64-gnu/ | |
cp bindings-x86_64-unknown-linux-musl/oxide/crates/node/* ./npm/linux-x64-musl/ | |
- name: Resolve version | |
id: vars | |
run: | | |
echo "NPM_VERSION=0.0.0-${{ env.RELEASE_CHANNEL }}.$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
- name: Generate entry point | |
run: npm run build --prefix ${{ env.OXIDE_LOCATION }} | |
- name: Publish to npm | |
run: | | |
for pkg in ${{ env.OXIDE_LOCATION }}/npm/*; do | |
echo "Publishing $pkg..." | |
cd $pkg | |
npm version ${{ env.NPM_VERSION }} --force --no-git-tag-version | |
npm publish --tag ${{ env.RELEASE_CHANNEL }} --access public | |
cd - | |
done | |
echo "Publishing ${{ env.APP_NAME }}..."; | |
cd ${{ env.OXIDE_LOCATION }} | |
npm version ${{ env.NPM_VERSION }} --force --no-git-tag-version | |
sed "s#\"0.0.0\"#\"${{ env.NPM_VERSION }}\"#g" package.json > package_updated.json | |
mv package_updated.json package.json | |
npm publish --tag ${{ env.RELEASE_CHANNEL }} --access public | |
cd - | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
tailwind-release: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
name: Build and release Tailwind CSS | |
needs: | |
- release | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
registry-url: 'https://registry.npmjs.org' | |
- name: Resolve version | |
id: vars | |
run: | | |
echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
echo "OXIDE_NPM_VERSION=0.0.0-${{ env.RELEASE_CHANNEL }}.$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
- name: Setup `@tailwindcss/oxide` version | |
run: | | |
sed "s#\"@tailwindcss/oxide\": \".*\"#\"@tailwindcss/oxide\": \"${{ env.OXIDE_NPM_VERSION }}\"#" package.json > package_updated.json | |
mv package_updated.json package.json | |
- name: Install dependencies | |
run: npm install | |
- name: Build Tailwind CSS | |
run: npm run build | |
- name: Test | |
run: | | |
npm test || \ | |
npm test || \ | |
npm test || exit 1 | |
- name: 'Version based on commit: 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }}' | |
run: npm version 0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }} --force --no-git-tag-version | |
- name: Publish | |
run: npm publish --tag ${{ env.RELEASE_CHANNEL }} | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
# !! Enable this, once we are cleaning up all the `stable` engine related files. | |
# | |
# - name: Trigger Tailwind Play update | |
# uses: actions/github-script@v6 | |
# with: | |
# github-token: ${{ secrets.TAILWIND_PLAY_TOKEN }} | |
# script: | | |
# await github.rest.actions.createWorkflowDispatch({ | |
# owner: 'tailwindlabs', | |
# repo: 'play.tailwindcss.com', | |
# ref: 'master', | |
# workflow_id: 'upgrade-tailwindcss.yml', | |
# inputs: { | |
# insidersVersion: '0.0.0-${{ env.RELEASE_CHANNEL }}.${{ env.SHA_SHORT }}' | |
# } | |
# }) |