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

Add turbo / improve Rust build caching in GitHub Actions #31464

Merged
merged 42 commits into from Dec 16, 2021
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
67f209d
Improve rust ci caching
jaredpalmer Nov 15, 2021
94103a8
Add pipeline
jaredpalmer Nov 15, 2021
1f14c22
Merge branch 'canary' into jp/rust-caching
jaredpalmer Nov 15, 2021
13c89d6
Merge branch 'canary' into jp/rust-caching
jaredpalmer Nov 15, 2021
cc6c849
Keep local caching
jaredpalmer Nov 15, 2021
a19e63a
Pin version
jaredpalmer Nov 15, 2021
a2f843d
Pin version again
jaredpalmer Nov 15, 2021
c004572
Don't cache target/**
jaredpalmer Nov 16, 2021
8379cde
Put back target caching
jaredpalmer Nov 16, 2021
d3aedcc
Put back native binary cache
jaredpalmer Nov 16, 2021
eaab43b
Update .github/workflows/build_test_deploy.yml
jaredpalmer Nov 16, 2021
303867c
Merge branch 'canary' into jp/rust-caching
jaredpalmer Nov 16, 2021
f0aba54
Merge branch 'canary' into jp/rust-caching
jaredpalmer Nov 19, 2021
27e9a9f
Merge branch 'canary' into jp/rust-caching
jaredpalmer Nov 19, 2021
6400f47
Merge branch 'canary' into jp/rust-caching
jaredpalmer Nov 19, 2021
a1f6c55
Merge remote-tracking branch 'upstream/canary' into jp/rust-caching
padmaia Nov 23, 2021
e4bc43d
Merge branch 'canary' into jp/rust-caching
timneutkens Nov 26, 2021
ef05766
Merge branch 'canary' into jp/rust-caching
timneutkens Dec 9, 2021
7637298
Merge branch 'canary' into jp/rust-caching
ijjk Dec 9, 2021
cf3d445
Use --cacheFolder turbo option
padmaia Dec 14, 2021
7beedc5
Use cache action to cache turbo cache
padmaia Dec 14, 2021
cac518b
Update turbo
padmaia Dec 14, 2021
ee5023d
Try putting flag at end of command
padmaia Dec 14, 2021
8fa383d
Use --cache-dir=
padmaia Dec 14, 2021
6dec2ba
Use --cache-dir= in all jobs
padmaia Dec 15, 2021
79d4401
Add @next/swc as devDep for turbo caching
padmaia Dec 15, 2021
7680fe3
Add turbo run build-wasm
padmaia Dec 15, 2021
f18b526
Merge remote-tracking branch 'upstream/canary' into jp/rust-caching
padmaia Dec 15, 2021
c678d7f
Undo accidental format
padmaia Dec 15, 2021
3e9cdca
Undo accidental format
padmaia Dec 15, 2021
d5ecfda
Update yarn.lock
padmaia Dec 15, 2021
d832f3a
Add week to turbo cache key
padmaia Dec 15, 2021
433460e
Merge remote-tracking branch 'upstream/canary' into jp/rust-caching
padmaia Dec 15, 2021
154b9f9
Fix PR stats
padmaia Dec 15, 2021
1571c90
More fixes
padmaia Dec 15, 2021
cd783e6
Don't run turbo with yarn
padmaia Dec 15, 2021
5410010
Remove turbo caching of wasm build for now
padmaia Dec 16, 2021
09b8a03
Merge remote-tracking branch 'upstream/canary' into jp/rust-caching
padmaia Dec 16, 2021
2ce41fa
Merge branch 'canary' into jp/rust-caching
ijjk Dec 16, 2021
e3e9768
Update turbo
padmaia Dec 16, 2021
95d063b
Merge branch 'canary' into jp/rust-caching
ijjk Dec 16, 2021
7d0e324
Merge branch 'canary' into jp/rust-caching
kodiakhq[bot] Dec 16, 2021
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
92 changes: 46 additions & 46 deletions .github/workflows/build_test_deploy.yml
Expand Up @@ -578,42 +578,19 @@ jobs:
path: ~/.cargo/git
key: stable-ubuntu-18.04-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}

- name: Cache native binary
id: binary-cache
uses: actions/cache@v2
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
with:
path: packages/next/native/next-swc.linux-x64-gnu.node
key: dev-next-swc-nightly-2021-08-12-linux-x64-gnu-${{ hashFiles('.github/workflows/build_test_deploy.yml', 'packages/next/build/swc/**') }}
jaredpalmer marked this conversation as resolved.
Show resolved Hide resolved

# We use restore-key to pick latest cache.
# We will not get exact match, but doc says
# "If there are multiple partial matches for a restore key, the action returns the most recently created cache."
# So we get latest cache
- name: Cache built files
uses: actions/cache@v2
with:
path: ./packages/next/build/swc/target
key: next-swc-cargo-cache-ubuntu-18.04--${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
next-swc-cargo-cache-ubuntu-18.04

# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1
- run: npm i -g turbo@next
jaredpalmer marked this conversation as resolved.
Show resolved Hide resolved

- name: Build
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' && steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
run: yarn build-native
run: turbo run build-native
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
working-directory: packages/next

- name: Upload artifact
uses: actions/upload-artifact@v2.2.4
with:
name: next-swc-dev-binary
path: packages/next/native/next-swc.linux-x64-gnu.node
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Clear the cargo caches
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
Expand Down Expand Up @@ -740,10 +717,12 @@ jobs:

- name: 'Build'
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' }}
run: yarn build-native --release --target ${{ matrix.target }}
run: turbo run build-native -- --release --target ${{ matrix.target }}
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
working-directory: packages/next
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2.2.4
Expand Down Expand Up @@ -785,7 +764,7 @@ jobs:
# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1

- run: npm i -g turbo@next
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
Expand All @@ -804,8 +783,11 @@ jobs:
- name: Build
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' }}
shell: bash
run: yarn build-native --release --target i686-pc-windows-msvc
working-directory: packages/next
run: turbo run build-native -- --release --target i686-pc-windows-msvc
env:
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2
Expand All @@ -831,7 +813,7 @@ jobs:
# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1

- run: npm i -g turbo@next
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
Expand All @@ -850,8 +832,11 @@ jobs:
- name: Build
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' }}
shell: bash
run: yarn build-native --release --target aarch64-pc-windows-msvc
working-directory: packages/next
run: turbo run build-native -- --release --target aarch64-pc-windows-msvc
env:
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2
Expand Down Expand Up @@ -899,7 +884,7 @@ jobs:
- name: 'Build'
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' }}
run: |
docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd)/packages/next:/build -w /build builder sh -c "npm i -g @napi-rs/cli@1.2.1 && yarn build-native --release --target x86_64-unknown-linux-musl"
docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd)/packages/next:/build -w /build builder sh -c "npm i -g @napi-rs/cli@1.2.1 && npm i -g turbo@next && turbo run build-native -- --release --target x86_64-unknown-linux-musl"

- name: Upload artifact
uses: actions/upload-artifact@v2
Expand Down Expand Up @@ -927,6 +912,7 @@ jobs:
# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1
- run: npm i -g turbo@next

- name: Install Rust
uses: actions-rs/toolchain@v1
Expand Down Expand Up @@ -957,8 +943,11 @@ jobs:

- name: Cross build aarch64
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' }}
run: yarn build-native --release --target aarch64-unknown-linux-gnu
working-directory: packages/next
run: turbo run build-native -- --release --target aarch64-unknown-linux-gnu
env:
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2
Expand All @@ -984,7 +973,7 @@ jobs:
# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1

- run: npm i -g turbo
jaredpalmer marked this conversation as resolved.
Show resolved Hide resolved
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
Expand Down Expand Up @@ -1014,8 +1003,11 @@ jobs:

- name: Cross build aarch64
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' }}
run: yarn build-native --release --target aarch64-unknown-linux-musl
working-directory: packages/next
run: turbo run build-native -- --release --target aarch64-unknown-linux-musl
env:
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2
Expand Down Expand Up @@ -1043,6 +1035,7 @@ jobs:
# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1
- run: npm i -g turbo@next

- name: Install Rust
uses: actions-rs/toolchain@v1
Expand Down Expand Up @@ -1073,8 +1066,11 @@ jobs:

- name: Cross build aarch64
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' }}
run: yarn build-native --release --target armv7-unknown-linux-gnueabihf
working-directory: packages/next
run: turbo run build-native -- --release --target armv7-unknown-linux-gnueabihf
env:
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2
Expand All @@ -1100,6 +1096,7 @@ jobs:
# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1
- run: npm i -g turbo@next

- name: Install Rust
uses: actions-rs/toolchain@v1
Expand All @@ -1121,8 +1118,11 @@ jobs:
shell: bash
run: |
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android24-clang"
yarn build-native --release --target aarch64-linux-android
working-directory: packages/next
turbo run build-native -- --release --target aarch64-linux-android
env:
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/pull_request_stats.yml
Expand Up @@ -71,13 +71,16 @@ jobs:
# since the repo's dependencies aren't installed we need
# to install napi globally
- run: npm i -g @napi-rs/cli@1.2.1
- run: npm i -g turbo@next
jaredpalmer marked this conversation as resolved.
Show resolved Hide resolved

- name: Build
if: ${{ steps.binary-cache.outputs.cache-hit != 'true' && steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
run: yarn build-native
run: turbo run build-native
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
working-directory: packages/next
TURBO_TOKEN: ${{secrets.TURBO_TOKEN}}
TURBO_TEAM: nextjs
TURBO_PROJECT: nextjs

- name: Upload artifact
uses: actions/upload-artifact@v2.2.4
Expand Down
14 changes: 14 additions & 0 deletions package.json
Expand Up @@ -154,6 +154,7 @@
"tailwindcss": "1.1.3",
"taskr": "1.1.0",
"tree-kill": "1.2.2",
"turbo": "0.8.5-next.3",
"typescript": "4.4.3",
"wait-port": "0.2.2",
"web-streams-polyfill": "2.1.1",
Expand All @@ -167,5 +168,18 @@
},
"engines": {
"node": ">=12.22.0"
},
"turbo": {
"pipeline": {
"build-native": {
"dependsOn": [
"^build-native"
],
"outputs": [
"native/*.node",
"build/swc/target/**"
jaredpalmer marked this conversation as resolved.
Show resolved Hide resolved
]
}
}
}
}