Skip to content

Commit

Permalink
Next swc publish flow (redo) (#27984)
Browse files Browse the repository at this point in the history
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
  • Loading branch information
padmaia and kodiakhq[bot] committed Aug 12, 2021
1 parent 40f85f6 commit b2c7b31
Show file tree
Hide file tree
Showing 15 changed files with 279 additions and 103 deletions.
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"
}
}
3 changes: 3 additions & 0 deletions packages/next/build/swc/npm/next-swc-linux-x64-gnu/README.md
@@ -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"
}
}
3 changes: 3 additions & 0 deletions packages/next/build/swc/npm/next-swc-win32-x64-msvc/README.md
@@ -0,0 +1,3 @@
# `next-swc-win32-x64-msvc`

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

0 comments on commit b2c7b31

Please sign in to comment.