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

Next swc publish flow (redo) #27984

Merged
merged 6 commits into from Aug 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
126 changes: 27 additions & 99 deletions .github/workflows/build_native.yml
@@ -1,154 +1,82 @@
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize]
paths:
- 'packages/next/build/swc/**'
on: workflow_dispatch

name: Build next-swc native binaries

jobs:
build:
build-native:
strategy:
matrix:
os: [ubuntu-18.04, macos-latest, windows-latest]

name: stable - ${{ matrix.os }} - node@14
description: [default]
include:
- os: ubuntu-18.04
target: x86_64-unknown-linux-gnu
- os: windows-latest
target: x86_64-pc-windows-msvc
- os: macos-latest
target: x86_64-apple-darwin
- os: macos-latest
target: aarch64-apple-darwin
description: m1

name: next-swc - ${{ matrix.os }} - ${{ matrix.target }} - node@14
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v2

- name: Setup node
uses: actions/setup-node@v2
with:
node-version: 14
check-latest: true

- name: Install
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal

toolchain: nightly-2021-03-25
target: ${{ matrix.target }}
- name: Cache cargo registry
uses: actions/cache@v1
with:
path: ~/.cargo/registry
key: stable-${{ matrix.os }}-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}

- name: Cache cargo index
uses: actions/cache@v1
with:
path: ~/.cargo/git
key: stable-${{ matrix.os }}-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}

- name: Cache NPM dependencies
uses: actions/cache@v1
- name: Cache native binary
id: binary-cache
uses: actions/cache@v2
with:
path: node_modules
key: npm-cache-${{ matrix.os }}-node@14-${{ hashFiles('yarn.lock') }}

- name: 'Install dependencies'
run: yarn install --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000

path: packages/next/native/**
key: next-swc-nightly-2021-03-25-${{ matrix.target }}-${{ hashFiles('packages/next/build/swc/**') }}
- name: 'Build'
run: yarn --cwd packages/next build-native
if: steps.binary-cache.outputs.cache-hit != true
run: yarn build-native --target ${{ matrix.target }}
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'

- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: next-swc-binaries
path: packages/next/native

- name: Clear the cargo caches
run: |
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache

build-apple-silicon:
name: stable - aarch64-apple-darwin - node@14
runs-on: macos-latest

steps:
- uses: actions/checkout@v2

- name: Setup node
uses: actions/setup-node@v2
with:
node-version: 14

- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
override: true
toolchain: nightly-2021-03-25
target: aarch64-apple-darwin

- name: Install dependencies
run: yarn install --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000

- name: Cross build aarch64
run: yarn --cwd packages/next build-native --target aarch64-apple-darwin

working-directory: packages/next
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: next-swc-binaries
path: packages/next/native

path: packages/next/native/next-swc.*.node
- name: Clear the cargo caches
run: |
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache

commit:
needs: [build, build-apple-silicon]
needs: build-native
runs-on: ubuntu-18.04

steps:
- uses: actions/checkout@v2
if: ${{ github.event_name == 'workflow_dispatch' }}
- uses: actions/download-artifact@v2
with:
name: next-swc-binaries
path: packages/next/native
if: ${{ github.event_name == 'workflow_dispatch' }}
- uses: EndBug/add-and-commit@v7
with:
add: 'packages/next/native --force'
message: 'Build next-swc binaries'
if: ${{ github.event_name == 'workflow_dispatch' }}

check:
needs: [build, build-apple-silicon]
runs-on: ubuntu-18.04

steps:
- uses: actions/checkout@v2
if: ${{ github.event_name == 'pull_request' }}
- uses: actions/download-artifact@v2
with:
name: next-swc-binaries
path: packages/next/native
if: ${{ github.event_name == 'pull_request' }}
- run: git diff --exit-code
if: ${{ github.event_name == 'pull_request' }}

test:
runs-on: ubuntu-18.04

steps:
- uses: actions/checkout@v2
if: ${{ github.event_name == 'pull_request' }}
- name: Install
if: ${{ github.event_name == 'pull_request' }}
uses: actions-rs/toolchain@v1
with:
toolchain: nightly-2021-03-25
profile: minimal
- run: cd packages/next/build/swc && cargo test
if: ${{ github.event_name == 'pull_request' }}
97 changes: 94 additions & 3 deletions .github/workflows/build_test_deploy.yml
@@ -1,6 +1,7 @@
on:
push:
branches: [canary]
tags: [v*]
pull_request:
types: [opened, synchronize]

Expand Down Expand Up @@ -46,7 +47,7 @@ jobs:
checkPrecompiled:
name: Check Pre-compiled
runs-on: ubuntu-latest
needs: build
needs: [build, build-native]
env:
NEXT_TELEMETRY_DISABLED: 1
steps:
Expand All @@ -56,6 +57,14 @@ jobs:
with:
path: ./*
key: ${{ github.sha }}
- uses: actions/download-artifact@v2
with:
name: next-swc-binaries
path: packages/next/build/swc/dist
# Only check linux build for now, mac builds can sometimes be different even with the same code
- run: |
mv ./packages/next/build/swc/dist/next-swc.linux-x64-gnu.node \
./packages/next/native/next-swc.linux-x64-gnu.node
- run: ./scripts/check-pre-compiled.sh
if: ${{needs.build.outputs.docsChange != 'docs only change'}}

Expand Down Expand Up @@ -240,9 +249,10 @@ jobs:
if: ${{needs.build.outputs.docsChange != 'docs only change'}}

publishRelease:
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
name: Potentially publish release
runs-on: ubuntu-latest
needs: build
needs: [build, build-native]
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
Expand All @@ -251,7 +261,11 @@ jobs:
with:
path: ./*
key: ${{ github.sha }}

- uses: actions/download-artifact@v2
with:
name: next-swc-binaries
path: packages/next/build/swc/dist
- run: ./scripts/publish-native.js $GITHUB_REF
- run: ./scripts/publish-release.sh

releaseStats:
Expand All @@ -268,3 +282,80 @@ jobs:
- uses: ./.github/actions/next-stats-action
env:
PR_STATS_COMMENT_TOKEN: ${{ secrets.PR_STATS_COMMENT_TOKEN }}

build-native:
strategy:
matrix:
os: [ubuntu-18.04, macos-latest, windows-latest]
description: [default]
include:
- os: ubuntu-18.04
target: x86_64-unknown-linux-gnu
- os: windows-latest
target: x86_64-pc-windows-msvc
- os: macos-latest
target: x86_64-apple-darwin
- os: macos-latest
target: aarch64-apple-darwin
description: m1

name: next-swc - ${{ matrix.os }} - ${{ matrix.target }} - node@14
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: 14
check-latest: true
- name: Install
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly-2021-03-25
target: ${{ matrix.target }}
- name: Cache cargo registry
uses: actions/cache@v1
with:
path: ~/.cargo/registry
key: stable-${{ matrix.os }}-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v1
with:
path: ~/.cargo/git
key: stable-${{ matrix.os }}-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
- name: Cache native binary
id: binary-cache
uses: actions/cache@v2
with:
path: packages/next/native/next-swc.*.node
key: next-swc-nightly-2021-03-25-${{ matrix.target }}-${{ hashFiles('packages/next/build/swc/**') }}
- name: 'Build'
if: steps.binary-cache.outputs.cache-hit != 'true'
run: yarn build-native --target ${{ matrix.target }}
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
working-directory: packages/next
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: next-swc-binaries
path: packages/next/native/next-swc.*.node
- name: Clear the cargo caches
run: |
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
test-native:
name: Unit Test Native Code
runs-on: ubuntu-18.04

steps:
- uses: actions/checkout@v2
- name: Install
uses: actions-rs/toolchain@v1
with:
toolchain: nightly-2021-03-25
profile: minimal
- run: cd packages/next/build/swc && cargo test
1 change: 1 addition & 0 deletions packages/next/build/swc/npm/.gitignore
@@ -0,0 +1 @@
next-swc.*.node
3 changes: 3 additions & 0 deletions packages/next/build/swc/npm/next-swc-darwin-arm64/README.md
@@ -0,0 +1,3 @@
# `next-swc-darwin-arm64`

This is the **aarch64-apple-darwin** binary for `next-swc`
18 changes: 18 additions & 0 deletions packages/next/build/swc/npm/next-swc-darwin-arm64/package.json
@@ -0,0 +1,18 @@
{
"name": "next-swc-darwin-arm64",
"version": "0.0.0",
"os": [
"darwin"
],
"cpu": [
"arm64"
],
"main": "next-swc.darwin-arm64.node",
"files": [
"next-swc.darwin-arm64.node"
],
"license": "MIT",
"engines": {
"node": ">= 10"
}
}
3 changes: 3 additions & 0 deletions packages/next/build/swc/npm/next-swc-darwin-x64/README.md
@@ -0,0 +1,3 @@
# `next-swc-darwin-x64`

This is the **x86_64-apple-darwin** binary for `next-swc`
18 changes: 18 additions & 0 deletions packages/next/build/swc/npm/next-swc-darwin-x64/package.json
@@ -0,0 +1,18 @@
{
"name": "next-swc-darwin-x64",
"version": "0.0.0",
"os": [
"darwin"
],
"cpu": [
"x64"
],
"main": "next-swc.darwin-x64.node",
"files": [
"next-swc.darwin-x64.node"
],
"license": "MIT",
"engines": {
"node": ">= 10"
}
}
@@ -0,0 +1,3 @@
# `next-swc-linux-x64-gnu`

This is the **x86_64-unknown-linux-gnu** binary for `next-swc`
18 changes: 18 additions & 0 deletions packages/next/build/swc/npm/next-swc-linux-x64-gnu/package.json
@@ -0,0 +1,18 @@
{
"name": "next-swc-linux-x64-gnu",
"version": "0.0.0",
"os": [
"linux"
],
"cpu": [
"x64"
],
"main": "next-swc.linux-x64-gnu.node",
"files": [
"next-swc.linux-x64-gnu.node"
],
"license": "MIT",
"engines": {
"node": ">= 10"
}
}
@@ -0,0 +1,3 @@
# `next-swc-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `next-swc`